You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@isis.apache.org by ah...@apache.org on 2022/01/03 10:42:16 UTC

[isis] branch master updated: ISIS-2882: wire-up TemporalValueSemanticsProvider to use Date-/TimeFormatStyleFacet

This is an automated email from the ASF dual-hosted git repository.

ahuber pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/isis.git


The following commit(s) were added to refs/heads/master by this push:
     new 166485e  ISIS-2882: wire-up TemporalValueSemanticsProvider to use Date-/TimeFormatStyleFacet
166485e is described below

commit 166485e2a49a7d64233ca41b7462aeea82a5c118
Author: Andi Huber <ah...@apache.org>
AuthorDate: Mon Jan 3 11:42:05 2022 +0100

    ISIS-2882: wire-up TemporalValueSemanticsProvider to use
    Date-/TimeFormatStyleFacet
---
 .../isis/applib/annotation/ValueSemantics.java     |  2 ++
 .../temporalformatstyle/DateFormatStyleFacet.java  |  3 ++-
 .../temporalformatstyle/TimeFormatStyleFacet.java  |  3 ++-
 .../temporal/TemporalValueSemanticsProvider.java   | 22 +++++++++++++++++++++-
 4 files changed, 27 insertions(+), 3 deletions(-)

diff --git a/api/applib/src/main/java/org/apache/isis/applib/annotation/ValueSemantics.java b/api/applib/src/main/java/org/apache/isis/applib/annotation/ValueSemantics.java
index 3d5961e..17376e0 100644
--- a/api/applib/src/main/java/org/apache/isis/applib/annotation/ValueSemantics.java
+++ b/api/applib/src/main/java/org/apache/isis/applib/annotation/ValueSemantics.java
@@ -90,12 +90,14 @@ public @interface ValueSemantics {
 
     /**
      * If associated with a temporal date value, the style of a localized date.
+     * @see FormatStyle
      */
     FormatStyle dateFormatStyle()
             default FormatStyle.MEDIUM;
 
     /**
      * If associated with a temporal time value, the style of a localized time.
+     * @see FormatStyle
      */
     FormatStyle timeFormatStyle()
             default FormatStyle.MEDIUM;
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/objectvalue/temporalformatstyle/DateFormatStyleFacet.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/objectvalue/temporalformatstyle/DateFormatStyleFacet.java
index a5c5715..d1cbd2b 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/objectvalue/temporalformatstyle/DateFormatStyleFacet.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/objectvalue/temporalformatstyle/DateFormatStyleFacet.java
@@ -25,12 +25,13 @@ import org.apache.isis.core.metamodel.facetapi.Facet;
 
 /**
  * If associated with a temporal date value, the style of a localized date.
+ * @see ValueSemantics#dateFormatStyle()
  */
 public interface DateFormatStyleFacet
 extends Facet {
 
     /**
-     * As provided by {@link ValueSemantics#dateFormatStyle()}
+     * As provided by {@link ValueSemantics#dateFormatStyle()}.
      */
     FormatStyle getDateFormatStyle();
 
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/objectvalue/temporalformatstyle/TimeFormatStyleFacet.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/objectvalue/temporalformatstyle/TimeFormatStyleFacet.java
index 71cc2d9..87bf071 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/objectvalue/temporalformatstyle/TimeFormatStyleFacet.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/objectvalue/temporalformatstyle/TimeFormatStyleFacet.java
@@ -25,12 +25,13 @@ import org.apache.isis.core.metamodel.facetapi.Facet;
 
 /**
  * If associated with a temporal time value, the style of a localized time.
+ * @see ValueSemantics#timeFormatStyle()
  */
 public interface TimeFormatStyleFacet
 extends Facet {
 
     /**
-     * As provided by {@link ValueSemantics#timeFormatStyle()}
+     * As provided by {@link ValueSemantics#timeFormatStyle()}.
      */
     FormatStyle getTimeFormatStyle();
 
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/valuesemantics/temporal/TemporalValueSemanticsProvider.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/valuesemantics/temporal/TemporalValueSemanticsProvider.java
index 47ef101..b072327 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/valuesemantics/temporal/TemporalValueSemanticsProvider.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/valuesemantics/temporal/TemporalValueSemanticsProvider.java
@@ -26,12 +26,17 @@ import java.time.temporal.Temporal;
 import java.time.temporal.TemporalQuery;
 import java.util.function.BiFunction;
 
+import javax.inject.Inject;
+
 import org.apache.isis.applib.exceptions.recoverable.TextEntryParseException;
 import org.apache.isis.applib.value.semantics.EncodingException;
 import org.apache.isis.applib.value.semantics.TemporalValueSemantics;
 import org.apache.isis.applib.value.semantics.ValueSemanticsAbstract;
 import org.apache.isis.applib.value.semantics.ValueSemanticsProvider;
 import org.apache.isis.commons.internal.base._Strings;
+import org.apache.isis.core.metamodel.facets.objectvalue.temporalformatstyle.DateFormatStyleFacet;
+import org.apache.isis.core.metamodel.facets.objectvalue.temporalformatstyle.TimeFormatStyleFacet;
+import org.apache.isis.core.metamodel.specloader.SpecificationLoader;
 
 import lombok.Getter;
 import lombok.NonNull;
@@ -50,6 +55,8 @@ public abstract class TemporalValueSemanticsProvider<T extends Temporal>
 extends ValueSemanticsAbstract<T>
 implements TemporalValueSemantics<T> {
 
+    @Inject protected SpecificationLoader specLoader;
+
     @Getter(onMethod_ = {@Override}) protected final TemporalCharacteristic temporalCharacteristic;
     @Getter(onMethod_ = {@Override}) protected final OffsetCharacteristic offsetCharacteristic;
     @Getter(onMethod_ = {@Override}) @Accessors(fluent = true) protected final int typicalLength;
@@ -177,8 +184,21 @@ implements TemporalValueSemantics<T> {
      * Format for pretty rendering, not used for parsing/editing.
      */
     protected DateTimeFormatter getRenderingFormat(final ValueSemanticsProvider.Context context) {
+
+        val featureIfAny = specLoader.loadFeature(context.getFeatureIdentifier());
+
+        val dateFormatStyle = featureIfAny
+                .flatMap(feature->feature.lookupFacet(DateFormatStyleFacet.class))
+                .map(DateFormatStyleFacet::getDateFormatStyle)
+                .orElse(FormatStyle.MEDIUM);
+
+        val timeFormatStyle = featureIfAny
+                .flatMap(feature->feature.lookupFacet(TimeFormatStyleFacet.class))
+                .map(TimeFormatStyleFacet::getTimeFormatStyle)
+                .orElse(FormatStyle.MEDIUM);
+
         return getTemporalRenderingFormat(
-                context, temporalCharacteristic, offsetCharacteristic, FormatStyle.MEDIUM, FormatStyle.MEDIUM);
+                context, temporalCharacteristic, offsetCharacteristic, dateFormatStyle, timeFormatStyle);
     }
 
     /**