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.uom.server.transfer; 018 019import com.echothree.model.control.uom.common.UomProperties; 020import com.echothree.model.control.uom.common.transfer.UnitOfMeasureKindTransfer; 021import com.echothree.model.control.uom.server.control.UomControl; 022import com.echothree.model.data.uom.server.entity.UnitOfMeasureKind; 023import com.echothree.model.data.uom.server.entity.UnitOfMeasureKindDetail; 024import com.echothree.model.data.user.server.entity.UserVisit; 025import com.echothree.util.common.form.TransferProperties; 026import java.util.Set; 027 028public class UnitOfMeasureKindTransferCache 029 extends BaseUomTransferCache<UnitOfMeasureKind, UnitOfMeasureKindTransfer> { 030 031 TransferProperties transferProperties; 032 boolean filterUnitOfMeasureKindName; 033 boolean filterIsDefault; 034 boolean filterFractionDigits; 035 boolean filterSortOrder; 036 boolean filterDescription; 037 boolean filterEntityInstance; 038 039 /** Creates a new instance of UnitOfMeasureKindTransferCache */ 040 public UnitOfMeasureKindTransferCache(UserVisit userVisit, UomControl uomControl) { 041 super(userVisit, uomControl); 042 043 transferProperties = session.getTransferProperties(); 044 if(transferProperties != null) { 045 var properties = transferProperties.getProperties(UnitOfMeasureKindTransfer.class); 046 047 if(properties != null) { 048 filterUnitOfMeasureKindName = !properties.contains(UomProperties.UNIT_OF_MEASURE_KIND_NAME); 049 filterIsDefault = !properties.contains(UomProperties.IS_DEFAULT); 050 filterFractionDigits = !properties.contains(UomProperties.FRACTION_DIGITS); 051 filterSortOrder = !properties.contains(UomProperties.SORT_ORDER); 052 filterDescription = !properties.contains(UomProperties.DESCRIPTION); 053 filterEntityInstance = !properties.contains(UomProperties.ENTITY_INSTANCE); 054 } 055 } 056 057 setIncludeEntityInstance(!filterEntityInstance); 058 } 059 060 public UnitOfMeasureKindTransfer getUnitOfMeasureKindTransfer(UnitOfMeasureKind unitOfMeasureKind) { 061 UnitOfMeasureKindTransfer unitOfMeasureKindTransfer = get(unitOfMeasureKind); 062 063 if(unitOfMeasureKindTransfer == null) { 064 UnitOfMeasureKindDetail unitOfMeasureKindDetail = unitOfMeasureKind.getLastDetail(); 065 String unitOfMeasureKindName = filterUnitOfMeasureKindName ? null : unitOfMeasureKindDetail.getUnitOfMeasureKindName(); 066 Integer fractionDigits = filterFractionDigits ? null : unitOfMeasureKindDetail.getFractionDigits(); 067 Boolean isDefault = filterIsDefault ? null : unitOfMeasureKindDetail.getIsDefault(); 068 Integer sortOrder = filterSortOrder ? null : unitOfMeasureKindDetail.getSortOrder(); 069 String description = filterDescription ? null : uomControl.getBestUnitOfMeasureKindDescription(unitOfMeasureKind, getLanguage()); 070 071 unitOfMeasureKindTransfer = new UnitOfMeasureKindTransfer(unitOfMeasureKindName, fractionDigits, isDefault, sortOrder, description); 072 put(unitOfMeasureKind, unitOfMeasureKindTransfer); 073 } 074 return unitOfMeasureKindTransfer; 075 } 076 077}