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);
- }
-
-}