You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@isis.apache.org by da...@apache.org on 2020/01/17 01:11:59 UTC
[isis] 23/36: ISIS-2264: inlines DateValueSemanticsProviderAbstract
down into its subclass, JavaSqlDateValueSemanticsProvider
This is an automated email from the ASF dual-hosted git repository.
danhaywood pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/isis.git
commit a107f9f3f4629415ba6c0e7075f67d73c1551999
Author: danhaywood <da...@haywood-associates.co.uk>
AuthorDate: Fri Jan 17 00:54:54 2020 +0100
ISIS-2264: inlines DateValueSemanticsProviderAbstract down into its subclass, JavaSqlDateValueSemanticsProvider
---
.../date/DateValueSemanticsProviderAbstract.java | 136 ---------------------
.../datesql/JavaSqlDateValueSemanticsProvider.java | 116 +++++++++++++++++-
2 files changed, 112 insertions(+), 140 deletions(-)
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/date/DateValueSemanticsProviderAbstract.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/date/DateValueSemanticsProviderAbstract.java
deleted file mode 100644
index 3be27c7..0000000
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/date/DateValueSemanticsProviderAbstract.java
+++ /dev/null
@@ -1,136 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-
-package org.apache.isis.core.metamodel.facets.value.date;
-
-import java.text.DateFormat;
-import java.util.ArrayList;
-import java.util.Calendar;
-import java.util.List;
-import java.util.Locale;
-import java.util.Map;
-
-import org.apache.isis.core.commons.internal.collections._Maps;
-import org.apache.isis.core.config.IsisConfiguration.Value.FormatIdentifier;
-import org.apache.isis.core.metamodel.facetapi.FacetHolder;
-import org.apache.isis.core.metamodel.facets.value.ValueSemanticsProviderAbstractTemporal;
-
-import lombok.Getter;
-import lombok.Setter;
-
-public abstract class DateValueSemanticsProviderAbstract<T> extends ValueSemanticsProviderAbstractTemporal<T> {
-
- private static Map<String, DateFormat> formats = _Maps.newHashMap();
-
- static {
- formats.put(ISO_ENCODING_FORMAT, createDateEncodingFormat("yyyyMMdd"));
- formats.put("iso", createDateFormat("yyyy-MM-dd"));
- formats.put("medium", DateFormat.getDateInstance(DateFormat.MEDIUM));
- }
-
- @Getter @Setter
- private String configuredFormat;
-
- public DateValueSemanticsProviderAbstract(final FormatIdentifier formatIdentifier, final FacetHolder holder, final Class<T> adaptedClass, final int typicalLength, final Immutability immutability, final EqualByContent equalByContent, final T defaultValue) {
- super(formatIdentifier.name().toLowerCase(), type(), holder, adaptedClass, typicalLength, immutability, equalByContent, defaultValue);
- }
-
- public DateValueSemanticsProviderAbstract(final FacetHolder holder, final Class<T> adaptedClass, final Immutability immutability, final EqualByContent equalByContent, final T defaultValue) {
- this(FormatIdentifier.DATE, holder, adaptedClass, 12, immutability, equalByContent, defaultValue);
-
- configuredFormat = getConfiguration().getValue().getFormat().getOrDefault("date", "medium").toLowerCase().trim();
-
- buildFormat(configuredFormat);
-
- final String formatRequired = getConfiguration().getValue().getFormat().get("date");
- if (formatRequired == null) {
- format = formats().get(defaultFormat());
- } else {
- setMask(formatRequired); //TODO fails when using format names eg 'medium'
- }
-
-
- }
-
- // //////////////////////////////////////////////////////////////////
- // temporal-specific stuff
- // //////////////////////////////////////////////////////////////////
-
- @Override
- protected void clearFields(final Calendar cal) {
- cal.set(Calendar.HOUR, 0);
- cal.set(Calendar.HOUR_OF_DAY, 0);
- cal.set(Calendar.MINUTE, 0);
- cal.set(Calendar.SECOND, 0);
- cal.set(Calendar.AM_PM, 0);
- cal.set(Calendar.MILLISECOND, 0);
- }
-
- @Override
- protected String defaultFormat() {
- return "medium";
- }
-
- @Override
- protected boolean ignoreTimeZone() {
- return true;
- }
-
- @Override
- protected Map<String, DateFormat> formats() {
- return formats;
- }
-
- @Override
- public String toString() {
- return "DateValueSemanticsProvider: " + format;
- }
-
- @Override
- protected DateFormat format() {
- final Locale locale = Locale.getDefault();
- final DateFormat dateFormat = DateFormat.getDateInstance(DateFormat.MEDIUM, locale);
- dateFormat.setTimeZone(UTC_TIME_ZONE);
- return dateFormat;
- }
-
- @Override
- protected List<DateFormat> formatsToTry() {
- List<DateFormat> formats = new ArrayList<DateFormat>();
-
- Locale locale = Locale.getDefault();
- formats.add(DateFormat.getDateInstance(DateFormat.LONG, locale));
- formats.add(DateFormat.getDateInstance(DateFormat.MEDIUM, locale));
- formats.add(DateFormat.getDateInstance(DateFormat.SHORT, locale));
- formats.add(createDateFormat("yyyy-MM-dd"));
- formats.add(createDateFormat("yyyyMMdd"));
-
- for (DateFormat format : formats) {
- format.setTimeZone(UTC_TIME_ZONE);
- }
-
- return formats;
- }
-
- @Override
- public void appendAttributesTo(Map<String, Object> attributeMap) {
- super.appendAttributesTo(attributeMap);
- attributeMap.put("configuredFormat", configuredFormat);
- }
-}
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/datesql/JavaSqlDateValueSemanticsProvider.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/datesql/JavaSqlDateValueSemanticsProvider.java
index 1c9c9f2..8bf1a62 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/datesql/JavaSqlDateValueSemanticsProvider.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/datesql/JavaSqlDateValueSemanticsProvider.java
@@ -20,25 +20,45 @@
package org.apache.isis.core.metamodel.facets.value.datesql;
import java.sql.Date;
+import java.text.DateFormat;
+import java.util.ArrayList;
import java.util.Calendar;
+import java.util.List;
+import java.util.Locale;
+import java.util.Map;
import org.apache.isis.applib.adapters.EncoderDecoder;
import org.apache.isis.applib.adapters.Parser;
import org.apache.isis.applib.clock.Clock;
+import org.apache.isis.core.commons.internal.collections._Maps;
import org.apache.isis.core.metamodel.facetapi.FacetHolder;
-import org.apache.isis.core.metamodel.facets.value.date.DateValueSemanticsProviderAbstract;
+import org.apache.isis.core.metamodel.facets.value.ValueSemanticsProviderAbstractTemporal;
import org.apache.isis.core.metamodel.facets.value.dateutil.JavaUtilDateValueSemanticsProvider;
import org.apache.isis.core.metamodel.facets.value.timesql.JavaSqlTimeValueSemanticsProvider;
+import lombok.Getter;
+import lombok.Setter;
+
/**
* An adapter that handles {@link java.sql.Date} with only date component.
*
* @see JavaUtilDateValueSemanticsProvider
* @see JavaSqlTimeValueSemanticsProvider
*/
-public class JavaSqlDateValueSemanticsProvider extends DateValueSemanticsProviderAbstract<Date> {
+public class JavaSqlDateValueSemanticsProvider extends ValueSemanticsProviderAbstractTemporal<Date> {
- private static final Date DEFAULT_VALUE = null; // no default
+
+ private static Map<String, DateFormat> formats = _Maps.newHashMap();
+
+ static {
+ formats.put(ISO_ENCODING_FORMAT, createDateEncodingFormat("yyyyMMdd"));
+ formats.put("iso", createDateFormat("yyyy-MM-dd"));
+ formats.put("medium", DateFormat.getDateInstance(DateFormat.MEDIUM));
+ }
+
+ @Getter
+ @Setter
+ private String configuredFormat;
/**
* Required because implementation of {@link Parser} and
@@ -49,10 +69,98 @@ public class JavaSqlDateValueSemanticsProvider extends DateValueSemanticsProvide
}
public JavaSqlDateValueSemanticsProvider(final FacetHolder holder) {
- super(holder, Date.class, Immutability.NOT_IMMUTABLE, EqualByContent.NOT_HONOURED, DEFAULT_VALUE);
+ super("date", type(), holder, Date.class, 12, Immutability.NOT_IMMUTABLE, EqualByContent.NOT_HONOURED, null);
+
+ configuredFormat = getConfiguration().getValue().getFormat().getOrDefault("date", "medium").toLowerCase().trim();
+
+ buildFormat(configuredFormat);
+
+ final String formatRequired = getConfiguration().getValue().getFormat().get("date");
+ if (formatRequired == null) {
+ format = formats().get(defaultFormat());
+ } else {
+ setMask(formatRequired); //TODO fails when using format names eg 'medium'
+ }
+ }
+
+ // //////////////////////////////////////////////////////////////////
+ // temporal-specific stuff
+ // //////////////////////////////////////////////////////////////////
+
+ @Override
+ protected void clearFields(final Calendar cal) {
+ cal.set(Calendar.HOUR, 0);
+ cal.set(Calendar.HOUR_OF_DAY, 0);
+ cal.set(Calendar.MINUTE, 0);
+ cal.set(Calendar.SECOND, 0);
+ cal.set(Calendar.AM_PM, 0);
+ cal.set(Calendar.MILLISECOND, 0);
+ }
+
+ @Override
+ protected String defaultFormat() {
+ return "medium";
+ }
+
+ @Override
+ protected boolean ignoreTimeZone() {
+ return true;
+ }
+
+ @Override
+ protected Map<String, DateFormat> formats() {
+ return formats;
+ }
+
+ @Override
+ public String toString() {
+ return "DateValueSemanticsProvider: " + format;
+ }
+
+ @Override
+ protected DateFormat format() {
+ final Locale locale = Locale.getDefault();
+ final DateFormat dateFormat = DateFormat.getDateInstance(DateFormat.MEDIUM, locale);
+ dateFormat.setTimeZone(UTC_TIME_ZONE);
+ return dateFormat;
}
@Override
+ protected List<DateFormat> formatsToTry() {
+ List<DateFormat> formats = new ArrayList<DateFormat>();
+
+ Locale locale = Locale.getDefault();
+ formats.add(DateFormat.getDateInstance(DateFormat.LONG, locale));
+ formats.add(DateFormat.getDateInstance(DateFormat.MEDIUM, locale));
+ formats.add(DateFormat.getDateInstance(DateFormat.SHORT, locale));
+ formats.add(createDateFormat("yyyy-MM-dd"));
+ formats.add(createDateFormat("yyyyMMdd"));
+
+ for (DateFormat format : formats) {
+ format.setTimeZone(UTC_TIME_ZONE);
+ }
+
+ return formats;
+ }
+
+ @Override
+ public void appendAttributesTo(Map<String, Object> attributeMap) {
+ super.appendAttributesTo(attributeMap);
+ attributeMap.put("configuredFormat", configuredFormat);
+ }
+
+
+
+
+
+
+
+
+
+
+ private static final Date DEFAULT_VALUE = null; // no default
+
+ @Override
protected Date add(final Date original, final int years, final int months, final int days, final int hours, final int minutes) {
final Date date = original;
final Calendar cal = Calendar.getInstance();