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.item.server.transfer; 018 019import com.echothree.model.control.geo.common.transfer.CountryTransfer; 020import com.echothree.model.control.geo.server.control.GeoControl; 021import com.echothree.model.control.item.common.ItemOptions; 022import com.echothree.model.control.item.common.transfer.HarmonizedTariffScheduleCodeTransfer; 023import com.echothree.model.control.item.common.transfer.HarmonizedTariffScheduleCodeUnitTransfer; 024import com.echothree.model.control.item.common.transfer.HarmonizedTariffScheduleCodeUseTransfer; 025import com.echothree.model.control.item.server.control.ItemControl; 026import com.echothree.model.data.item.server.entity.HarmonizedTariffScheduleCode; 027import com.echothree.model.data.item.server.entity.HarmonizedTariffScheduleCodeDetail; 028import com.echothree.model.data.item.server.entity.HarmonizedTariffScheduleCodeTranslation; 029import com.echothree.model.data.item.server.entity.HarmonizedTariffScheduleCodeUnit; 030import com.echothree.model.data.user.server.entity.UserVisit; 031import com.echothree.util.common.transfer.MapWrapper; 032import com.echothree.util.server.persistence.Session; 033import java.util.List; 034import java.util.Set; 035 036public class HarmonizedTariffScheduleCodeTransferCache 037 extends BaseItemTransferCache<HarmonizedTariffScheduleCode, HarmonizedTariffScheduleCodeTransfer> { 038 039 GeoControl geoControl = Session.getModelController(GeoControl.class); 040 041 boolean includeHarmonizedTariffScheduleCodeUses; 042 043 /** Creates a new instance of HarmonizedTariffScheduleCodeTransferCache */ 044 public HarmonizedTariffScheduleCodeTransferCache(UserVisit userVisit, ItemControl itemControl) { 045 super(userVisit, itemControl); 046 047 var options = session.getOptions(); 048 if(options != null) { 049 includeHarmonizedTariffScheduleCodeUses = options.contains(ItemOptions.HarmonizedTariffScheduleCodeIncludeHarmonizedTariffScheduleCodeUses); 050 } 051 052 setIncludeEntityInstance(true); 053 } 054 055 @Override 056 public HarmonizedTariffScheduleCodeTransfer getTransfer(HarmonizedTariffScheduleCode harmonizedTariffScheduleCode) { 057 HarmonizedTariffScheduleCodeTransfer harmonizedTariffScheduleCodeTransfer = get(harmonizedTariffScheduleCode); 058 059 if(harmonizedTariffScheduleCodeTransfer == null) { 060 HarmonizedTariffScheduleCodeDetail harmonizedTariffScheduleCodeDetail = harmonizedTariffScheduleCode.getLastDetail(); 061 CountryTransfer countryTransfer = geoControl.getCountryTransfer(userVisit, harmonizedTariffScheduleCodeDetail.getCountryGeoCode()); 062 String harmonizedTariffScheduleCodeName = harmonizedTariffScheduleCodeDetail.getHarmonizedTariffScheduleCodeName(); 063 HarmonizedTariffScheduleCodeUnit firstHarmonizedTariffScheduleCodeUnit = harmonizedTariffScheduleCodeDetail.getFirstHarmonizedTariffScheduleCodeUnit(); 064 HarmonizedTariffScheduleCodeUnitTransfer firstHarmonizedTariffScheduleCodeUnitTransfer = firstHarmonizedTariffScheduleCodeUnit == null ? null : itemControl.getHarmonizedTariffScheduleCodeUnitTransfer(userVisit, firstHarmonizedTariffScheduleCodeUnit); 065 HarmonizedTariffScheduleCodeUnit secondHarmonizedTariffScheduleCodeUnit = harmonizedTariffScheduleCodeDetail.getSecondHarmonizedTariffScheduleCodeUnit(); 066 HarmonizedTariffScheduleCodeUnitTransfer secondHarmonizedTariffScheduleCodeUnitTransfer = secondHarmonizedTariffScheduleCodeUnit == null ? null : itemControl.getHarmonizedTariffScheduleCodeUnitTransfer(userVisit, secondHarmonizedTariffScheduleCodeUnit); 067 Boolean isDefault = harmonizedTariffScheduleCodeDetail.getIsDefault(); 068 Integer sortOrder = harmonizedTariffScheduleCodeDetail.getSortOrder(); 069 HarmonizedTariffScheduleCodeTranslation harmonizedTariffScheduleCodeTranslation = itemControl.getBestHarmonizedTariffScheduleCodeTranslation(harmonizedTariffScheduleCode, getLanguage()); 070 String description = harmonizedTariffScheduleCodeTranslation == null ? harmonizedTariffScheduleCodeName : harmonizedTariffScheduleCodeTranslation.getDescription(); 071 072 harmonizedTariffScheduleCodeTransfer = new HarmonizedTariffScheduleCodeTransfer(countryTransfer, harmonizedTariffScheduleCodeName, 073 firstHarmonizedTariffScheduleCodeUnitTransfer, secondHarmonizedTariffScheduleCodeUnitTransfer, isDefault, sortOrder, description); 074 put(harmonizedTariffScheduleCode, harmonizedTariffScheduleCodeTransfer); 075 076 if(includeHarmonizedTariffScheduleCodeUses) { 077 List<HarmonizedTariffScheduleCodeUseTransfer> harmonizedTariffScheduleCodeUseTransfers = itemControl.getHarmonizedTariffScheduleCodeUseTransfersByHarmonizedTariffScheduleCode(userVisit, harmonizedTariffScheduleCode); 078 MapWrapper<HarmonizedTariffScheduleCodeUseTransfer> harmonizedTariffScheduleCodeUses = new MapWrapper<>(); 079 080 harmonizedTariffScheduleCodeUseTransfers.forEach((harmonizedTariffScheduleCodeUseTransfer) -> { 081 harmonizedTariffScheduleCodeUses.put(harmonizedTariffScheduleCodeUseTransfer.getHarmonizedTariffScheduleCodeUseType().getHarmonizedTariffScheduleCodeUseTypeName(), harmonizedTariffScheduleCodeUseTransfer); 082 }); 083 084 harmonizedTariffScheduleCodeTransfer.setHarmonizedTariffScheduleCodeUses(harmonizedTariffScheduleCodeUses); 085 } 086 } 087 088 return harmonizedTariffScheduleCodeTransfer; 089 } 090 091}