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