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/08/11 20:03:54 UTC

[isis] branch master updated: ISIS-3119: have ValueSemanticsBasedOnIdStringifierEntityAgnostic implement Renderer and Parser

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 c15f4c99c9 ISIS-3119: have ValueSemanticsBasedOnIdStringifierEntityAgnostic implement Renderer and Parser
c15f4c99c9 is described below

commit c15f4c99c999ccb14e9b7f92915246dd4e4320f5
Author: Andi Huber <ah...@apache.org>
AuthorDate: Fri Aug 12 00:03:49 2022 +0200

    ISIS-3119: have ValueSemanticsBasedOnIdStringifierEntityAgnostic
    implement Renderer and Parser
---
 ...emanticsBasedOnIdStringifierEntityAgnostic.java | 26 ++++++++++++
 .../datanucleus/valuetypes/CaseComposedIdKey.java  | 49 ++++++++++++++++++++++
 .../CaseComposedIdKeyValueSemantics.java           | 22 ++++++++++
 3 files changed, 97 insertions(+)

diff --git a/api/applib/src/main/java/org/apache/isis/applib/value/semantics/ValueSemanticsBasedOnIdStringifierEntityAgnostic.java b/api/applib/src/main/java/org/apache/isis/applib/value/semantics/ValueSemanticsBasedOnIdStringifierEntityAgnostic.java
index e0d589f1ea..9838100e42 100644
--- a/api/applib/src/main/java/org/apache/isis/applib/value/semantics/ValueSemanticsBasedOnIdStringifierEntityAgnostic.java
+++ b/api/applib/src/main/java/org/apache/isis/applib/value/semantics/ValueSemanticsBasedOnIdStringifierEntityAgnostic.java
@@ -34,6 +34,8 @@ import lombok.experimental.Accessors;
 public abstract class ValueSemanticsBasedOnIdStringifierEntityAgnostic<T>
 extends ValueSemanticsAbstract<T>
 implements
+    Renderer<T>,
+    Parser<T>,
     IdStringifier.EntityAgnostic<T> {
 
     @Getter @Accessors(makeFinal = true)
@@ -72,4 +74,28 @@ implements
         return composeFromString(decomposition, this::destring, ()->null);
     }
 
+    // -- RENDERER
+
+    @Override
+    public String titlePresentation(final Context context, final T value) {
+        return value == null ? "" : enstring(value);
+    }
+
+    // -- PARSER
+
+    @Override
+    public String parseableTextRepresentation(final Context context, final T value) {
+        return enstring(value);
+    }
+
+    @Override
+    public T parseTextRepresentation(final Context context, final String text) {
+        return destring(text);
+    }
+
+    @Override
+    public int typicalLength() {
+        return 255;
+    }
+
 }
diff --git a/persistence/jdo/datanucleus/src/main/java/org/apache/isis/persistence/jdo/datanucleus/valuetypes/CaseComposedIdKey.java b/persistence/jdo/datanucleus/src/main/java/org/apache/isis/persistence/jdo/datanucleus/valuetypes/CaseComposedIdKey.java
new file mode 100644
index 0000000000..1debd9d297
--- /dev/null
+++ b/persistence/jdo/datanucleus/src/main/java/org/apache/isis/persistence/jdo/datanucleus/valuetypes/CaseComposedIdKey.java
@@ -0,0 +1,49 @@
+package org.apache.isis.persistence.jdo.datanucleus.valuetypes;
+
+import java.io.Serializable;
+import java.util.StringTokenizer;
+
+public class CaseComposedIdKey implements Serializable{
+    /**
+     *
+     */
+    private static final long serialVersionUID = 1L;
+    public String action;
+    public String caseNumber;
+
+    public CaseComposedIdKey(){
+    }
+
+    /**
+     * Constructor accepting same input as generated by toString().
+     */
+    public CaseComposedIdKey(final String value)
+    {
+        StringTokenizer token = new StringTokenizer (value, "::");
+        this.action = token.nextToken(); // field1
+        this.caseNumber = token.nextToken(); // field2
+    }
+
+    @Override
+    public boolean equals(final Object obj) {
+        if (obj == this) {
+            return true;
+        }
+        if (!(obj instanceof CaseComposedIdKey)) {
+            return false;
+        }
+        CaseComposedIdKey c = (CaseComposedIdKey)obj;
+        return action.equals(c.action)
+                && caseNumber.equals(c.caseNumber);
+    }
+
+    @Override
+    public int hashCode() {
+        return this.action.hashCode() ^ this.caseNumber.hashCode();
+    }
+
+    @Override
+    public String toString() {
+        return this.action + "::" + this.caseNumber;
+    }
+}
diff --git a/persistence/jdo/datanucleus/src/main/java/org/apache/isis/persistence/jdo/datanucleus/valuetypes/CaseComposedIdKeyValueSemantics.java b/persistence/jdo/datanucleus/src/main/java/org/apache/isis/persistence/jdo/datanucleus/valuetypes/CaseComposedIdKeyValueSemantics.java
new file mode 100644
index 0000000000..7b907ff79c
--- /dev/null
+++ b/persistence/jdo/datanucleus/src/main/java/org/apache/isis/persistence/jdo/datanucleus/valuetypes/CaseComposedIdKeyValueSemantics.java
@@ -0,0 +1,22 @@
+package org.apache.isis.persistence.jdo.datanucleus.valuetypes;
+
+import org.springframework.stereotype.Component;
+
+import org.apache.isis.applib.value.semantics.ValueSemanticsBasedOnIdStringifierEntityAgnostic;
+
+import lombok.NonNull;
+
+@Component
+public class CaseComposedIdKeyValueSemantics
+extends ValueSemanticsBasedOnIdStringifierEntityAgnostic<CaseComposedIdKey>{
+
+    protected CaseComposedIdKeyValueSemantics() {
+        super(CaseComposedIdKey.class);
+    }
+
+    @Override
+    public CaseComposedIdKey destring(@NonNull final String stringified) {
+        return new CaseComposedIdKey(stringified);
+    }
+
+}