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.core.server.transfer; 018 019import com.echothree.model.control.core.common.CoreOptions; 020import com.echothree.model.control.core.common.transfer.EntityVisitTransfer; 021import com.echothree.model.control.core.server.control.CoreControl; 022import com.echothree.model.data.core.server.entity.EntityVisit; 023import com.echothree.model.data.user.server.entity.UserVisit; 024import com.echothree.util.server.persistence.Session; 025 026public class EntityVisitTransferCache 027 extends BaseCoreTransferCache<EntityVisit, EntityVisitTransfer> { 028 029 CoreControl coreControl = Session.getModelController(CoreControl.class); 030 boolean includeEntityInstance; 031 boolean includeVisitedEntityInstance; 032 boolean includeVisitedTime; 033 034 /** Creates a new instance of EntityVisitTransferCache */ 035 public EntityVisitTransferCache(UserVisit userVisit) { 036 super(userVisit); 037 038 var options = session.getOptions(); 039 if(options != null) { 040 includeEntityInstance = options.contains(CoreOptions.EntityVisitIncludeEntityInstance); 041 includeVisitedEntityInstance = options.contains(CoreOptions.EntityVisitIncludeVisitedEntityInstance); 042 includeVisitedTime = options.contains(CoreOptions.EntityVisitIncludeVisitedTime); 043 } 044 } 045 046 public EntityVisitTransfer getEntityVisitTransfer(EntityVisit entityVisit) { 047 EntityVisitTransfer entityVisitTransfer = get(entityVisit); 048 049 if(entityVisitTransfer == null) { 050 Long unformattedVisitedTime = entityVisit.getVisitedTime(); 051 052 entityVisitTransfer = new EntityVisitTransfer(unformattedVisitedTime); 053 put(entityVisit, entityVisitTransfer); 054 055 if(includeEntityInstance) { 056 entityVisitTransfer.setEntityInstance(coreControl.getEntityInstanceTransfer(userVisit, entityVisit.getEntityInstance(), false, false, false, false, false, false)); 057 } 058 059 if(includeVisitedEntityInstance) { 060 entityVisitTransfer.setVisitedEntityInstance(coreControl.getEntityInstanceTransfer(userVisit, entityVisit.getVisitedEntityInstance(), false, false, false, false, false, false)); 061 } 062 063 if(includeVisitedTime) { 064 entityVisitTransfer.setVisitedTime(formatTypicalDateTime(unformattedVisitedTime)); 065 } 066 } 067 068 return entityVisitTransfer; 069 } 070 071}