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

[isis] 14/36: ISIS-2264: isis.value.format["datetime"] -> ALSO TO: isis.value-types.java-time.local-date-time.format

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 4a00d1440481bf8fe6a75ffc8cf3f2681fbecab1
Author: danhaywood <da...@haywood-associates.co.uk>
AuthorDate: Thu Jan 16 23:39:16 2020 +0100

    ISIS-2264: isis.value.format["datetime"] -> ALSO TO: isis.value-types.java-time.local-date-time.format
---
 .../modules/mignotes/pages/migrating-to-2.0.0.adoc |  4 ++++
 .../apache/isis/core/config/IsisConfiguration.java | 12 +++++-----
 .../ValueSemanticsProviderAndFacetAbstract.java    |  2 +-
 .../DateAndTimeValueSemanticsProviderAbstract.java |  2 +-
 .../ValueSemanticsProviderAbstractTemporal.java    |  2 +-
 .../date/DateValueSemanticsProviderAbstract.java   |  3 +--
 .../JodaLocalDateValueSemanticsProvider.java       |  2 +-
 ...JodaDateTimeValueSemanticsProviderAbstract.java |  2 +-
 .../TemporalValueSemanticsProviderAbstract.java    |  5 ++--
 .../LocalDateTimeValueSemanticsProvider.java       | 27 +++++++++++++++++++---
 .../time/TimeValueSemanticsProviderAbstract.java   |  2 +-
 .../TimeStampValueSemanticsProviderAbstract.java   |  4 ++--
 12 files changed, 45 insertions(+), 22 deletions(-)

diff --git a/antora/components/toc/modules/mignotes/pages/migrating-to-2.0.0.adoc b/antora/components/toc/modules/mignotes/pages/migrating-to-2.0.0.adoc
index 9f1da5b..61fdf2f 100644
--- a/antora/components/toc/modules/mignotes/pages/migrating-to-2.0.0.adoc
+++ b/antora/components/toc/modules/mignotes/pages/migrating-to-2.0.0.adoc
@@ -656,6 +656,10 @@ isis.value-types. +
 |isis.value-types. +
 {nbsp}{nbsp}joda.local-date-time.format
 
+isis.value-types. +
+{nbsp}{nbsp}java-time.local-date-time.format
+
+
 |
 |
 
