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.inventory.server.transfer; 018 019import com.echothree.model.control.inventory.common.InventoryOptions; 020import com.echothree.model.control.inventory.common.transfer.LotAliasTransfer; 021import com.echothree.model.control.inventory.common.transfer.LotTimeTransfer; 022import com.echothree.model.control.inventory.common.transfer.LotTransfer; 023import com.echothree.model.control.inventory.server.control.LotAliasControl; 024import com.echothree.model.control.inventory.server.control.LotTimeControl; 025import com.echothree.model.control.item.server.control.ItemControl; 026import com.echothree.model.data.inventory.server.entity.Lot; 027import com.echothree.model.data.user.server.entity.UserVisit; 028import com.echothree.util.common.transfer.MapWrapper; 029import com.echothree.util.server.persistence.Session; 030import javax.enterprise.context.RequestScoped; 031 032@RequestScoped 033public class LotTransferCache 034 extends BaseInventoryTransferCache<Lot, LotTransfer> { 035 036 ItemControl itemControl = Session.getModelController(ItemControl.class); 037 LotAliasControl lotAliasControl = Session.getModelController(LotAliasControl.class); 038 LotTimeControl lotTimeControl = Session.getModelController(LotTimeControl.class); 039 040 boolean includeLotAliases; 041 boolean includeLotTimes; 042 043 /** Creates a new instance of LotTransferCache */ 044 protected LotTransferCache() { 045 super(); 046 047 var options = session.getOptions(); 048 if(options != null) { 049 setIncludeUuid(options.contains(InventoryOptions.LotIncludeUuid)); 050 includeLotAliases = options.contains(InventoryOptions.LotIncludeLotAliases); 051 includeLotTimes = options.contains(InventoryOptions.LotIncludeLotTimes); 052 } 053 054 setIncludeEntityInstance(true); 055 } 056 057 @Override 058 public LotTransfer getTransfer(UserVisit userVisit, Lot lot) { 059 var lotTransfer = get(lot); 060 061 if(lotTransfer == null) { 062 var lotDetail = lot.getLastDetail(); 063 064 var item = itemControl.getItemTransfer(userVisit, lotDetail.getItem()); 065 var lotIdentifier = lotDetail.getLotIdentifier(); 066 067 lotTransfer = new LotTransfer(item, lotIdentifier); 068 put(userVisit, lot, lotTransfer); 069 070 if(includeLotAliases) { 071 var lotAliasTransfers = lotAliasControl.getLotAliasTransfersByLot(userVisit, lot); 072 var lotAliases = new MapWrapper<LotAliasTransfer>(lotAliasTransfers.size()); 073 074 lotAliasTransfers.forEach((lotAliasTransfer) -> { 075 lotAliases.put(lotAliasTransfer.getLotAliasType().getLotAliasTypeName(), lotAliasTransfer); 076 }); 077 078 lotTransfer.setLotAliases(lotAliases); 079 } 080 081 if(includeLotTimes) { 082 var lotTimeTransfers = lotTimeControl.getLotTimeTransfersByLot(userVisit, lot); 083 var lotTimes = new MapWrapper<LotTimeTransfer>(lotTimeTransfers.size()); 084 085 lotTimeTransfers.forEach((lotTimeTransfer) -> { 086 lotTimes.put(lotTimeTransfer.getLotTimeType().getLotTimeTypeName(), lotTimeTransfer); 087 }); 088 089 lotTransfer.setLotTimes(lotTimes); 090 } 091 } 092 093 return lotTransfer; 094 } 095 096}