From c2ad31bb65883dcb0ee328edf67923cbcd6a39a3 Mon Sep 17 00:00:00 2001
From: alaskowski <alaskowski@ethz.ch>
Date: Fri, 2 Jun 2023 10:46:22 +0200
Subject: [PATCH] SSDM-13637: Changed generators to include metadata in Sample
 and SampleType

---
 .../v3/helper/generators/AbstractGenerator.java    | 14 ++++++++++----
 .../asapi/v3/helper/generators/DtoGenerator.java   |  7 +++++++
 .../asapi/v3/helper/generators/Generator.java      |  2 ++
 3 files changed, 19 insertions(+), 4 deletions(-)

diff --git a/server-application-server/source/java/ch/ethz/sis/openbis/generic/server/asapi/v3/helper/generators/AbstractGenerator.java b/server-application-server/source/java/ch/ethz/sis/openbis/generic/server/asapi/v3/helper/generators/AbstractGenerator.java
index ba44d76975a..82e63079ccd 100644
--- a/server-application-server/source/java/ch/ethz/sis/openbis/generic/server/asapi/v3/helper/generators/AbstractGenerator.java
+++ b/server-application-server/source/java/ch/ethz/sis/openbis/generic/server/asapi/v3/helper/generators/AbstractGenerator.java
@@ -120,6 +120,12 @@ public class AbstractGenerator
         gen.addClassForImport(Set.class);
     }
 
+    public static void addMetaData(DtoGenerator gen)
+    {
+        gen.addSimpleField("Map<String, String>", "MetaData", Map.class.getName(), "metaData");
+        gen.addClassForImport(Map.class);
+    }
+
     public static void addProperties(DtoGenerator gen)
     {
         gen.addPluralFetchedField("Map<String, String>", Map.class.getName(), "properties",
@@ -251,21 +257,21 @@ public class AbstractGenerator
         gen.addAdditionalMethod("@Override\n"
                 + "    public void setControlledVocabularyProperty(String propertyName, String propertyValue)\n"
                 + "    {\n"
-                + "        setProperty(propertyName, value);\n"
+                + "        setProperty(propertyName, propertyValue);\n"
                 + "    }");
 
         // Sample
         gen.addAdditionalMethod("@Override\n"
-                + "    public String getSampleProperty(String propertyName)\n"
+                + "    public SamplePermId getSampleProperty(String propertyName)\n"
                 + "    {\n"
                 + "        String propertyValue = getProperty(propertyName);\n"
-                + "        return (propertyValue == null || propertyValue.isBlank()) ? null : new SamplePermId(propertyValue)\n"
+                + "        return (propertyValue == null || propertyValue.isBlank()) ? null : new SamplePermId(propertyValue);\n"
                 + "    }");
 
         gen.addAdditionalMethod("@Override\n"
                 + "    public void setSampleProperty(String propertyName, SamplePermId propertyValue)\n"
                 + "    {\n"
-                + "        setProperty(propertyName, propertyValue == null ? null : propertyValue.getPermId())\n"
+                + "        setProperty(propertyName, propertyValue == null ? null : propertyValue.getPermId());\n"
                 + "    }");
 
         // Hyperlink
diff --git a/server-application-server/source/java/ch/ethz/sis/openbis/generic/server/asapi/v3/helper/generators/DtoGenerator.java b/server-application-server/source/java/ch/ethz/sis/openbis/generic/server/asapi/v3/helper/generators/DtoGenerator.java
index 829583087ee..e9b9cb0c27d 100644
--- a/server-application-server/source/java/ch/ethz/sis/openbis/generic/server/asapi/v3/helper/generators/DtoGenerator.java
+++ b/server-application-server/source/java/ch/ethz/sis/openbis/generic/server/asapi/v3/helper/generators/DtoGenerator.java
@@ -245,6 +245,13 @@ public class DtoGenerator
         fields.add(dtoField);
     }
 
+    public void addSimpleField(String definitionClassName, String name, String fullClassName, String persistentFieldName)
+    {
+        DTOField dtoField = createPlural(name, definitionClassName, fullClassName, null, null);
+        dtoField.persistentFieldName = persistentFieldName;
+        fields.add(dtoField);
+    }
+
     public DTOField addFetchedField(Class<?> c, String name, String description,
             Class<?> fetchOptionsClass)
     {
diff --git a/server-application-server/source/java/ch/ethz/sis/openbis/generic/server/asapi/v3/helper/generators/Generator.java b/server-application-server/source/java/ch/ethz/sis/openbis/generic/server/asapi/v3/helper/generators/Generator.java
index 14d59dc241b..1dadf4b81bd 100644
--- a/server-application-server/source/java/ch/ethz/sis/openbis/generic/server/asapi/v3/helper/generators/Generator.java
+++ b/server-application-server/source/java/ch/ethz/sis/openbis/generic/server/asapi/v3/helper/generators/Generator.java
@@ -234,6 +234,7 @@ public class Generator extends AbstractGenerator
         addRegistrator(gen);
         addModifier(gen);
         addAttachments(gen);
+        addMetaData(gen);
 
         gen.setToStringMethod("\"Sample \" + permId");
 
@@ -265,6 +266,7 @@ public class Generator extends AbstractGenerator
 
         gen.addStringField("generatedCodePrefix");
         addModificationDate(gen);
+        addMetaData(gen);
 
         gen.setToStringMethod("\"SampleType \" + code");
         addPropertyAssignments(gen);
-- 
GitLab