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.party.server.transfer; 018 019import com.echothree.model.control.party.common.PartyProperties; 020import com.echothree.model.control.party.common.transfer.DateTimeFormatTransfer; 021import com.echothree.model.control.party.server.control.PartyControl; 022import com.echothree.model.data.party.server.entity.DateTimeFormat; 023import com.echothree.model.data.party.server.entity.DateTimeFormatDetail; 024import com.echothree.model.data.user.server.entity.UserVisit; 025import com.echothree.util.common.form.TransferProperties; 026import java.util.Set; 027 028public class DateTimeFormatTransferCache 029 extends BasePartyTransferCache<DateTimeFormat, DateTimeFormatTransfer> { 030 031 TransferProperties transferProperties; 032 boolean filterDateTimeFormatName; 033 boolean filterJavaShortDateFormat; 034 boolean filterJavaAbbrevDateFormat; 035 boolean filterJavaAbbrevDateFormatWeekday; 036 boolean filterJavaLongDateFormat; 037 boolean filterJavaLongDateFormatWeekday; 038 boolean filterJavaTimeFormat; 039 boolean filterJavaTimeFormatSeconds; 040 boolean filterUnixShortDateFormat; 041 boolean filterUnixAbbrevDateFormat; 042 boolean filterUnixAbbrevDateFormatWeekday; 043 boolean filterUnixLongDateFormat; 044 boolean filterUnixLongDateFormatWeekday; 045 boolean filterUnixTimeFormat; 046 boolean filterUnixTimeFormatSeconds; 047 boolean filterShortDateSeparator; 048 boolean filterTimeSeparator; 049 boolean filterIsDefault; 050 boolean filterSortOrder; 051 boolean filterDescription; 052 boolean filterEntityInstance; 053 054 /** Creates a new instance of DateTimeFormatTransferCache */ 055 public DateTimeFormatTransferCache(UserVisit userVisit, PartyControl partyControl) { 056 super(userVisit, partyControl); 057 058 transferProperties = session.getTransferProperties(); 059 if(transferProperties != null) { 060 var properties = transferProperties.getProperties(DateTimeFormatTransfer.class); 061 062 if(properties != null) { 063 filterDateTimeFormatName = !properties.contains(PartyProperties.DATE_TIME_FORMAT_NAME); 064 filterJavaShortDateFormat = !properties.contains(PartyProperties.JAVA_SHORT_DATE_FORMAT); 065 filterJavaAbbrevDateFormat = !properties.contains(PartyProperties.JAVA_ABBREV_DATE_FORMAT); 066 filterJavaAbbrevDateFormatWeekday = !properties.contains(PartyProperties.JAVA_ABBREV_DATE_FORMAT_WEEKDAY); 067 filterJavaLongDateFormat = !properties.contains(PartyProperties.JAVA_LONG_DATE_FORMAT); 068 filterJavaLongDateFormatWeekday = !properties.contains(PartyProperties.JAVA_LONG_DATE_FORMAT_WEEKDAY); 069 filterJavaTimeFormat = !properties.contains(PartyProperties.JAVA_TIME_FORMAT); 070 filterJavaTimeFormatSeconds = !properties.contains(PartyProperties.JAVA_TIME_FORMAT_SECONDS); 071 filterUnixShortDateFormat = !properties.contains(PartyProperties.UNIX_SHORT_DATE_FORMAT); 072 filterUnixAbbrevDateFormat = !properties.contains(PartyProperties.UNIX_ABBREV_DATE_FORMAT); 073 filterUnixAbbrevDateFormatWeekday = !properties.contains(PartyProperties.UNIX_ABBREV_DATE_FORMAT_WEEKDAY); 074 filterUnixLongDateFormat = !properties.contains(PartyProperties.UNIX_LONG_DATE_FORMAT); 075 filterUnixLongDateFormatWeekday = !properties.contains(PartyProperties.UNIX_LONG_DATE_FORMAT_WEEKDAY); 076 filterUnixTimeFormat = !properties.contains(PartyProperties.UNIX_TIME_FORMAT); 077 filterUnixTimeFormatSeconds = !properties.contains(PartyProperties.UNIX_TIME_FORMAT_SECONDS); 078 filterShortDateSeparator = !properties.contains(PartyProperties.SHORT_DATE_SEPARATOR); 079 filterTimeSeparator = !properties.contains(PartyProperties.TIME_SEPARATOR); 080 filterIsDefault = !properties.contains(PartyProperties.IS_DEFAULT); 081 filterSortOrder = !properties.contains(PartyProperties.SORT_ORDER); 082 filterDescription = !properties.contains(PartyProperties.DESCRIPTION); 083 filterEntityInstance = !properties.contains(PartyProperties.ENTITY_INSTANCE); 084 } 085 } 086 087 setIncludeEntityInstance(!filterEntityInstance); 088 } 089 090 public DateTimeFormatTransfer getDateTimeFormatTransfer(DateTimeFormat dateTimeFormat) { 091 DateTimeFormatTransfer dateTimeFormatTransfer = get(dateTimeFormat); 092 093 if(dateTimeFormatTransfer == null) { 094 DateTimeFormatDetail dateTimeFormatDetail = dateTimeFormat.getLastDetail(); 095 String dateTimeFormatName = filterDateTimeFormatName ? null : dateTimeFormatDetail.getDateTimeFormatName(); 096 String javaShortDateFormat = filterJavaShortDateFormat ? null : dateTimeFormatDetail.getJavaShortDateFormat(); 097 String javaAbbrevDateFormat = filterJavaAbbrevDateFormat ? null : dateTimeFormatDetail.getJavaAbbrevDateFormat(); 098 String javaAbbrevDateFormatWeekday = filterJavaAbbrevDateFormatWeekday ? null : dateTimeFormatDetail.getJavaAbbrevDateFormatWeekday(); 099 String javaLongDateFormat = filterJavaLongDateFormat ? null : dateTimeFormatDetail.getJavaLongDateFormat(); 100 String javaLongDateFormatWeekday = filterJavaLongDateFormatWeekday ? null : dateTimeFormatDetail.getJavaLongDateFormatWeekday(); 101 String javaTimeFormat = filterJavaTimeFormat ? null : dateTimeFormatDetail.getJavaTimeFormat(); 102 String javaTimeFormatSeconds = filterJavaTimeFormatSeconds ? null : dateTimeFormatDetail.getJavaTimeFormatSeconds(); 103 String unixShortDateFormat = filterUnixShortDateFormat ? null : dateTimeFormatDetail.getUnixShortDateFormat(); 104 String unixAbbrevDateFormat = filterUnixAbbrevDateFormat ? null : dateTimeFormatDetail.getUnixAbbrevDateFormat(); 105 String unixAbbrevDateFormatWeekday = filterUnixAbbrevDateFormatWeekday ? null : dateTimeFormatDetail.getUnixAbbrevDateFormatWeekday(); 106 String unixLongDateFormat = filterUnixLongDateFormat ? null : dateTimeFormatDetail.getUnixLongDateFormat(); 107 String unixLongDateFormatWeekday = filterUnixLongDateFormatWeekday ? null : dateTimeFormatDetail.getUnixLongDateFormatWeekday(); 108 String unixTimeFormat = filterUnixTimeFormat ? null : dateTimeFormatDetail.getUnixTimeFormat(); 109 String unixTimeFormatSeconds = filterUnixTimeFormatSeconds ? null : dateTimeFormatDetail.getUnixTimeFormatSeconds(); 110 String shortDateSeparator = filterShortDateSeparator ? null : dateTimeFormatDetail.getShortDateSeparator(); 111 String timeSeparator = filterTimeSeparator ? null : dateTimeFormatDetail.getTimeSeparator(); 112 Boolean isDefault = filterIsDefault ? null : dateTimeFormatDetail.getIsDefault(); 113 Integer sortOrder = filterSortOrder ? null : dateTimeFormatDetail.getSortOrder(); 114 String description = filterDescription ? null : partyControl.getBestDateTimeFormatDescription(dateTimeFormat, getLanguage()); 115 116 dateTimeFormatTransfer = new DateTimeFormatTransfer(dateTimeFormatName, javaShortDateFormat, javaAbbrevDateFormat, 117 javaAbbrevDateFormatWeekday, javaLongDateFormat, javaLongDateFormatWeekday, javaTimeFormat, 118 javaTimeFormatSeconds, unixShortDateFormat, unixAbbrevDateFormat, unixAbbrevDateFormatWeekday, 119 unixLongDateFormat, unixLongDateFormatWeekday, unixTimeFormat, unixTimeFormatSeconds, shortDateSeparator, 120 timeSeparator, isDefault, sortOrder, description); 121 put(dateTimeFormat, dateTimeFormatTransfer); 122 } 123 124 return dateTimeFormatTransfer; 125 } 126 127}