001// --------------------------------------------------------------------------------
002// Copyright 2002-2024 Echo Three, LLC
003//
004// Licensed under the Apache License, Version 2.0 (the "License");
005// you may not use this file except in compliance with the License.
006// You may obtain a copy of the License at
007//
008//     http://www.apache.org/licenses/LICENSE-2.0
009//
010// Unless required by applicable law or agreed to in writing, software
011// distributed under the License is distributed on an "AS IS" BASIS,
012// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
013// See the License for the specific language governing permissions and
014// limitations under the License.
015// --------------------------------------------------------------------------------
016
017package com.echothree.model.control.campaign.server.transfer;
018
019import com.echothree.model.control.campaign.common.transfer.CampaignContentTransfer;
020import com.echothree.model.control.campaign.common.transfer.CampaignMediumTransfer;
021import com.echothree.model.control.campaign.common.transfer.CampaignSourceTransfer;
022import com.echothree.model.control.campaign.common.transfer.CampaignTermTransfer;
023import com.echothree.model.control.campaign.common.transfer.CampaignTransfer;
024import com.echothree.model.control.campaign.common.transfer.UserVisitCampaignTransfer;
025import com.echothree.model.control.campaign.server.control.CampaignControl;
026import com.echothree.model.control.user.common.transfer.UserVisitTransfer;
027import com.echothree.model.control.user.server.control.UserControl;
028import com.echothree.model.data.campaign.server.entity.Campaign;
029import com.echothree.model.data.campaign.server.entity.CampaignContent;
030import com.echothree.model.data.campaign.server.entity.CampaignMedium;
031import com.echothree.model.data.campaign.server.entity.CampaignSource;
032import com.echothree.model.data.campaign.server.entity.CampaignTerm;
033import com.echothree.model.data.campaign.server.entity.UserVisitCampaign;
034import com.echothree.model.data.user.server.entity.UserVisit;
035import com.echothree.util.server.persistence.Session;
036
037public class UserVisitCampaignTransferCache
038        extends BaseCampaignTransferCache<UserVisitCampaign, UserVisitCampaignTransfer> {
039
040    UserControl userControl = Session.getModelController(UserControl.class);
041    
042    /** Creates a new instance of UserVisitCampaignTransferCache */
043    public UserVisitCampaignTransferCache(UserVisit userVisit, CampaignControl campaignControl) {
044        super(userVisit, campaignControl);
045    }
046
047    public UserVisitCampaignTransfer getUserVisitCampaignTransfer(UserVisitCampaign userVisitCampaign) {
048        UserVisitCampaignTransfer userVisitCampaignTransfer = get(userVisitCampaign);
049
050        if(userVisitCampaignTransfer == null) {
051            UserVisitTransfer userVisitTransfer = userControl.getUserVisitTransfer(userVisit, userVisit);
052            Integer userVisitCampaignSequence = userVisitCampaign.getUserVisitCampaignSequence();
053            Long unformattedTime = userVisitCampaign.getTime();
054            String time = formatTypicalDateTime(unformattedTime);
055            Campaign campaign = userVisitCampaign.getCampaign();
056            CampaignTransfer campaignTransfer = campaign == null ? null : campaignControl.getCampaignTransfer(userVisit, campaign);
057            CampaignSource campaignSource = userVisitCampaign.getCampaignSource();
058            CampaignSourceTransfer campaignSourceTransfer = campaignSource == null ? null : campaignControl.getCampaignSourceTransfer(userVisit, campaignSource);
059            CampaignMedium campaignMedium = userVisitCampaign.getCampaignMedium();
060            CampaignMediumTransfer campaignMediumTransfer = campaignMedium == null ? null : campaignControl.getCampaignMediumTransfer(userVisit, campaignMedium);
061            CampaignTerm campaignTerm = userVisitCampaign.getCampaignTerm();
062            CampaignTermTransfer campaignTermTransfer = campaignTerm == null ? null : campaignControl.getCampaignTermTransfer(userVisit, campaignTerm);
063            CampaignContent campaignContent = userVisitCampaign.getCampaignContent();
064            CampaignContentTransfer campaignContentTransfer = campaignContent == null ? null : campaignControl.getCampaignContentTransfer(userVisit, campaignContent);
065
066            userVisitCampaignTransfer = new UserVisitCampaignTransfer(userVisitTransfer, userVisitCampaignSequence, unformattedTime, time, campaignTransfer,
067                    campaignSourceTransfer, campaignMediumTransfer, campaignTermTransfer, campaignContentTransfer);
068            put(userVisitCampaign, userVisitCampaignTransfer);
069        }
070
071        return userVisitCampaignTransfer;
072    }
073
074}