001// -------------------------------------------------------------------------------- 002// Copyright 2002-2025 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.EntityInstanceControl; 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; 025import javax.enterprise.context.RequestScoped; 026 027@RequestScoped 028public class EntityVisitTransferCache 029 extends BaseCoreTransferCache<EntityVisit, EntityVisitTransfer> { 030 031 EntityInstanceControl entityInstanceControl = Session.getModelController(EntityInstanceControl.class); 032 033 boolean includeEntityInstance; 034 boolean includeVisitedEntityInstance; 035 boolean includeVisitedTime; 036 037 /** Creates a new instance of EntityVisitTransferCache */ 038 protected EntityVisitTransferCache() { 039 super(); 040 041 var options = session.getOptions(); 042 if(options != null) { 043 includeEntityInstance = options.contains(CoreOptions.EntityVisitIncludeEntityInstance); 044 includeVisitedEntityInstance = options.contains(CoreOptions.EntityVisitIncludeVisitedEntityInstance); 045 includeVisitedTime = options.contains(CoreOptions.EntityVisitIncludeVisitedTime); 046 } 047 } 048 049 public EntityVisitTransfer getEntityVisitTransfer(UserVisit userVisit, EntityVisit entityVisit) { 050 var entityVisitTransfer = get(entityVisit); 051 052 if(entityVisitTransfer == null) { 053 var unformattedVisitedTime = entityVisit.getVisitedTime(); 054 055 entityVisitTransfer = new EntityVisitTransfer(unformattedVisitedTime); 056 put(userVisit, entityVisit, entityVisitTransfer); 057 058 if(includeEntityInstance) { 059 entityVisitTransfer.setEntityInstance(entityInstanceControl.getEntityInstanceTransfer(userVisit, entityVisit.getEntityInstance(), false, false, false, false)); 060 } 061 062 if(includeVisitedEntityInstance) { 063 entityVisitTransfer.setVisitedEntityInstance(entityInstanceControl.getEntityInstanceTransfer(userVisit, entityVisit.getVisitedEntityInstance(), false, false, false, false)); 064 } 065 066 if(includeVisitedTime) { 067 entityVisitTransfer.setVisitedTime(formatTypicalDateTime(userVisit, unformattedVisitedTime)); 068 } 069 } 070 071 return entityVisitTransfer; 072 } 073 074}