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.graphql; 018 019import com.echothree.model.control.graphql.server.graphql.BaseEntityInstanceObject; 020import com.echothree.model.control.graphql.server.util.BaseGraphQl; 021import com.echothree.model.control.party.server.control.PartyControl; 022import com.echothree.model.control.user.server.control.UserControl; 023import com.echothree.model.data.party.server.entity.DateTimeFormat; 024import com.echothree.model.data.party.server.entity.DateTimeFormatDetail; 025import com.echothree.util.server.persistence.Session; 026import graphql.annotations.annotationTypes.GraphQLDescription; 027import graphql.annotations.annotationTypes.GraphQLField; 028import graphql.annotations.annotationTypes.GraphQLName; 029import graphql.annotations.annotationTypes.GraphQLNonNull; 030import graphql.schema.DataFetchingEnvironment; 031 032@GraphQLDescription("date time format object") 033@GraphQLName("DateTimeFormat") 034public class DateTimeFormatObject 035 extends BaseEntityInstanceObject { 036 037 private final DateTimeFormat dateTimeFormat; // Always Present 038 039 public DateTimeFormatObject(DateTimeFormat dateTimeFormat) { 040 super(dateTimeFormat.getPrimaryKey()); 041 042 this.dateTimeFormat = dateTimeFormat; 043 } 044 045 private DateTimeFormatDetail dateTimeFormatDetail; // Optional, use getDateTimeFormatDetail() 046 047 private DateTimeFormatDetail getDateTimeFormatDetail() { 048 if(dateTimeFormatDetail == null) { 049 dateTimeFormatDetail = dateTimeFormat.getLastDetail(); 050 } 051 052 return dateTimeFormatDetail; 053 } 054 055 @GraphQLField 056 @GraphQLDescription("date time format name") 057 @GraphQLNonNull 058 public String getDateTimeFormatName() { 059 return getDateTimeFormatDetail().getDateTimeFormatName(); 060 } 061 062 @GraphQLField 063 @GraphQLDescription("java short date format") 064 @GraphQLNonNull 065 public String getJavaShortDateFormat() { 066 return getDateTimeFormatDetail().getJavaShortDateFormat(); 067 } 068 069 @GraphQLField 070 @GraphQLDescription("java abbrev date format") 071 @GraphQLNonNull 072 public String getJavaAbbrevDateFormat() { 073 return getDateTimeFormatDetail().getJavaAbbrevDateFormat(); 074 } 075 076 @GraphQLField 077 @GraphQLDescription("java abbrev date format weekday") 078 @GraphQLNonNull 079 public String getJavaAbbrevDateFormatWeekday() { 080 return getDateTimeFormatDetail().getJavaAbbrevDateFormatWeekday(); 081 } 082 083 @GraphQLField 084 @GraphQLDescription("java long date format") 085 @GraphQLNonNull 086 public String getJavaLongDateFormat() { 087 return getDateTimeFormatDetail().getJavaLongDateFormat(); 088 } 089 090 @GraphQLField 091 @GraphQLDescription("java long date format weekday") 092 @GraphQLNonNull 093 public String getJavaLongDateFormatWeekday() { 094 return getDateTimeFormatDetail().getJavaLongDateFormatWeekday(); 095 } 096 097 @GraphQLField 098 @GraphQLDescription("java time format name") 099 @GraphQLNonNull 100 public String getJavaTimeFormat() { 101 return getDateTimeFormatDetail().getJavaTimeFormat(); 102 } 103 104 @GraphQLField 105 @GraphQLDescription("java time format seconds") 106 @GraphQLNonNull 107 public String getJavaTimeFormatSeconds() { 108 return getDateTimeFormatDetail().getJavaTimeFormatSeconds(); 109 } 110 111 @GraphQLField 112 @GraphQLDescription("unix short date format") 113 @GraphQLNonNull 114 public String getUnixShortDateFormat() { 115 return getDateTimeFormatDetail().getUnixShortDateFormat(); 116 } 117 118 @GraphQLField 119 @GraphQLDescription("unix abbrev date format") 120 @GraphQLNonNull 121 public String getUnixAbbrevDateFormat() { 122 return getDateTimeFormatDetail().getUnixAbbrevDateFormat(); 123 } 124 125 @GraphQLField 126 @GraphQLDescription("unix abbrev date format weekday") 127 @GraphQLNonNull 128 public String getUnixAbbrevDateFormatWeekday() { 129 return getDateTimeFormatDetail().getUnixAbbrevDateFormatWeekday(); 130 } 131 132 @GraphQLField 133 @GraphQLDescription("unix long date format") 134 @GraphQLNonNull 135 public String getUnixLongDateFormat() { 136 return getDateTimeFormatDetail().getUnixLongDateFormat(); 137 } 138 139 @GraphQLField 140 @GraphQLDescription("unix long date format weekday") 141 @GraphQLNonNull 142 public String getUnixLongDateFormatWeekday() { 143 return getDateTimeFormatDetail().getUnixLongDateFormatWeekday(); 144 } 145 146 @GraphQLField 147 @GraphQLDescription("unix time format") 148 @GraphQLNonNull 149 public String getUnixTimeFormat() { 150 return getDateTimeFormatDetail().getUnixTimeFormat(); 151 } 152 153 @GraphQLField 154 @GraphQLDescription("unix time format seconds") 155 @GraphQLNonNull 156 public String getUnixTimeFormatSeconds() { 157 return getDateTimeFormatDetail().getUnixTimeFormatSeconds(); 158 } 159 160 @GraphQLField 161 @GraphQLDescription("short date separator") 162 @GraphQLNonNull 163 public String getShortDateSeparator() { 164 return getDateTimeFormatDetail().getShortDateSeparator(); 165 } 166 167 @GraphQLField 168 @GraphQLDescription("time separator") 169 @GraphQLNonNull 170 public String getTimeSeparator() { 171 return getDateTimeFormatDetail().getTimeSeparator(); 172 } 173 174 @GraphQLField 175 @GraphQLDescription("is default") 176 @GraphQLNonNull 177 public boolean getIsDefault() { 178 return getDateTimeFormatDetail().getIsDefault(); 179 } 180 181 @GraphQLField 182 @GraphQLDescription("sort order") 183 @GraphQLNonNull 184 public int getSortOrder() { 185 return getDateTimeFormatDetail().getSortOrder(); 186 } 187 188 @GraphQLField 189 @GraphQLDescription("description") 190 @GraphQLNonNull 191 public String getDescription(final DataFetchingEnvironment env) { 192 var partyControl = Session.getModelController(PartyControl.class); 193 var userControl = Session.getModelController(UserControl.class); 194 195 return partyControl.getBestDateTimeFormatDescription(dateTimeFormat, userControl.getPreferredLanguageFromUserVisit(BaseGraphQl.getUserVisit(env))); 196 } 197 198}