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