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:57 UTC

[isis] 21/36: ISIS-2264: pushes TimeStampValueSemanticsProviderAbstract down to its subclass, JavaSqlTimeStampValueSemanticsProvider

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 f7d17f77d0a7ff0b70f64c32da465d4cf5b37444
Author: danhaywood <da...@haywood-associates.co.uk>
AuthorDate: Fri Jan 17 00:32:44 2020 +0100

    ISIS-2264: pushes TimeStampValueSemanticsProviderAbstract down to its subclass, JavaSqlTimeStampValueSemanticsProvider
---
 ...ampValueFacetUsingSemanticsProviderFactory.java |   2 +-
 .../JavaSqlTimeStampValueSemanticsProvider.java    | 114 +++++++++++++++++--
 .../TimeStampValueSemanticsProviderAbstract.java   | 121 ---------------------
 3 files changed, 103 insertions(+), 134 deletions(-)

diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/timestampsql/JavaSqlTimeStampValueFacetUsingSemanticsProviderFactory.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/timestampsql/JavaSqlTimeStampValueFacetUsingSemanticsProviderFactory.java
index cc7a358..bc10055 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/timestampsql/JavaSqlTimeStampValueFacetUsingSemanticsProviderFactory.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/timestampsql/JavaSqlTimeStampValueFacetUsingSemanticsProviderFactory.java
@@ -41,7 +41,7 @@ extends ValueFacetUsingSemanticsProviderFactory<Timestamp> {
         if (type != java.sql.Timestamp.class) {
             return;
         }
-        addFacets(new JavaSqlTimeStampValueSemanticsProvider(holder, getContext()));
+        addFacets(new JavaSqlTimeStampValueSemanticsProvider(holder));
     }
 
 }
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/timestampsql/JavaSqlTimeStampValueSemanticsProvider.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/timestampsql/JavaSqlTimeStampValueSemanticsProvider.java
index b405dab..620b516 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/timestampsql/JavaSqlTimeStampValueSemanticsProvider.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/timestampsql/JavaSqlTimeStampValueSemanticsProvider.java
@@ -21,42 +21,132 @@ package org.apache.isis.core.metamodel.facets.value.timestampsql;
 
 import java.sql.Timestamp;
 import java.text.DateFormat;
+import java.util.ArrayList;
 import java.util.Date;
+import java.util.List;
+import java.util.Locale;
 import java.util.Map;
+import java.util.TimeZone;
 
 import org.apache.isis.applib.adapters.EncoderDecoder;
 import org.apache.isis.applib.adapters.Parser;
-import org.apache.isis.applib.services.inject.ServiceInjector;
 import org.apache.isis.core.commons.internal.collections._Maps;
+import org.apache.isis.core.config.IsisConfiguration;
 import org.apache.isis.core.metamodel.facetapi.FacetHolder;
 import org.apache.isis.core.metamodel.facets.object.parseable.InvalidEntryException;
 import org.apache.isis.core.metamodel.facets.properties.defaults.PropertyDefaultFacet;
+import org.apache.isis.core.metamodel.facets.value.ValueSemanticsProviderAbstractTemporal;
 
