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