diff --git a/core/config/src/main/java/org/apache/isis/core/config/IsisConfiguration.java b/core/config/src/main/java/org/apache/isis/core/config/IsisConfiguration.java
index 6269d8e..b496acd 100644
--- a/core/config/src/main/java/org/apache/isis/core/config/IsisConfiguration.java
+++ b/core/config/src/main/java/org/apache/isis/core/config/IsisConfiguration.java
@@ -1239,7 +1239,11 @@ public class IsisConfiguration {
         private final JavaTime javaTime = new JavaTime();
         @Data
         public static class JavaTime {
-
+            private final Joda.LocalDateTime localDateTime = new Joda.LocalDateTime();
+            @Data
+            public static class LocalDateTime {
+                private String format = "medium";
+            }
         }
 
         private final JavaUtil javaUtil = new JavaUtil();
@@ -1305,11 +1309,7 @@ public class IsisConfiguration {
             TIMESTAMP, 
             TIME,
         }
-        
-        public String getFormatOrElse(FormatIdentifier formatIdentifier, String defaultFormat) {
-            return getFormat().getOrDefault(formatIdentifier.name().toLowerCase(), defaultFormat);
-        }
-        
+
         private final Money money = new Money();
         @Data
         public static class Money {
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/value/vsp/ValueSemanticsProviderAndFacetAbstract.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/value/vsp/ValueSemanticsProviderAndFacetAbstract.java
index d3b0de5..bd9c7a1 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/value/vsp/ValueSemanticsProviderAndFacetAbstract.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/value/vsp/ValueSemanticsProviderAndFacetAbstract.java
@@ -283,7 +283,7 @@ implements ValueSemanticsProvider<T>, EncoderDecoder<T>, Parser<T>, DefaultsProv
 
     protected NumberFormat determineNumberFormat(FormatIdentifier formatIdentifier) {
         final String formatRequired = getConfiguration()
-                .getValue().getFormatOrElse(formatIdentifier, null);
+                .getValue().getFormat().getOrDefault(formatIdentifier.name().toLowerCase(), null);
 
         return formatRequired != null
                 ? new DecimalFormat(formatRequired)
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/DateAndTimeValueSemanticsProviderAbstract.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/DateAndTimeValueSemanticsProviderAbstract.java
index 3f14052..b42dc5f 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/DateAndTimeValueSemanticsProviderAbstract.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/DateAndTimeValueSemanticsProviderAbstract.java
@@ -49,7 +49,7 @@ extends ValueSemanticsProviderAbstractTemporal<T> {
         super(FormatIdentifier.DATETIME, holder, adaptedClass, TYPICAL_LENGTH, immutability, equalByContent, (T) DEFAULT_VALUE);
 
         final String formatRequired = getConfiguration()
-                .getValue().getFormatOrElse(FormatIdentifier.DATETIME, null);
+                .getValue().getFormat().getOrDefault(FormatIdentifier.DATETIME.name().toLowerCase(), null);
                 
         if (formatRequired == null) {
             format = formats().get(defaultFormat());
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/ValueSemanticsProviderAbstractTemporal.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/ValueSemanticsProviderAbstractTemporal.java
index dfbdcdc..8c47763 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/ValueSemanticsProviderAbstractTemporal.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/ValueSemanticsProviderAbstractTemporal.java
@@ -115,7 +115,7 @@ implements DateValueFacet {
 
         this.propertyType = formatIdentifier.name().toLowerCase();
         configuredFormat = getConfiguration()
-                .getValue().getFormatOrElse(formatIdentifier, defaultFormat()).toLowerCase().trim();
+                .getValue().getFormat().getOrDefault(formatIdentifier.name().toLowerCase(), defaultFormat()).toLowerCase().trim();
                
         buildFormat(configuredFormat);
 
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
index 4772fec..de706b1 100644
--- 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
@@ -44,8 +44,7 @@ public abstract class DateValueSemanticsProviderAbstract<T> extends ValueSemanti
     public DateValueSemanticsProviderAbstract(final FacetHolder holder, final Class<T> adaptedClass, final Immutability immutability, final EqualByContent equalByContent, final T defaultValue) {
         super(FormatIdentifier.DATE, holder, adaptedClass, 12, immutability, equalByContent, defaultValue);
 
-        final String formatRequired = getConfiguration().getValue()
-                .getFormatOrElse(FormatIdentifier.DATE, null);
+        final String formatRequired = getConfiguration().getValue().getFormat().getOrDefault(FormatIdentifier.DATE.name().toLowerCase(), null);
         
         if (formatRequired == null) {
             format = formats().get(defaultFormat());
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/datejodalocal/JodaLocalDateValueSemanticsProvider.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/datejodalocal/JodaLocalDateValueSemanticsProvider.java
index 4a1bebb..71b648f 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/datejodalocal/JodaLocalDateValueSemanticsProvider.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/datejodalocal/JodaLocalDateValueSemanticsProvider.java
@@ -130,7 +130,7 @@ public class JodaLocalDateValueSemanticsProvider extends ValueSemanticsProviderA
         super(type(), holder, LocalDate.class, TYPICAL_LENGTH, MAX_LENGTH, Immutability.IMMUTABLE, EqualByContent.HONOURED, DEFAULT_VALUE);
 
         String configuredNameOrPattern = getConfiguration()
-                .getValue().getFormatOrElse(FormatIdentifier.DATE, "medium");
+                .getValue().getFormat().getOrDefault(FormatIdentifier.DATE.name().toLowerCase(), "medium");
         
         updateTitleStringFormatter(configuredNameOrPattern);
     }
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/datetimejoda/JodaDateTimeValueSemanticsProviderAbstract.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/datetimejoda/JodaDateTimeValueSemanticsProviderAbstract.java
index adac98c..bb016bd 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/datetimejoda/JodaDateTimeValueSemanticsProviderAbstract.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/datetimejoda/JodaDateTimeValueSemanticsProviderAbstract.java
@@ -45,7 +45,7 @@ public abstract class JodaDateTimeValueSemanticsProviderAbstract<T> extends Valu
         super(FormatIdentifier.DATE, holder, adaptedClass, 12, Immutability.IMMUTABLE, EqualByContent.HONOURED, defaultValue);
 
         String formatRequired = getConfiguration()
-                .getValue().getFormatOrElse(FormatIdentifier.DATE, null);
+                .getValue().getFormat().getOrDefault(FormatIdentifier.DATE.name().toLowerCase(), null);
         
         if (formatRequired == null) {
             format = formats().get(defaultFormat());
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/temporal/TemporalValueSemanticsProviderAbstract.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/temporal/TemporalValueSemanticsProviderAbstract.java
index 1876686..621a431 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/temporal/TemporalValueSemanticsProviderAbstract.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/temporal/TemporalValueSemanticsProviderAbstract.java
@@ -118,10 +118,9 @@ implements TemporalValueFacet<T> {
     }
     
     protected DateTimeFormatter formatterFromConfig(FormatIdentifier formatIdentifier, String namedFallback) {
-        
+
         val configuredNameOrPattern = getConfiguration()
-                .getValue()
-                .getFormatOrElse(formatIdentifier, namedFallback);
+                .getValue().getFormat().getOrDefault(formatIdentifier.name().toLowerCase(), namedFallback);
         
         val formatter = lookupNamedFormatter(configuredNameOrPattern).orElse(null);
         if(formatter!=null) {
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/temporal/localdatetime/LocalDateTimeValueSemanticsProvider.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/temporal/localdatetime/LocalDateTimeValueSemanticsProvider.java
index df3789b..07da58d 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/temporal/localdatetime/LocalDateTimeValueSemanticsProvider.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/temporal/localdatetime/LocalDateTimeValueSemanticsProvider.java
@@ -30,9 +30,11 @@ import org.apache.isis.core.metamodel.facets.value.temporal.TemporalValueFacet;
 import org.apache.isis.core.metamodel.facets.value.temporal.TemporalValueSemanticsProviderAbstract;
 
 import lombok.val;
+import lombok.extern.log4j.Log4j2;
 
 
-public class LocalDateTimeValueSemanticsProvider 
+@Log4j2
+public class LocalDateTimeValueSemanticsProvider
 extends TemporalValueSemanticsProviderAbstract<LocalDateTime> {
 
     public static final int MAX_LENGTH = 36;
@@ -59,8 +61,27 @@ extends TemporalValueSemanticsProviderAbstract<LocalDateTime> {
 
         setEncodingFormatter(
                 DateTimeFormatter.ofPattern(dateHourMinuteSecondMillis, Locale.getDefault()));
-        setTitleFormatter(formatterFromConfig(FormatIdentifier.DATETIME, "medium"));
-        
+
+        val configuredNameOrPattern =
+                getConfiguration().getValueTypes().getJavaTime().getLocalDateTime().getFormat();
+
+        val formatter = lookupNamedFormatter(configuredNameOrPattern).orElse(null);
+
+        DateTimeFormatter titleFormatter = null;
+        if(formatter!=null) {
+            titleFormatter = formatter;
+        } else {
+            try {
+                titleFormatter = DateTimeFormatter.ofPattern(configuredNameOrPattern, Locale.getDefault());
+            } catch (Exception e) {
+                log.warn(e);
+            }
+            if (titleFormatter == null) {
+                titleFormatter = lookupNamedFormatterElseFail("medium");
+            }
+        }
+
+        setTitleFormatter(titleFormatter);
     }
 
 }
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
index 3fda3df..1338340 100644
--- 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
@@ -46,7 +46,7 @@ extends ValueSemanticsProviderAbstractTemporal<T> {
         super(FormatIdentifier.TIME, holder, adaptedClass, TYPICAL_LENGTH, Immutability.NOT_IMMUTABLE, EqualByContent.NOT_HONOURED, (T) DEFAULT_VALUE);
 
         final String formatRequired = getConfiguration()
-                .getValue().getFormatOrElse(FormatIdentifier.TIME, null); 
+                .getValue().getFormat().getOrDefault(FormatIdentifier.TIME.name().toLowerCase(), null);
         if (formatRequired == null) {
             format = formats().get(defaultFormat());
         } else {
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
index ee57d58..783f741 100644
--- 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
@@ -43,9 +43,9 @@ abstract class TimeStampValueSemanticsProviderAbstract<T> extends ValueSemantics
     @SuppressWarnings("unchecked")
     public TimeStampValueSemanticsProviderAbstract(final FacetHolder holder, final Class<T> adaptedClass) {
         super(FormatIdentifier.TIMESTAMP, holder, adaptedClass, TYPICAL_LENGTH, Immutability.NOT_IMMUTABLE, EqualByContent.NOT_HONOURED, (T) DEFAULT_VALUE);
-        
+
         final String formatRequired = getConfiguration()
-                .getValue().getFormatOrElse(FormatIdentifier.TIMESTAMP, null);
+                .getValue().getFormat().getOrDefault(FormatIdentifier.TIMESTAMP.name().toLowerCase(), null);
         
         if (formatRequired == null) {
             format = formats().get(defaultFormat());