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:12:00 UTC

[isis] 24/36: ISIS-2264: pushes TimeValueSemanticsProviderAbstract down to its subclass, JavaSqlTimeValueSemanticsProvider

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 9acf62391d2a356665d5dc59a1524461bcd1d86e
Author: danhaywood <da...@haywood-associates.co.uk>
AuthorDate: Fri Jan 17 01:02:55 2020 +0100

    ISIS-2264: pushes TimeValueSemanticsProviderAbstract down to its subclass, JavaSqlTimeValueSemanticsProvider
---
 .../time/TimeValueSemanticsProviderAbstract.java   | 126 ---------------------
 .../timesql/JavaSqlTimeValueSemanticsProvider.java |  93 ++++++++++++++-
 2 files changed, 87 insertions(+), 132 deletions(-)

diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/time/TimeValueSemanticsProviderAbstract.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/time/TimeValueSemanticsProviderAbstract.java
deleted file mode 100644
index d092e0b..0000000
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/time/TimeValueSemanticsProviderAbstract.java
+++ /dev/null
@@ -1,126 +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.time;
-
-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.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 TimeValueSemanticsProviderAbstract<T> 
-extends ValueSemanticsProviderAbstractTemporal<T> {
-
-    private static final int TYPICAL_LENGTH = 8;
-
-    protected static void initFormats(final Map<String, DateFormat> formats) {
-        formats.put(ISO_ENCODING_FORMAT, createDateEncodingFormat("HHmmssSSS"));
-        formats.put("short", DateFormat.getTimeInstance(DateFormat.SHORT));
-    }
-
-    @Getter @Setter
-    private String configuredFormat;
-
-    public TimeValueSemanticsProviderAbstract(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);
-    }
-
-    @SuppressWarnings("unchecked")
-    public TimeValueSemanticsProviderAbstract(final FacetHolder holder, final Class<T> adaptedClass) {
-        this(FormatIdentifier.TIME, holder, adaptedClass, 8, Immutability.NOT_IMMUTABLE, EqualByContent.NOT_HONOURED, (T) null);
-
-        configuredFormat = getConfiguration().getValue().getFormat().getOrDefault("time", "short").toLowerCase().trim();
-
-        buildFormat(configuredFormat);
-
-        final String formatRequired = getConfiguration().getValue().getFormat().get("time");
-        if (formatRequired == null) {
-            format = formats().get(defaultFormat());
-        } else {
-            setMask(formatRequired);
-        }
-    }
-
-    // //////////////////////////////////////////////////////////////////
-    // temporal-specific stuff
-    // //////////////////////////////////////////////////////////////////
-
-    @Override
-    protected void clearFields(final Calendar cal) {
-        cal.set(Calendar.YEAR, 1970);
-        cal.set(Calendar.MONTH, 0);
-        cal.set(Calendar.DAY_OF_MONTH, 1);
-    }
-
-    @Override
-    protected String defaultFormat() {
-        return "short";
-    }
-
-    @Override
-    public String toString() {
-        return "TimeValueSemanticsProvider: " + format;
-    }
-
-    @Override
-    protected DateFormat format() {
-
-        final Locale locale = Locale.getDefault();
-        final DateFormat dateFormat = DateFormat.getTimeInstance(DateFormat.SHORT, locale);
-        dateFormat.setTimeZone(UTC_TIME_ZONE);
-        return dateFormat;
-    }
-
-    @Override
-    protected List<DateFormat> formatsToTry() {
-        List<DateFormat> formats = new ArrayList<DateFormat>();
-
-        final Locale locale = Locale.getDefault();
-
-        formats.add(DateFormat.getTimeInstance(DateFormat.LONG, locale));
-        formats.add(DateFormat.getTimeInstance(DateFormat.MEDIUM, locale));
-        formats.add(DateFormat.getTimeInstance(DateFormat.SHORT, locale));
-        formats.add(createDateFormat("HH:mm:ss.SSS"));
-        formats.add(createDateFormat("HHmmssSSS"));
-        formats.add(createDateFormat("HH:mm:ss"));
-        formats.add(createDateFormat("HHmmss"));
-
-        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/timesql/JavaSqlTimeValueSemanticsProvider.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/timesql/JavaSqlTimeValueSemanticsProvider.java
index ad5bc28..0a5539c 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/timesql/JavaSqlTimeValueSemanticsProvider.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/timesql/JavaSqlTimeValueSemanticsProvider.java
@@ -21,8 +21,11 @@ package org.apache.isis.core.metamodel.facets.value.timesql;
 
 import java.sql.Time;
 import java.text.DateFormat;
+import java.util.ArrayList;
 import java.util.Calendar;
 import java.util.Date;
+import java.util.List;
+import java.util.Locale;
 import java.util.Map;
 
 import org.apache.isis.applib.adapters.EncoderDecoder;
@@ -30,19 +33,25 @@ 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.time.TimeValueSemanticsProviderAbstract;
+import org.apache.isis.core.metamodel.facets.value.ValueSemanticsProviderAbstractTemporal;
+
+import lombok.Getter;
+import lombok.Setter;
 
 /**
  * Treats {@link java.sql.Time} as a time-only value type.
  *
  */
-public class JavaSqlTimeValueSemanticsProvider extends TimeValueSemanticsProviderAbstract<java.sql.Time> {
-    private static Map<String, DateFormat> formats = _Maps.newHashMap();
+public class JavaSqlTimeValueSemanticsProvider extends ValueSemanticsProviderAbstractTemporal<Time> {
 
-    static {
-        initFormats(formats);
+    protected static void initFormats(final Map<String, DateFormat> formats) {
+        formats.put(ISO_ENCODING_FORMAT, createDateEncodingFormat("HHmmssSSS"));
+        formats.put("short", DateFormat.getTimeInstance(DateFormat.SHORT));
     }
 
+    @Getter @Setter
+    private String configuredFormat;
+
     /**
      * Required because implementation of {@link Parser} and
      * {@link EncoderDecoder}.
@@ -52,10 +61,82 @@ public class JavaSqlTimeValueSemanticsProvider extends TimeValueSemanticsProvide
     }
 
     public JavaSqlTimeValueSemanticsProvider(final FacetHolder holder) {
-        super(holder, java.sql.Time.class);
+        super("time", type(), holder, java.sql.Time.class, 8, Immutability.NOT_IMMUTABLE, EqualByContent.NOT_HONOURED, null);
+
+        configuredFormat = getConfiguration().getValue().getFormat().getOrDefault("time", "short").toLowerCase().trim();
+
+        buildFormat(configuredFormat);
+
+        final String formatRequired = getConfiguration().getValue().getFormat().get("time");
+        if (formatRequired == null) {
+            format = formats().get(defaultFormat());
+        } else {
+            setMask(formatRequired);
+        }
     }
 
     @Override
+    protected void clearFields(final Calendar cal) {
+        cal.set(Calendar.YEAR, 1970);
+        cal.set(Calendar.MONTH, 0);
+        cal.set(Calendar.DAY_OF_MONTH, 1);
+    }
+
+    @Override
+    protected String defaultFormat() {
+        return "short";
+    }
+
+    @Override
+    public String toString() {
+        return "TimeValueSemanticsProvider: " + format;
+    }
+
+    @Override
+    protected DateFormat format() {
+
+        final Locale locale = Locale.getDefault();
+        final DateFormat dateFormat = DateFormat.getTimeInstance(DateFormat.SHORT, locale);
+        dateFormat.setTimeZone(UTC_TIME_ZONE);
+        return dateFormat;
+    }
+
+    @Override
+    protected List<DateFormat> formatsToTry() {
+        List<DateFormat> formats = new ArrayList<DateFormat>();
+
+        final Locale locale = Locale.getDefault();
+
+        formats.add(DateFormat.getTimeInstance(DateFormat.LONG, locale));
+        formats.add(DateFormat.getTimeInstance(DateFormat.MEDIUM, locale));
+        formats.add(DateFormat.getTimeInstance(DateFormat.SHORT, locale));
+        formats.add(createDateFormat("HH:mm:ss.SSS"));
+        formats.add(createDateFormat("HHmmssSSS"));
+        formats.add(createDateFormat("HH:mm:ss"));
+        formats.add(createDateFormat("HHmmss"));
+
+        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 Map<String, DateFormat> formats = _Maps.newHashMap();
+
+    static {
+        initFormats(formats);
+    }
+
+
+    @Override
     public Time add(final Time original, final int years, final int months, final int days, final int hours, final int minutes) {
         final java.sql.Time time = original;
         final Calendar cal = Calendar.getInstance();