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);
+ }
+
+}