-public class JavaSqlTimeStampValueSemanticsProvider
-extends TimeStampValueSemanticsProviderAbstract<java.sql.Timestamp> {
+import lombok.Getter;
+import lombok.Setter;
 
-    public static final boolean isAPropertyDefaultFacet() {
-        return PropertyDefaultFacet.class.isAssignableFrom(JavaSqlTimeStampValueSemanticsProvider.class);
-    }
+public class JavaSqlTimeStampValueSemanticsProvider
+extends ValueSemanticsProviderAbstractTemporal<Timestamp> {
 
-    private static Map<String, DateFormat> formats = _Maps.newHashMap();
+    private static final Object DEFAULT_VALUE = null; // no default
+    private static final int TYPICAL_LENGTH = 25;
 
-    static {
-        initFormats(formats);
+    protected static void initFormats(final Map<String, DateFormat> formats) {
+        formats.put(ISO_ENCODING_FORMAT, createDateEncodingFormat("yyyyMMdd'T'HHmmssSSS"));
+        formats.put("short", DateFormat.getDateTimeInstance(DateFormat.SHORT, DateFormat.LONG));
     }
 
+    @Getter @Setter
+    private String configuredFormat;
+
     /**
      * Required because implementation of {@link Parser} and
      * {@link EncoderDecoder}.
      */
     public JavaSqlTimeStampValueSemanticsProvider() {
-        this(null, null);
+        this(null);
+    }
+
+    @SuppressWarnings("unchecked")
+    public JavaSqlTimeStampValueSemanticsProvider(final FacetHolder holder) {
+        this(IsisConfiguration.Value.FormatIdentifier.TIMESTAMP, holder, 25, Immutability.NOT_IMMUTABLE, EqualByContent.NOT_HONOURED, null);
+
+        configuredFormat = getConfiguration().getValue().getFormat().getOrDefault("timestamp", "short").toLowerCase().trim();
+
+        buildFormat(configuredFormat);
+
+        final String formatRequired = getConfiguration().getValue().getFormat().get("timestamp");
+
+        if (formatRequired == null) {
+            format = formats().get(defaultFormat());
+        } else {
+            setMask(formatRequired);
+        }
+    }
+
+    private JavaSqlTimeStampValueSemanticsProvider(final IsisConfiguration.Value.FormatIdentifier formatIdentifier, final FacetHolder holder, final int typicalLength, final Immutability immutability, final EqualByContent equalByContent, final Timestamp defaultValue) {
+        super(formatIdentifier.name().toLowerCase(), type(), holder, java.sql.Timestamp.class, typicalLength, immutability, equalByContent, defaultValue);
+    }
+
+    @Override
+    protected Timestamp add(final Timestamp original, final int years, final int months, final int days, final int hours, final int minutes) {
+        return original;
+    }
+
+    @Override
+    protected String defaultFormat() {
+        return "short";
+    }
+
+    @Override
+    public String toString() {
+        return "TimeStampValueSemanticsProvider: " + format;
+    }
+
+    @Override
+    protected DateFormat format() {
+
+        final Locale locale = Locale.getDefault();
+        final TimeZone timeZone = TimeZone.getDefault();
+
+        final DateFormat dateFormat = DateFormat.getDateTimeInstance(DateFormat.SHORT, DateFormat.LONG, locale);
+        dateFormat.setTimeZone(timeZone);
+
+        return dateFormat;
+    }
+
+    @Override
+    protected List<DateFormat> formatsToTry() {
+        final List<DateFormat> formats = new ArrayList<DateFormat>();
+
+        final Locale locale = Locale.getDefault();
+        final TimeZone timeZone = TimeZone.getDefault();
+
+        formats.add(DateFormat.getDateTimeInstance(DateFormat.MEDIUM, DateFormat.LONG, locale));
+        formats.add(DateFormat.getDateTimeInstance(DateFormat.SHORT, DateFormat.LONG, locale));
+        formats.add(createDateFormat("yyyy-MM-dd HH:mm:ss.SSS"));
+
+        for (final DateFormat format : formats) {
+            format.setTimeZone(timeZone);
+        }
+
+        return formats;
     }
 
-    public JavaSqlTimeStampValueSemanticsProvider(final FacetHolder holder, final ServiceInjector context) {
-        super(holder, java.sql.Timestamp.class);
+    @Override
+    public void appendAttributesTo(Map<String, Object> attributeMap) {
+        super.appendAttributesTo(attributeMap);
+        attributeMap.put("configuredFormat", configuredFormat);
     }
 
+
+
+    public static final boolean isAPropertyDefaultFacet() {
+        return PropertyDefaultFacet.class.isAssignableFrom(JavaSqlTimeStampValueSemanticsProvider.class);
+    }
+
+    private static Map<String, DateFormat> formats = _Maps.newHashMap();
+
+    static {
+        initFormats(formats);
+    }
+
+
     // //////////////////////////////////////////////////////////////////
     // temporal-specific stuff
     // //////////////////////////////////////////////////////////////////
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/timestampsql/TimeStampValueSemanticsProviderAbstract.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/timestampsql/TimeStampValueSemanticsProviderAbstract.java
deleted file mode 100644
index f681bbb..0000000
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/timestampsql/TimeStampValueSemanticsProviderAbstract.java
+++ /dev/null
@@ -1,121 +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.timestampsql;
-
-import java.text.DateFormat;
-import java.util.ArrayList;
-import java.util.List;
-import java.util.Locale;
-import java.util.Map;
-import java.util.TimeZone;
-
-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;
-
-abstract class TimeStampValueSemanticsProviderAbstract<T> extends ValueSemanticsProviderAbstractTemporal<T> {
-
-    private static final Object DEFAULT_VALUE = null; // no default
-    private static final int TYPICAL_LENGTH = 25;
-
-    protected static void initFormats(final Map<String, DateFormat> formats) {
-        formats.put(ISO_ENCODING_FORMAT, createDateEncodingFormat("yyyyMMdd'T'HHmmssSSS"));
-        formats.put("short", DateFormat.getDateTimeInstance(DateFormat.SHORT, DateFormat.LONG));
-    }
-
-    @Getter @Setter
-    private String configuredFormat;
-
-    public TimeStampValueSemanticsProviderAbstract(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 TimeStampValueSemanticsProviderAbstract(final FacetHolder holder, final Class<T> adaptedClass) {
-        this(FormatIdentifier.TIMESTAMP, holder, adaptedClass, TYPICAL_LENGTH, Immutability.NOT_IMMUTABLE, EqualByContent.NOT_HONOURED, (T) DEFAULT_VALUE);
-
-        configuredFormat = getConfiguration().getValue().getFormat().getOrDefault("timestamp", "short").toLowerCase().trim();
-
-        buildFormat(configuredFormat);
-
-        final String formatRequired = getConfiguration().getValue().getFormat().get("timestamp");
-        
-        if (formatRequired == null) {
-            format = formats().get(defaultFormat());
-        } else {
-            setMask(formatRequired);
-        }
-    }
-
-    @Override
-    protected T add(final T original, final int years, final int months, final int days, final int hours, final int minutes) {
-        return original;
-    }
-
-    @Override
-    protected String defaultFormat() {
-        return "short";
-    }
-
-    @Override
-    public String toString() {
-        return "TimeStampValueSemanticsProvider: " + format;
-    }
-
-    @Override
-    protected DateFormat format() {
-
-        final Locale locale = Locale.getDefault();
-        final TimeZone timeZone = TimeZone.getDefault();
-
-        final DateFormat dateFormat = DateFormat.getDateTimeInstance(DateFormat.SHORT, DateFormat.LONG, locale);
-        dateFormat.setTimeZone(timeZone);
-
-        return dateFormat;
-    }
-
-    @Override
-    protected List<DateFormat> formatsToTry() {
-        final List<DateFormat> formats = new ArrayList<DateFormat>();
-
-        final Locale locale = Locale.getDefault();
-        final TimeZone timeZone = TimeZone.getDefault();
-
-        formats.add(DateFormat.getDateTimeInstance(DateFormat.MEDIUM, DateFormat.LONG, locale));
-        formats.add(DateFormat.getDateTimeInstance(DateFormat.SHORT, DateFormat.LONG, locale));
-        formats.add(createDateFormat("yyyy-MM-dd HH:mm:ss.SSS"));
-
-        for (final DateFormat format : formats) {
-            format.setTimeZone(timeZone);
-        }
-
-        return formats;
-    }
-
-    @Override
-    public void appendAttributesTo(Map<String, Object> attributeMap) {
-        super.appendAttributesTo(attributeMap);
-        attributeMap.put("configuredFormat", configuredFormat);
-    }
-
-}