diff --git a/.gitignore b/.gitignore
index 15bf058e9..24806f0c7 100644
--- a/.gitignore
+++ b/.gitignore
@@ -50,3 +50,5 @@ bin/
openDMP/dmp-backend/uploads/
openDMP/dmp-backend/tmp/
storage/
+logs/
+dmp-backend/web/src/main/resources/certificates/
diff --git a/dmp-backend/core/pom.xml b/dmp-backend/core/pom.xml
index fd9d90930..ccd2a632e 100644
--- a/dmp-backend/core/pom.xml
+++ b/dmp-backend/core/pom.xml
@@ -15,12 +15,6 @@
UTF-8
-
- dmp-backend
- queryable
- 1.0-SNAPSHOT
- compile
-
org.springframework.boot
spring-boot-starter-validation
@@ -39,6 +33,11 @@
gr.cite.opendmp
repositorydepositbase
1.0.4
+
+
+ gr.cite
+ elastic
+ 2.1.2
org.eclipse.angus
@@ -52,8 +51,8 @@
org.apache.maven.plugins
maven-compiler-plugin
-
- 17
+
+ 21
diff --git a/dmp-backend/core/src/main/java/eu/eudat/audit/AuditableAction.java b/dmp-backend/core/src/main/java/eu/eudat/audit/AuditableAction.java
index d0c5db18f..cefd68566 100644
--- a/dmp-backend/core/src/main/java/eu/eudat/audit/AuditableAction.java
+++ b/dmp-backend/core/src/main/java/eu/eudat/audit/AuditableAction.java
@@ -31,11 +31,16 @@ public class AuditableAction {
public static final EventId Dmp_Lookup = new EventId(5001, "Dmp_Lookup");
public static final EventId Dmp_Persist = new EventId(5002, "Dmp_Persist");
public static final EventId Dmp_Delete = new EventId(5003, "Dmp_Delete");
+ public static final EventId Dmp_Clone = new EventId(5004, "Dmp_Clone");
+ public static final EventId Dmp_PersistNewVersion = new EventId(5005, "Dmp_PersistNewVersion");
+ public static final EventId Dmp_Assign_Users = new EventId(5006, "Dmp_Assign_Users");
public static final EventId Description_Query = new EventId(6000, "Description_Query");
public static final EventId Description_Lookup = new EventId(6001, "Description_Lookup");
public static final EventId Description_Persist = new EventId(6002, "Description_Persist");
public static final EventId Description_Delete = new EventId(6003, "Description_Delete");
+ public static final EventId Description_PublicQuery = new EventId(6004, "Description_PublicQuery");
+ public static final EventId Description_PublicLookup = new EventId(6005, "Description_PublicLookup");
public static final EventId Reference_Query = new EventId(7000, "Reference_Query");
public static final EventId Reference_Lookup = new EventId(7001, "Reference_Lookup");
diff --git a/dmp-backend/core/src/main/java/eu/eudat/authorization/AuthorizationFlags.java b/dmp-backend/core/src/main/java/eu/eudat/authorization/AuthorizationFlags.java
index e87d23b26..e519cf260 100644
--- a/dmp-backend/core/src/main/java/eu/eudat/authorization/AuthorizationFlags.java
+++ b/dmp-backend/core/src/main/java/eu/eudat/authorization/AuthorizationFlags.java
@@ -3,6 +3,6 @@ package eu.eudat.authorization;
import java.util.EnumSet;
public enum AuthorizationFlags {
- None, Permission, Owner;
- public static final EnumSet OwnerOrPermission = EnumSet.of(Owner, Permission);
+ None, Permission, DmpAssociated, Public;
+ public static final EnumSet OwnerOrPermissionOrMemberOrPublic = EnumSet.of(DmpAssociated, Permission, Public);
}
diff --git a/dmp-backend/core/src/main/java/eu/eudat/authorization/Permission.java b/dmp-backend/core/src/main/java/eu/eudat/authorization/Permission.java
index b46db02e1..fec9a1da9 100644
--- a/dmp-backend/core/src/main/java/eu/eudat/authorization/Permission.java
+++ b/dmp-backend/core/src/main/java/eu/eudat/authorization/Permission.java
@@ -50,7 +50,11 @@ public final class Permission {
public static String BrowseDmp = "BrowseDmp";
public static String EditDmp = "EditDmp";
public static String DeleteDmp = "DeleteDmp";
+ public static String CloneDmp = "CloneDmp";
public static String CreateNewVersionDmp = "CreateNewVersionDmp";
+ public static String ExportDmp = "ExportDmp";
+ public static String FinalizeDmp = "FinalizeDmp";
+ public static String AssignDmpUsers = "AssignDmpUsers";
//DmpBlueprint
public static String BrowseDmpBlueprint = "BrowseDmpBlueprint";
@@ -74,6 +78,12 @@ public final class Permission {
public static String BrowseDescription = "BrowseDescription";
public static String EditDescription = "EditDescription";
public static String DeleteDescription = "DeleteDescription";
+ public static String CloneDescription = "CloneDescription";
+
+ //DescriptionTag
+ public static String BrowseDescriptionTag = "BrowseDescriptionTag";
+ public static String EditDescriptionTag = "EditDescriptionTag";
+ public static String DeleteDescriptionTag = "DeleteDescriptionTag";
//DescriptionTemplateType
public static String BrowseEntityDoi = "BrowseEntityDoi";
diff --git a/dmp-backend/core/src/main/java/eu/eudat/commons/enums/DescriptionStatus.java b/dmp-backend/core/src/main/java/eu/eudat/commons/enums/DescriptionStatus.java
index 6a01dcecb..2d3ffa455 100644
--- a/dmp-backend/core/src/main/java/eu/eudat/commons/enums/DescriptionStatus.java
+++ b/dmp-backend/core/src/main/java/eu/eudat/commons/enums/DescriptionStatus.java
@@ -7,7 +7,7 @@ import java.util.Map;
public enum DescriptionStatus implements DatabaseEnum {
- Saved((short) 0),
+ Draft((short) 0),
Finalized((short) 1),
Canceled((short) 2);
diff --git a/dmp-backend/core/src/main/java/eu/eudat/commons/enums/DescriptionTemplateVersionStatus.java b/dmp-backend/core/src/main/java/eu/eudat/commons/enums/DescriptionTemplateVersionStatus.java
new file mode 100644
index 000000000..64f7bd22f
--- /dev/null
+++ b/dmp-backend/core/src/main/java/eu/eudat/commons/enums/DescriptionTemplateVersionStatus.java
@@ -0,0 +1,30 @@
+package eu.eudat.commons.enums;
+
+import com.fasterxml.jackson.annotation.JsonValue;
+import eu.eudat.data.converters.enums.DatabaseEnum;
+
+import java.util.Map;
+
+public enum DescriptionTemplateVersionStatus implements DatabaseEnum {
+
+ Current((short) 0), Previous ((short) 1);
+
+ private final Short value;
+
+ DescriptionTemplateVersionStatus(Short value) {
+ this.value = value;
+ }
+
+ @Override
+ @JsonValue
+ public Short getValue() {
+ return value;
+ }
+
+ private static final Map map = EnumUtils.getEnumValueMap(DescriptionTemplateVersionStatus.class);
+
+ public static DescriptionTemplateVersionStatus of(Short i) {
+ return map.get(i);
+ }
+
+}
diff --git a/dmp-backend/core/src/main/java/eu/eudat/commons/enums/DmpStatus.java b/dmp-backend/core/src/main/java/eu/eudat/commons/enums/DmpStatus.java
index 229942c9e..2083d6baa 100644
--- a/dmp-backend/core/src/main/java/eu/eudat/commons/enums/DmpStatus.java
+++ b/dmp-backend/core/src/main/java/eu/eudat/commons/enums/DmpStatus.java
@@ -7,7 +7,7 @@ import java.util.Map;
public enum DmpStatus implements DatabaseEnum {
- ACTIVE((short) 0), FINALISED((short) 1),DELETED((short) 99);
+ Draft((short) 0), Finalized((short) 1);
private final Short value;
diff --git a/dmp-backend/core/src/main/java/eu/eudat/commons/enums/DmpVersionStatus.java b/dmp-backend/core/src/main/java/eu/eudat/commons/enums/DmpVersionStatus.java
new file mode 100644
index 000000000..7d88cd6cb
--- /dev/null
+++ b/dmp-backend/core/src/main/java/eu/eudat/commons/enums/DmpVersionStatus.java
@@ -0,0 +1,30 @@
+package eu.eudat.commons.enums;
+
+import com.fasterxml.jackson.annotation.JsonValue;
+import eu.eudat.data.converters.enums.DatabaseEnum;
+
+import java.util.Map;
+
+public enum DmpVersionStatus implements DatabaseEnum {
+
+ Current((short) 0), Previous ((short) 1);
+
+ private final Short value;
+
+ DmpVersionStatus(Short value) {
+ this.value = value;
+ }
+
+ @Override
+ @JsonValue
+ public Short getValue() {
+ return value;
+ }
+
+ private static final Map map = EnumUtils.getEnumValueMap(DmpVersionStatus.class);
+
+ public static DmpVersionStatus of(Short i) {
+ return map.get(i);
+ }
+
+}
diff --git a/dmp-backend/core/src/main/java/eu/eudat/commons/enums/ReferenceTypeExternalApiHTTPMethodType.java b/dmp-backend/core/src/main/java/eu/eudat/commons/enums/ReferenceTypeExternalApiHTTPMethodType.java
new file mode 100644
index 000000000..5aed17828
--- /dev/null
+++ b/dmp-backend/core/src/main/java/eu/eudat/commons/enums/ReferenceTypeExternalApiHTTPMethodType.java
@@ -0,0 +1,30 @@
+package eu.eudat.commons.enums;
+
+import com.fasterxml.jackson.annotation.JsonValue;
+import eu.eudat.data.converters.enums.DatabaseEnum;
+import jakarta.xml.bind.annotation.XmlEnumValue;
+
+import java.util.Map;
+
+public enum ReferenceTypeExternalApiHTTPMethodType implements DatabaseEnum {
+ @XmlEnumValue(value = "0")
+ GET((short) 0),
+ @XmlEnumValue(value = "1")
+ POST((short) 1);
+ private final Short value;
+
+ ReferenceTypeExternalApiHTTPMethodType(Short value) {
+ this.value = value;
+ }
+
+ @JsonValue
+ public Short getValue() {
+ return value;
+ }
+
+ private static final Map map = EnumUtils.getEnumValueMap(ReferenceTypeExternalApiHTTPMethodType.class);
+
+ public static ReferenceTypeExternalApiHTTPMethodType of(Short i) {
+ return map.get(i);
+ }
+}
diff --git a/dmp-backend/core/src/main/java/eu/eudat/commons/enums/ReferenceTypeSourceType.java b/dmp-backend/core/src/main/java/eu/eudat/commons/enums/ReferenceTypeSourceType.java
new file mode 100644
index 000000000..3b6ff61f5
--- /dev/null
+++ b/dmp-backend/core/src/main/java/eu/eudat/commons/enums/ReferenceTypeSourceType.java
@@ -0,0 +1,36 @@
+package eu.eudat.commons.enums;
+
+import com.fasterxml.jackson.annotation.JsonValue;
+import eu.eudat.data.converters.enums.DatabaseEnum;
+import jakarta.xml.bind.annotation.XmlEnumValue;
+import jakarta.xml.bind.annotation.XmlValue;
+
+import java.util.Map;
+
+public enum ReferenceTypeSourceType implements DatabaseEnum {
+ @XmlEnumValue(value = "0")
+ API((short) 0),
+ @XmlEnumValue(value = "1")
+ STATIC((short) 1);
+ private final Short value;
+
+ public static class Names {
+ public static final String API = "api";
+ public static final String STATIC = "static";
+ }
+
+ ReferenceTypeSourceType(Short value) {
+ this.value = value;
+ }
+
+ @JsonValue
+ public Short getValue() {
+ return value;
+ }
+
+ private static final Map map = EnumUtils.getEnumValueMap(ReferenceTypeSourceType.class);
+
+ public static ReferenceTypeSourceType of(Short i) {
+ return map.get(i);
+ }
+}
diff --git a/dmp-backend/core/src/main/java/eu/eudat/commons/types/referencetype/AuthenticationConfigurationEntity.java b/dmp-backend/core/src/main/java/eu/eudat/commons/types/referencetype/AuthenticationConfigurationEntity.java
index bd4d1f1b0..4ac464433 100644
--- a/dmp-backend/core/src/main/java/eu/eudat/commons/types/referencetype/AuthenticationConfigurationEntity.java
+++ b/dmp-backend/core/src/main/java/eu/eudat/commons/types/referencetype/AuthenticationConfigurationEntity.java
@@ -1,11 +1,12 @@
package eu.eudat.commons.types.referencetype;
+import eu.eudat.commons.enums.ReferenceTypeExternalApiHTTPMethodType;
import jakarta.xml.bind.annotation.XmlElement;
public class AuthenticationConfigurationEntity {
private String authUrl;
- private String authMethod = "GET";
+ private ReferenceTypeExternalApiHTTPMethodType authMethod;
private String authTokenPath;
private String authRequestBody;
private String type;
@@ -19,12 +20,12 @@ public class AuthenticationConfigurationEntity {
this.authUrl = authUrl;
}
- public String getAuthMethod() {
+ public ReferenceTypeExternalApiHTTPMethodType getAuthMethod() {
return authMethod;
}
@XmlElement(name = "authUrlMethod")
- public void setAuthMethod(String authMethod) {
+ public void setAuthMethod(ReferenceTypeExternalApiHTTPMethodType authMethod) {
this.authMethod = authMethod;
}
@@ -32,7 +33,7 @@ public class AuthenticationConfigurationEntity {
return authTokenPath;
}
- @XmlElement(name = "authTokenJpath")
+ @XmlElement(name = "authTokenPath")
public void setAuthTokenPath(String authTokenPath) {
this.authTokenPath = authTokenPath;
}
diff --git a/dmp-backend/core/src/main/java/eu/eudat/commons/types/referencetype/DataUrlConfigurationEntity.java b/dmp-backend/core/src/main/java/eu/eudat/commons/types/referencetype/DataUrlConfigurationEntity.java
deleted file mode 100644
index f6b06300e..000000000
--- a/dmp-backend/core/src/main/java/eu/eudat/commons/types/referencetype/DataUrlConfigurationEntity.java
+++ /dev/null
@@ -1,70 +0,0 @@
-package eu.eudat.commons.types.referencetype;
-
-import jakarta.xml.bind.annotation.XmlElement;
-import jakarta.xml.bind.annotation.XmlElementWrapper;
-
-import java.util.List;
-
-public class DataUrlConfigurationEntity {
- private String path;
- private DataFieldsUrlConfigurationEntity fieldsUrlConfiguration;
-// private String parseClass;
-// private String parseField;
-// private List mergedFields;
-// private String mergedFieldName;
-
- public String getPath() {
- return path;
- }
-
- @XmlElement(name = "path")
- public void setPath(String path) {
- this.path = path;
- }
-
- public DataFieldsUrlConfigurationEntity getFieldsUrlConfiguration() {
- return fieldsUrlConfiguration;
- }
-
- @XmlElement(name = "fields")
- public void setFieldsUrlConfiguration(DataFieldsUrlConfigurationEntity fieldsUrlConfiguration) {
- this.fieldsUrlConfiguration = fieldsUrlConfiguration;
- }
-
-// public String getParseClass() {
-// return parseClass;
-// }
-//
-// @XmlElement(name = "parse-class")
-// public void setParseClass(String parseClass) {
-// this.parseClass = parseClass;
-// }
-//
-// public String getParseField() {
-// return parseField;
-// }
-//
-// @XmlElement(name = "parse-field")
-// public void setParseField(String parseField) {
-// this.parseField = parseField;
-// }
-//
-// public List getMergedFields() {
-// return mergedFields;
-// }
-//
-// @XmlElementWrapper(name = "merge-fields")
-// @XmlElement(name = "field")
-// public void setMergedFields(List mergedFields) {
-// this.mergedFields = mergedFields;
-// }
-//
-// public String getMergedFieldName() {
-// return mergedFieldName;
-// }
-//
-// @XmlElement(name = "merge-field-name")
-// public void setMergedFieldName(String mergedFieldName) {
-// this.mergedFieldName = mergedFieldName;
-// }
-}
diff --git a/dmp-backend/core/src/main/java/eu/eudat/commons/types/referencetype/ReferenceTypeDefinitionEntity.java b/dmp-backend/core/src/main/java/eu/eudat/commons/types/referencetype/ReferenceTypeDefinitionEntity.java
index a30ba57f9..78de3ab50 100644
--- a/dmp-backend/core/src/main/java/eu/eudat/commons/types/referencetype/ReferenceTypeDefinitionEntity.java
+++ b/dmp-backend/core/src/main/java/eu/eudat/commons/types/referencetype/ReferenceTypeDefinitionEntity.java
@@ -1,5 +1,8 @@
package eu.eudat.commons.types.referencetype;
+import eu.eudat.commons.enums.FieldType;
+import eu.eudat.commons.enums.ReferenceTypeSourceType;
+import eu.eudat.commons.types.descriptiontemplate.importexport.fielddata.*;
import jakarta.xml.bind.annotation.*;
import java.util.List;
@@ -11,9 +14,12 @@ public class ReferenceTypeDefinitionEntity {
@XmlElement(name = "field")
private List fields;
- @XmlElementWrapper(name = "urls")
- @XmlElement(name = "urlConfig")
- private List urlConfig;
+ @XmlElementWrapper(name = "sources")
+ @XmlElements({
+ @XmlElement(name = ReferenceTypeSourceType.Names.API, type = ReferenceTypeSourceExternalApiConfigurationEntity.class),
+ @XmlElement(name = ReferenceTypeSourceType.Names.STATIC, type = ReferenceTypeSourceStaticOptionConfigurationEntity.class),
+ })
+ private List sources;
public List getFields() {
return fields;
@@ -23,11 +29,11 @@ public class ReferenceTypeDefinitionEntity {
this.fields = fields;
}
- public List getUrlConfig() {
- return urlConfig;
+ public List getSources() {
+ return sources;
}
- public void setUrlConfig(List urlConfig) {
- this.urlConfig = urlConfig;
+ public void setSources(List sources) {
+ this.sources = sources;
}
}
diff --git a/dmp-backend/core/src/main/java/eu/eudat/commons/types/referencetype/ReferenceTypeFieldEntity.java b/dmp-backend/core/src/main/java/eu/eudat/commons/types/referencetype/ReferenceTypeFieldEntity.java
index 737add8b6..ae703086b 100644
--- a/dmp-backend/core/src/main/java/eu/eudat/commons/types/referencetype/ReferenceTypeFieldEntity.java
+++ b/dmp-backend/core/src/main/java/eu/eudat/commons/types/referencetype/ReferenceTypeFieldEntity.java
@@ -12,6 +12,12 @@ public class ReferenceTypeFieldEntity {
@XmlAttribute(name = "code")
private String code;
+
+ @XmlAttribute(name = "label")
+ private String label;
+
+ @XmlAttribute(name = "description")
+ private String description;
@XmlAttribute(name = "dataType")
private ReferenceFieldDataType dataType;
@@ -24,6 +30,21 @@ public class ReferenceTypeFieldEntity {
this.code = code;
}
+ public String getLabel() {
+ return label;
+ }
+
+ public void setLabel(String label) {
+ this.label = label;
+ }
+
+ public String getDescription() {
+ return description;
+ }
+
+ public void setDescription(String description) {
+ this.description = description;
+ }
public ReferenceFieldDataType getDataType() {
return dataType;
diff --git a/dmp-backend/core/src/main/java/eu/eudat/commons/types/referencetype/ReferenceTypeSourceBaseConfigurationEntity.java b/dmp-backend/core/src/main/java/eu/eudat/commons/types/referencetype/ReferenceTypeSourceBaseConfigurationEntity.java
new file mode 100644
index 000000000..81faad415
--- /dev/null
+++ b/dmp-backend/core/src/main/java/eu/eudat/commons/types/referencetype/ReferenceTypeSourceBaseConfigurationEntity.java
@@ -0,0 +1,51 @@
+package eu.eudat.commons.types.referencetype;
+
+import eu.eudat.commons.enums.ReferenceTypeSourceType;
+import jakarta.xml.bind.annotation.XmlElement;
+
+public abstract class ReferenceTypeSourceBaseConfigurationEntity {
+
+ private String key;
+
+ private String label;
+
+ private Integer ordinal;
+ private ReferenceTypeSourceType type;
+
+
+ public ReferenceTypeSourceType getType() {
+ return type;
+ }
+
+ public String getKey() {
+ return key;
+ }
+
+ @XmlElement(name = "key")
+ public void setKey(String key) {
+ this.key = key;
+ }
+
+ public String getLabel() {
+ return label;
+ }
+
+ @XmlElement(name = "label")
+ public void setLabel(String label) {
+ this.label = label;
+ }
+
+ public Integer getOrdinal() {
+ return ordinal;
+ }
+
+ @XmlElement(name = "ordinal")
+ public void setOrdinal(Integer ordinal) {
+ this.ordinal = ordinal;
+ }
+
+ @XmlElement(name = "type")
+ public void setType(ReferenceTypeSourceType type) {
+ this.type = type;
+ }
+}
diff --git a/dmp-backend/core/src/main/java/eu/eudat/commons/types/referencetype/ReferenceTypeSourceExternalApiConfigurationEntity.java b/dmp-backend/core/src/main/java/eu/eudat/commons/types/referencetype/ReferenceTypeSourceExternalApiConfigurationEntity.java
new file mode 100644
index 000000000..3fbe81027
--- /dev/null
+++ b/dmp-backend/core/src/main/java/eu/eudat/commons/types/referencetype/ReferenceTypeSourceExternalApiConfigurationEntity.java
@@ -0,0 +1,104 @@
+package eu.eudat.commons.types.referencetype;
+
+
+import eu.eudat.commons.enums.ReferenceTypeExternalApiHTTPMethodType;
+import jakarta.xml.bind.annotation.XmlElement;
+import jakarta.xml.bind.annotation.XmlElementWrapper;
+
+import java.util.List;
+public class ReferenceTypeSourceExternalApiConfigurationEntity extends ReferenceTypeSourceBaseConfigurationEntity {
+
+ private String url;
+ private ResultsConfigurationEntity results;
+ private String paginationPath;
+ private String contentType;
+ private String firstPage;
+ private ReferenceTypeExternalApiHTTPMethodType httpMethod;
+ private String requestBody = "";
+ private String filterType = "remote";
+ private AuthenticationConfigurationEntity auth;
+
+ private List queries;
+
+ public String getUrl() {
+ return url;
+ }
+ @XmlElement(name = "url")
+ public void setUrl(String url) {
+ this.url = url;
+ }
+
+ public ResultsConfigurationEntity getResults() {
+ return results;
+ }
+ @XmlElement(name = "results")
+ public void setResults(ResultsConfigurationEntity results) {
+ this.results = results;
+ }
+
+ public String getPaginationPath() {
+ return paginationPath;
+ }
+ @XmlElement(name = "paginationPath")
+ public void setPaginationPath(String paginationPath) {
+ this.paginationPath = paginationPath;
+ }
+
+
+ public String getContentType() {
+ return contentType;
+ }
+ @XmlElement(name = "contentType")
+ public void setContentType(String contentType) {
+ this.contentType = contentType;
+ }
+
+ public String getFirstPage() {
+ return firstPage;
+ }
+ @XmlElement(name = "firstPage")
+ public void setFirstPage(String firstPage) {
+ this.firstPage = firstPage;
+ }
+
+ public ReferenceTypeExternalApiHTTPMethodType getHttpMethod() {
+ return httpMethod;
+ }
+ @XmlElement(name = "requestHttpMethod")
+ public void setHttpMethod(ReferenceTypeExternalApiHTTPMethodType httpMethod) {
+ this.httpMethod = httpMethod != null ? httpMethod : ReferenceTypeExternalApiHTTPMethodType.GET;
+ }
+ public String getRequestBody() {
+ return requestBody;
+ }
+ @XmlElement(name = "requestBody")
+ public void setRequestBody(String requestBody) {
+ this.requestBody = requestBody != null ? requestBody : "";
+ }
+ public String getFilterType() {
+ return filterType;
+ }
+ @XmlElement(name = "filterType")
+ public void setFilterType(String filterType) {
+ this.filterType = filterType;
+ }
+
+ public List getQueries() {
+ return queries;
+ }
+
+ @XmlElementWrapper
+ @XmlElement(name = "query")
+ public void setQueries(List queries) {
+ this.queries = queries;
+ }
+
+ public AuthenticationConfigurationEntity getAuth() {
+ return auth;
+ }
+
+ @XmlElement(name="authentication")
+ public void setAuth(AuthenticationConfigurationEntity auth) {
+ this.auth = auth;
+ }
+}
diff --git a/dmp-backend/core/src/main/java/eu/eudat/commons/types/referencetype/ReferenceTypeSourceStaticOptionConfigurationEntity.java b/dmp-backend/core/src/main/java/eu/eudat/commons/types/referencetype/ReferenceTypeSourceStaticOptionConfigurationEntity.java
new file mode 100644
index 000000000..99d6b273d
--- /dev/null
+++ b/dmp-backend/core/src/main/java/eu/eudat/commons/types/referencetype/ReferenceTypeSourceStaticOptionConfigurationEntity.java
@@ -0,0 +1,21 @@
+package eu.eudat.commons.types.referencetype;
+
+import jakarta.xml.bind.annotation.XmlElement;
+import jakarta.xml.bind.annotation.XmlElementWrapper;
+
+import java.util.List;
+
+public class ReferenceTypeSourceStaticOptionConfigurationEntity extends ReferenceTypeSourceBaseConfigurationEntity {
+
+ List options;
+
+ public List getOptions() {
+ return options;
+ }
+
+ @XmlElementWrapper
+ @XmlElement(name = "option")
+ public void setOptions(List options) {
+ this.options = options;
+ }
+}
diff --git a/dmp-backend/core/src/main/java/eu/eudat/commons/types/referencetype/ReferenceTypeStaticOptionEntity.java b/dmp-backend/core/src/main/java/eu/eudat/commons/types/referencetype/ReferenceTypeStaticOptionEntity.java
new file mode 100644
index 000000000..e8c4c85bb
--- /dev/null
+++ b/dmp-backend/core/src/main/java/eu/eudat/commons/types/referencetype/ReferenceTypeStaticOptionEntity.java
@@ -0,0 +1,28 @@
+package eu.eudat.commons.types.referencetype;
+
+import jakarta.xml.bind.annotation.XmlElement;
+
+public class ReferenceTypeStaticOptionEntity {
+
+ private String code;
+
+ private String value;
+
+ public String getCode() {
+ return code;
+ }
+
+ @XmlElement(name = "code")
+ public void setCode(String code) {
+ this.code = code;
+ }
+
+ public String getValue() {
+ return value;
+ }
+
+ @XmlElement(name = "value")
+ public void setValue(String value) {
+ this.value = value;
+ }
+}
diff --git a/dmp-backend/core/src/main/java/eu/eudat/commons/types/referencetype/ResultFieldsMappingConfigurationEntity.java b/dmp-backend/core/src/main/java/eu/eudat/commons/types/referencetype/ResultFieldsMappingConfigurationEntity.java
new file mode 100644
index 000000000..28ecf655f
--- /dev/null
+++ b/dmp-backend/core/src/main/java/eu/eudat/commons/types/referencetype/ResultFieldsMappingConfigurationEntity.java
@@ -0,0 +1,27 @@
+package eu.eudat.commons.types.referencetype;
+
+import jakarta.xml.bind.annotation.XmlElement;
+
+public class ResultFieldsMappingConfigurationEntity {
+ private String code;
+ private String responsePath;
+
+ public String getCode() {
+ return code;
+ }
+
+ @XmlElement(name = "code")
+ public void setCode(String code) {
+ this.code = code;
+ }
+
+ public String getResponsePath() {
+ return responsePath;
+ }
+
+ @XmlElement(name = "responsePath")
+ public void setResponsePath(String responsePath) {
+ this.responsePath = responsePath;
+ }
+
+}
diff --git a/dmp-backend/core/src/main/java/eu/eudat/commons/types/referencetype/ResultsConfigurationEntity.java b/dmp-backend/core/src/main/java/eu/eudat/commons/types/referencetype/ResultsConfigurationEntity.java
new file mode 100644
index 000000000..84eec895b
--- /dev/null
+++ b/dmp-backend/core/src/main/java/eu/eudat/commons/types/referencetype/ResultsConfigurationEntity.java
@@ -0,0 +1,31 @@
+package eu.eudat.commons.types.referencetype;
+
+import jakarta.xml.bind.annotation.XmlElement;
+import jakarta.xml.bind.annotation.XmlElementWrapper;
+
+import java.util.List;
+
+public class ResultsConfigurationEntity {
+ private String resultsArrayPath;
+ private List fieldsMapping;
+
+ public String getResultsArrayPath() {
+ return resultsArrayPath;
+ }
+
+ @XmlElement(name = "resultsArrayPath")
+ public void setResultsArrayPath(String resultsArrayPath) {
+ this.resultsArrayPath = resultsArrayPath;
+ }
+
+ public List getFieldsMapping() {
+ return fieldsMapping;
+ }
+
+ @XmlElementWrapper
+ @XmlElement(name = "field")
+ public void setFieldsMapping(List fieldsMapping) {
+ this.fieldsMapping = fieldsMapping;
+ }
+
+}
diff --git a/dmp-backend/core/src/main/java/eu/eudat/configurations/elastic/AppElasticConfiguration.java b/dmp-backend/core/src/main/java/eu/eudat/configurations/elastic/AppElasticConfiguration.java
new file mode 100644
index 000000000..cb1785a28
--- /dev/null
+++ b/dmp-backend/core/src/main/java/eu/eudat/configurations/elastic/AppElasticConfiguration.java
@@ -0,0 +1,20 @@
+package eu.eudat.configurations.elastic;
+
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.boot.context.properties.EnableConfigurationProperties;
+import org.springframework.context.annotation.Configuration;
+
+@Configuration
+@EnableConfigurationProperties(AppElasticProperties.class)
+public class AppElasticConfiguration {
+ private final AppElasticProperties properties;
+
+ @Autowired
+ public AppElasticConfiguration(AppElasticProperties properties) {
+ this.properties = properties;
+ }
+
+ public AppElasticProperties getProperties() {
+ return properties;
+ }
+}
diff --git a/dmp-backend/core/src/main/java/eu/eudat/configurations/elastic/AppElasticProperties.java b/dmp-backend/core/src/main/java/eu/eudat/configurations/elastic/AppElasticProperties.java
new file mode 100644
index 000000000..3d69932ae
--- /dev/null
+++ b/dmp-backend/core/src/main/java/eu/eudat/configurations/elastic/AppElasticProperties.java
@@ -0,0 +1,43 @@
+package eu.eudat.configurations.elastic;
+
+import org.springframework.boot.context.properties.ConfigurationProperties;
+
+@ConfigurationProperties(prefix = "app-elastic")
+public class AppElasticProperties {
+ private boolean enabled;
+ private String dmpIndexName;
+ private String descriptionIndexName;
+ private boolean enableIcuAnalysisPlugin;
+
+ public String getDmpIndexName() {
+ return dmpIndexName;
+ }
+
+ public void setDmpIndexName(String dmpIndexName) {
+ this.dmpIndexName = dmpIndexName;
+ }
+
+ public boolean isEnableIcuAnalysisPlugin() {
+ return enableIcuAnalysisPlugin;
+ }
+
+ public void setEnableIcuAnalysisPlugin(boolean enableIcuAnalysisPlugin) {
+ this.enableIcuAnalysisPlugin = enableIcuAnalysisPlugin;
+ }
+
+ public boolean isEnabled() {
+ return enabled;
+ }
+
+ public void setEnabled(boolean enabled) {
+ this.enabled = enabled;
+ }
+
+ public String getDescriptionIndexName() {
+ return descriptionIndexName;
+ }
+
+ public void setDescriptionIndexName(String descriptionIndexName) {
+ this.descriptionIndexName = descriptionIndexName;
+ }
+}
diff --git a/dmp-backend/core/src/main/java/eu/eudat/configurations/typedefinition/PostgreSQLEnumType.java b/dmp-backend/core/src/main/java/eu/eudat/configurations/typedefinition/PostgreSQLEnumType.java
deleted file mode 100644
index 20be832a8..000000000
--- a/dmp-backend/core/src/main/java/eu/eudat/configurations/typedefinition/PostgreSQLEnumType.java
+++ /dev/null
@@ -1,31 +0,0 @@
-package eu.eudat.configurations.typedefinition;
-
-import org.hibernate.HibernateException;
-import org.hibernate.engine.spi.SharedSessionContractImplementor;
-
-import java.sql.PreparedStatement;
-import java.sql.SQLException;
-import java.sql.Types;
-
-/**
- * @deprecated hibernate's abstract class is depricated and those type of conversions and checks
- * are done by hibernate itself
- */
-@Deprecated
-public class PostgreSQLEnumType extends org.hibernate.type.EnumType {
-
- public void nullSafeSet(
- PreparedStatement st,
- Object value,
- int index,
- SharedSessionContractImplementor session)
- throws HibernateException, SQLException {
- st.setObject(
- index,
- value != null ?
- ((Enum) value).name() :
- null,
- Types.OTHER
- );
- }
-}
\ No newline at end of file
diff --git a/dmp-backend/core/src/main/java/eu/eudat/configurations/typedefinition/UUIDType.java b/dmp-backend/core/src/main/java/eu/eudat/configurations/typedefinition/UUIDType.java
deleted file mode 100644
index 042fed955..000000000
--- a/dmp-backend/core/src/main/java/eu/eudat/configurations/typedefinition/UUIDType.java
+++ /dev/null
@@ -1,118 +0,0 @@
-package eu.eudat.configurations.typedefinition;
-
-import org.hibernate.HibernateException;
-import org.hibernate.engine.spi.SharedSessionContractImplementor;
-import org.hibernate.usertype.UserType;
-
-import java.io.Serializable;
-import java.sql.PreparedStatement;
-import java.sql.ResultSet;
-import java.sql.SQLException;
-import java.sql.Types;
-import java.util.UUID;
-
-/**
- * Currently not used
- */
-public class UUIDType implements UserType {
- private final int[] sqlTypesSupported = new int[]{Types.NUMERIC};
- private final String CAST_EXCEPTION_TEXT = " cannot be cast to a java.util.UUID";
-
- public int[] sqlTypes() {
- return sqlTypesSupported;
- }
-
- @Override
- public int getSqlType() {
- return sqlTypesSupported[0];
- }
-
- public Class returnedClass() {
- return UUID.class;
- }
-
- public boolean equals(UUID x, UUID y) throws HibernateException {
- if (x == null) return y == null;
- else return x.equals(y);
- }
-
- public int hashCode(UUID x) throws HibernateException {
- return x == null ? -1 : x.hashCode();
- }
-
- @Override
- public UUID nullSafeGet(ResultSet rs, int position, SharedSessionContractImplementor session, Object owner) throws SQLException {
- assert (position >= 0);
- Object value = rs.getObject(position);
- if (value == null) return null;
-
- UUID uuid = UUID.fromString(rs.getString(position));
- return rs.wasNull() ? null : uuid;
- }
-
- public Object nullSafeGet(ResultSet rs, String[] names, Object owner) throws HibernateException, SQLException {
- assert (names.length == 1);
- Object value = rs.getObject(names[0]);
- if (value == null) return null;
-
- UUID uuid = UUID.fromString(rs.getString(names[0]));
- return rs.wasNull() ? null : uuid;
- }
-
- public void nullSafeSet(PreparedStatement st, Object value, int index) throws HibernateException, SQLException {
- if (value == null) {
- st.setNull(index, Types.NULL);
- return;
- }
-
- if (!UUID.class.isAssignableFrom(value.getClass()))
- throw new HibernateException(value.getClass().toString() + CAST_EXCEPTION_TEXT);
-
- UUID uuid = (UUID) value;
- st.setObject(index, uuid, Types.OTHER);
- }
-
- public UUID deepCopy(UUID value) throws HibernateException {
- if (value == null) return null;
- return new UUID(value.getMostSignificantBits(), value.getLeastSignificantBits());
- }
-
- public boolean isMutable() {
- return false;
- }
-
- public Serializable disassemble(UUID value) throws HibernateException {
- return value;
- }
-
- public UUID assemble(Serializable cached, Object owner) throws HibernateException {
- return (UUID) cached;
- }
-
- public UUID replace(UUID original, Object target, Object owner) throws HibernateException {
- return original;
- }
-
-// public Object nullSafeGet(ResultSet rs, String[] names, SessionImplementor session, Object owner)
-// throws HibernateException, SQLException
-// {
-// return nullSafeGet(rs, names, owner);
-// }
-//
-// public void nullSafeSet(PreparedStatement st, Object value, int index, SessionImplementor session)
-// throws HibernateException, SQLException
-// {
-// nullSafeSet(st, value, index);
-//
-// }
-
- public Object nullSafeGet(ResultSet rs, String[] names, SharedSessionContractImplementor session, Object owner)
- throws HibernateException, SQLException {
- return nullSafeGet(rs, names, owner);
- }
-
- public void nullSafeSet(PreparedStatement st, UUID value, int index, SharedSessionContractImplementor session)
- throws HibernateException, SQLException {
- nullSafeSet(st, value, index);
- }
-}
\ No newline at end of file
diff --git a/dmp-backend/core/src/main/java/eu/eudat/configurations/typedefinition/XMLType.java b/dmp-backend/core/src/main/java/eu/eudat/configurations/typedefinition/XMLType.java
deleted file mode 100644
index ea4b1f9d0..000000000
--- a/dmp-backend/core/src/main/java/eu/eudat/configurations/typedefinition/XMLType.java
+++ /dev/null
@@ -1,95 +0,0 @@
-package eu.eudat.configurations.typedefinition;
-
-import org.hibernate.HibernateException;
-import org.hibernate.engine.spi.SharedSessionContractImplementor;
-import org.hibernate.usertype.UserType;
-
-import java.io.Serializable;
-import java.sql.PreparedStatement;
-import java.sql.ResultSet;
-import java.sql.SQLException;
-import java.sql.Types;
-
-/**
- * Store and retrieve a PostgreSQL "xml" column as a Java string.
- */
-public class XMLType implements UserType {
-
- private final int[] sqlTypesSupported = new int[]{Types.VARCHAR};
-
- public int[] sqlTypes() {
- return sqlTypesSupported;
- }
-
- @Override
- public int getSqlType() {
- return sqlTypesSupported[0];
- }
-
- public Class returnedClass() {
- return String.class;
- }
-
- public boolean equals(String x, String y) throws HibernateException {
- if (x == null) {
- return y == null;
- } else {
- return x.equals(y);
- }
- }
-
- public int hashCode(String x) throws HibernateException {
- return x == null ? -1 : x.hashCode();
- }
-
- @Override
- public String nullSafeGet(ResultSet resultSet, int i, SharedSessionContractImplementor sharedSessionContractImplementor, Object o) throws SQLException {
- assert (i >= 0);
- String xmldoc = resultSet.getString(i);
- return resultSet.wasNull() ? null : xmldoc;
- }
-
- public Object nullSafeGet(ResultSet rs, String[] names, Object owner) throws HibernateException, SQLException {
- assert (names.length == 1);
- String xmldoc = rs.getString(names[0]);
- return rs.wasNull() ? null : xmldoc;
- }
-
- public void nullSafeSet(PreparedStatement st, Object value, int index) throws HibernateException, SQLException {
- if (value == null) {
- st.setNull(index, Types.OTHER);
- } else {
- st.setObject(index, value, Types.OTHER);
- }
- }
-
- public String deepCopy(String value) throws HibernateException {
- return value;
- }
-
- public boolean isMutable() {
- return false;
- }
-
- public Serializable disassemble(String value) throws HibernateException {
- return value;
- }
-
- public String assemble(Serializable cached, Object owner) throws HibernateException {
- return (String) cached;
- }
-
- public String replace(String original, String target, Object owner) throws HibernateException {
- return original;
- }
-
- public Object nullSafeGet(ResultSet rs, String[] names, SharedSessionContractImplementor session, Object owner)
- throws HibernateException, SQLException {
- return nullSafeGet(rs, names, owner);
- }
-
- public void nullSafeSet(PreparedStatement st, String value, int index, SharedSessionContractImplementor session) throws HibernateException, SQLException {
- nullSafeSet(st, value, index);
- }
-
-}
\ No newline at end of file
diff --git a/dmp-backend/core/src/main/java/eu/eudat/data/CredentialEntity.java b/dmp-backend/core/src/main/java/eu/eudat/data/CredentialEntity.java
index a95d73200..062ac9029 100644
--- a/dmp-backend/core/src/main/java/eu/eudat/data/CredentialEntity.java
+++ b/dmp-backend/core/src/main/java/eu/eudat/data/CredentialEntity.java
@@ -7,7 +7,7 @@ import eu.eudat.data.converters.DateToUTCConverter;
import eu.eudat.data.converters.enums.ProviderTypeConverter;
import eu.eudat.data.converters.enums.IsActiveConverter;
import eu.eudat.data.old.helpers.EntityBinder;
-import eu.eudat.queryable.queryableentity.DataEntity;
+import eu.eudat.data.old.queryableentity.DataEntity;
import jakarta.persistence.*;
import java.util.Date;
import java.util.List;
diff --git a/dmp-backend/core/src/main/java/eu/eudat/data/DescriptionEntity.java b/dmp-backend/core/src/main/java/eu/eudat/data/DescriptionEntity.java
index d9af6478a..833d6215f 100644
--- a/dmp-backend/core/src/main/java/eu/eudat/data/DescriptionEntity.java
+++ b/dmp-backend/core/src/main/java/eu/eudat/data/DescriptionEntity.java
@@ -7,7 +7,7 @@ import eu.eudat.data.converters.DateToUTCConverter;
import eu.eudat.data.converters.enums.DescriptionStatusConverter;
import eu.eudat.data.converters.enums.IsActiveConverter;
import eu.eudat.data.old.helpers.EntityBinder;
-import eu.eudat.queryable.queryableentity.DataEntity;
+import eu.eudat.data.old.queryableentity.DataEntity;
import jakarta.persistence.*;
@@ -40,7 +40,6 @@ public class DescriptionEntity implements DataEntity {
@Column(name = "status", nullable = false)
@Convert(converter = DescriptionStatusConverter.class)
private DescriptionStatus status;
-
public static final String _status = "status";
@Column(name = "description")
@@ -77,8 +76,12 @@ public class DescriptionEntity implements DataEntity {
@Column(name = "dmp_description_template", columnDefinition = "uuid", nullable = false)
private UUID dmpDescriptionTemplateId;
-
public static final String _dmpDescriptionTemplateId = "dmpDescriptionTemplateId";
+
+ @Column(name = "dmp", columnDefinition = "uuid", nullable = false)
+ private UUID dmpId;
+
+ public static final String _dmpId = "dmpId";
public UUID getId() {
return id;
@@ -168,6 +171,14 @@ public class DescriptionEntity implements DataEntity {
this.dmpDescriptionTemplateId = dmpDescriptionTemplateId;
}
+ public UUID getDmpId() {
+ return dmpId;
+ }
+
+ public void setDmpId(UUID dmpId) {
+ this.dmpId = dmpId;
+ }
+
@Override
public void update(DescriptionEntity entity) {
// this.setUri(entity.getUri());
diff --git a/dmp-backend/core/src/main/java/eu/eudat/data/DescriptionReferenceEntity.java b/dmp-backend/core/src/main/java/eu/eudat/data/DescriptionReferenceEntity.java
index b4f4cecef..f630f2543 100644
--- a/dmp-backend/core/src/main/java/eu/eudat/data/DescriptionReferenceEntity.java
+++ b/dmp-backend/core/src/main/java/eu/eudat/data/DescriptionReferenceEntity.java
@@ -34,13 +34,11 @@ public class DescriptionReferenceEntity {
public static final String _referenceId = "referenceId";
@Column(name = "created_at")
- @Convert(converter = DateToUTCConverter.class)
private Instant createdAt;
public static final String _createdAt = "createdAt";
@Column(name = "updated_at")
- @Convert(converter = DateToUTCConverter.class)
private Instant updatedAt;
public static final String _updatedAt = "updatedAt";
diff --git a/dmp-backend/core/src/main/java/eu/eudat/data/DescriptionTemplateEntity.java b/dmp-backend/core/src/main/java/eu/eudat/data/DescriptionTemplateEntity.java
index d3cc5145c..591413e69 100644
--- a/dmp-backend/core/src/main/java/eu/eudat/data/DescriptionTemplateEntity.java
+++ b/dmp-backend/core/src/main/java/eu/eudat/data/DescriptionTemplateEntity.java
@@ -2,15 +2,17 @@ package eu.eudat.data;
import eu.eudat.commons.enums.DescriptionTemplateStatus;
+import eu.eudat.commons.enums.DescriptionTemplateVersionStatus;
import eu.eudat.commons.enums.IsActive;
import eu.eudat.data.converters.enums.DescriptionTemplateStatusConverter;
+import eu.eudat.data.converters.enums.DescriptionTemplateVersionStatusConverter;
import eu.eudat.data.converters.enums.IsActiveConverter;
-import eu.eudat.queryable.queryableentity.DataEntity;
+import eu.eudat.data.old.queryableentity.DataEntity;
import jakarta.persistence.*;
-import org.hibernate.annotations.Type;
import java.time.Instant;
-import java.util.*;
+import java.util.List;
+import java.util.UUID;
@Entity
@@ -26,8 +28,7 @@ public class DescriptionTemplateEntity implements DataEntity {
@Id
@Column(name = "id", updatable = false, nullable = false, columnDefinition = "BINARY(16)")
@@ -106,4 +106,18 @@ public class DmpDescriptionTemplateEntity {
this.isActive = isActive;
}
+ @Override
+ public void update(DmpDescriptionTemplateEntity entity) {
+
+ }
+
+ @Override
+ public UUID getKeys() {
+ return null;
+ }
+
+ @Override
+ public DmpDescriptionTemplateEntity buildFromTuple(List tuple, List fields, String base) {
+ return null;
+ }
}
diff --git a/dmp-backend/core/src/main/java/eu/eudat/data/DmpEntity.java b/dmp-backend/core/src/main/java/eu/eudat/data/DmpEntity.java
index 27bd32e3e..4c9e03fb0 100644
--- a/dmp-backend/core/src/main/java/eu/eudat/data/DmpEntity.java
+++ b/dmp-backend/core/src/main/java/eu/eudat/data/DmpEntity.java
@@ -2,18 +2,22 @@ package eu.eudat.data;
import eu.eudat.commons.enums.DmpAccessType;
import eu.eudat.commons.enums.DmpStatus;
+import eu.eudat.commons.enums.DmpVersionStatus;
import eu.eudat.commons.enums.IsActive;
import eu.eudat.data.converters.DateToUTCConverter;
+import eu.eudat.data.converters.enums.DmpAccessTypeConverter;
import eu.eudat.data.converters.enums.DmpStatusConverter;
import eu.eudat.data.converters.enums.IsActiveConverter;
+import eu.eudat.data.old.queryableentity.DataEntity;
import jakarta.persistence.*;
import java.time.Instant;
+import java.util.List;
import java.util.UUID;
@Entity
@Table(name = "\"Dmp\"")
-public class DmpEntity {
+public class DmpEntity implements DataEntity {
@Id
@Column(name = "id", updatable = false, nullable = false, columnDefinition = "BINARY(16)")
@@ -31,6 +35,12 @@ public class DmpEntity {
public static final String _version = "version";
+ @Column(name = "version_status", nullable = false)
+ @Convert(converter = DmpStatusConverter.class)
+ private DmpVersionStatus versionStatus;
+
+ public static final String _versionStatus = "versionStatus";
+
@Column(name = "status", nullable = false)
@Convert(converter = DmpStatusConverter.class)
private DmpStatus status;
@@ -71,7 +81,6 @@ public class DmpEntity {
public static final String _isActive = "isActive";
@Column(name = "finalized_at")
- @Convert(converter = DateToUTCConverter.class)
private Instant finalizedAt;
public static final String _finalizedAt = "finalizedAt";
@@ -81,8 +90,8 @@ public class DmpEntity {
public static final String _creator = "creator";
- @Enumerated(EnumType.STRING)
@Column(name = "access_type", nullable = false)
+ @Convert(converter = DmpAccessTypeConverter.class)
private DmpAccessType accessType;
public static final String _accessType = "accessType";
@@ -98,7 +107,6 @@ public class DmpEntity {
public static final String _language = "language";
@Column(name = "public_after")
- @Convert(converter = DateToUTCConverter.class)
private Instant publicAfter;
public static final String _publicAfter = "publicAfter";
@@ -230,4 +238,28 @@ public class DmpEntity {
public void setPublicAfter(Instant publicAfter) {
this.publicAfter = publicAfter;
}
+
+ public DmpVersionStatus getVersionStatus() {
+ return versionStatus;
+ }
+
+ public void setVersionStatus(DmpVersionStatus versionStatus) {
+ this.versionStatus = versionStatus;
+ }
+
+
+ @Override
+ public void update(DmpEntity entity) {
+
+ }
+
+ @Override
+ public UUID getKeys() {
+ return null;
+ }
+
+ @Override
+ public DmpEntity buildFromTuple(List tuple, List fields, String base) {
+ return null;
+ }
}
diff --git a/dmp-backend/core/src/main/java/eu/eudat/data/DmpUserEntity.java b/dmp-backend/core/src/main/java/eu/eudat/data/DmpUserEntity.java
index 39c0dc146..f1ae5c75b 100644
--- a/dmp-backend/core/src/main/java/eu/eudat/data/DmpUserEntity.java
+++ b/dmp-backend/core/src/main/java/eu/eudat/data/DmpUserEntity.java
@@ -4,13 +4,16 @@ import eu.eudat.commons.enums.DmpUserRole;
import eu.eudat.commons.enums.IsActive;
import eu.eudat.data.converters.enums.DmpUserRoleConverter;
import eu.eudat.data.converters.enums.IsActiveConverter;
+import eu.eudat.data.old.queryableentity.DataEntity;
import jakarta.persistence.*;
import java.time.Instant;
+import java.util.List;
import java.util.UUID;
+@Entity
@Table(name = "\"DmpUser\"")
-public class DmpUserEntity {
+public class DmpUserEntity implements DataEntity {
@Id
@Column(name = "id", updatable = false, nullable = false, columnDefinition = "BINARY(16)")
@@ -28,7 +31,7 @@ public class DmpUserEntity {
public static final String _user = "user";
- @Column(name = "status", nullable = false)
+ @Column(name = "role", nullable = false)
@Convert(converter = DmpUserRoleConverter.class)
private DmpUserRole role;
@@ -106,4 +109,18 @@ public class DmpUserEntity {
this.isActive = isActive;
}
+ @Override
+ public void update(Object entity) {
+
+ }
+
+ @Override
+ public Object getKeys() {
+ return null;
+ }
+
+ @Override
+ public Object buildFromTuple(List tuple, List fields, String base) {
+ return null;
+ }
}
diff --git a/dmp-backend/core/src/main/java/eu/eudat/data/EntityDoiEntity.java b/dmp-backend/core/src/main/java/eu/eudat/data/EntityDoiEntity.java
index 2fd0edb7a..c096414b4 100644
--- a/dmp-backend/core/src/main/java/eu/eudat/data/EntityDoiEntity.java
+++ b/dmp-backend/core/src/main/java/eu/eudat/data/EntityDoiEntity.java
@@ -2,14 +2,11 @@ package eu.eudat.data;
import eu.eudat.commons.enums.EntityType;
import eu.eudat.commons.enums.IsActive;
-import eu.eudat.data.converters.DateToUTCConverter;
import eu.eudat.data.converters.enums.EntityTypeConverter;
import eu.eudat.data.converters.enums.IsActiveConverter;
-import eu.eudat.data.old.DMP;
import jakarta.persistence.*;
import java.time.Instant;
-import java.util.Date;
import java.util.UUID;
@Entity
diff --git a/dmp-backend/core/src/main/java/eu/eudat/data/ReferenceEntity.java b/dmp-backend/core/src/main/java/eu/eudat/data/ReferenceEntity.java
index 060ac36a3..f7e2cf4eb 100644
--- a/dmp-backend/core/src/main/java/eu/eudat/data/ReferenceEntity.java
+++ b/dmp-backend/core/src/main/java/eu/eudat/data/ReferenceEntity.java
@@ -7,7 +7,6 @@ import eu.eudat.data.converters.enums.ReferenceSourceTypeConverter;
import eu.eudat.data.converters.enums.ReferenceTypeConverter;
import eu.eudat.data.converters.enums.IsActiveConverter;
import jakarta.persistence.*;
-import org.hibernate.annotations.Type;
import java.time.Instant;
import java.util.UUID;
@@ -34,8 +33,7 @@ public class ReferenceEntity {
private String description;
public static final String _description = "description";
- @Type(eu.eudat.configurations.typedefinition.XMLType.class)
- @Column(name = "definition", columnDefinition = "xml")
+ @Column(name = "definition")
private String definition;
public static final String _definition = "definition";
diff --git a/dmp-backend/core/src/main/java/eu/eudat/data/ReferenceTypeEntity.java b/dmp-backend/core/src/main/java/eu/eudat/data/ReferenceTypeEntity.java
index b2b02b94d..d89702024 100644
--- a/dmp-backend/core/src/main/java/eu/eudat/data/ReferenceTypeEntity.java
+++ b/dmp-backend/core/src/main/java/eu/eudat/data/ReferenceTypeEntity.java
@@ -3,7 +3,6 @@ package eu.eudat.data;
import eu.eudat.commons.enums.IsActive;
import eu.eudat.data.converters.enums.IsActiveConverter;
import jakarta.persistence.*;
-import org.hibernate.annotations.Type;
import java.time.Instant;
import java.util.UUID;
@@ -25,8 +24,7 @@ public class ReferenceTypeEntity {
private String code;
public static final String _code = "code";
- @Type(eu.eudat.configurations.typedefinition.XMLType.class)
- @Column(name = "definition", columnDefinition = "xml")
+ @Column(name = "definition")
private String definition;
public static final String _definition = "definition";
diff --git a/dmp-backend/core/src/main/java/eu/eudat/data/TagEntity.java b/dmp-backend/core/src/main/java/eu/eudat/data/TagEntity.java
index 9f61b80cc..4887c4207 100644
--- a/dmp-backend/core/src/main/java/eu/eudat/data/TagEntity.java
+++ b/dmp-backend/core/src/main/java/eu/eudat/data/TagEntity.java
@@ -1,16 +1,11 @@
package eu.eudat.data;
-import eu.eudat.commons.enums.DescriptionTemplateStatus;
import eu.eudat.commons.enums.IsActive;
-import eu.eudat.data.converters.enums.DescriptionTemplateStatusConverter;
import eu.eudat.data.converters.enums.IsActiveConverter;
-import eu.eudat.queryable.queryableentity.DataEntity;
import jakarta.persistence.*;
-import org.hibernate.annotations.Type;
import java.time.Instant;
-import java.util.List;
import java.util.UUID;
diff --git a/dmp-backend/core/src/main/java/eu/eudat/data/UserDescriptionTemplateEntity.java b/dmp-backend/core/src/main/java/eu/eudat/data/UserDescriptionTemplateEntity.java
index c7d0928cc..41c56bd93 100644
--- a/dmp-backend/core/src/main/java/eu/eudat/data/UserDescriptionTemplateEntity.java
+++ b/dmp-backend/core/src/main/java/eu/eudat/data/UserDescriptionTemplateEntity.java
@@ -5,7 +5,7 @@ import eu.eudat.commons.enums.UserDescriptionTemplateRole;
import eu.eudat.data.converters.enums.IsActiveConverter;
import eu.eudat.data.converters.enums.UserDescriptionTemplateRoleConverter;
import eu.eudat.data.old.helpers.EntityBinder;
-import eu.eudat.queryable.queryableentity.DataEntity;
+import eu.eudat.data.old.queryableentity.DataEntity;
import jakarta.persistence.*;
import java.time.Instant;
diff --git a/dmp-backend/core/src/main/java/eu/eudat/data/converters/enums/DescriptionTemplateVersionStatusConverter.java b/dmp-backend/core/src/main/java/eu/eudat/data/converters/enums/DescriptionTemplateVersionStatusConverter.java
new file mode 100644
index 000000000..13cab537f
--- /dev/null
+++ b/dmp-backend/core/src/main/java/eu/eudat/data/converters/enums/DescriptionTemplateVersionStatusConverter.java
@@ -0,0 +1,11 @@
+package eu.eudat.data.converters.enums;
+
+import eu.eudat.commons.enums.DescriptionTemplateVersionStatus;
+import jakarta.persistence.Converter;
+
+@Converter
+public class DescriptionTemplateVersionStatusConverter extends DatabaseEnumConverter{
+ protected DescriptionTemplateVersionStatus of(Short i) {
+ return DescriptionTemplateVersionStatus.of(i);
+ }
+}
diff --git a/dmp-backend/core/src/main/java/eu/eudat/data/converters/enums/DmpVersionStatusConverter.java b/dmp-backend/core/src/main/java/eu/eudat/data/converters/enums/DmpVersionStatusConverter.java
new file mode 100644
index 000000000..2149a9082
--- /dev/null
+++ b/dmp-backend/core/src/main/java/eu/eudat/data/converters/enums/DmpVersionStatusConverter.java
@@ -0,0 +1,14 @@
+package eu.eudat.data.converters.enums;
+
+import eu.eudat.commons.enums.DmpVersionStatus;
+import jakarta.persistence.Converter;
+
+@Converter
+public class DmpVersionStatusConverter extends DatabaseEnumConverter {
+
+ @Override
+ protected DmpVersionStatus of(Short i) {
+ return DmpVersionStatus.of(i);
+ }
+
+}
diff --git a/dmp-backend/core/src/main/java/eu/eudat/data/old/Content.java b/dmp-backend/core/src/main/java/eu/eudat/data/old/Content.java
index 8e31ae9b7..2528a14df 100644
--- a/dmp-backend/core/src/main/java/eu/eudat/data/old/Content.java
+++ b/dmp-backend/core/src/main/java/eu/eudat/data/old/Content.java
@@ -1,8 +1,7 @@
package eu.eudat.data.old;
import eu.eudat.data.old.helpers.EntityBinder;
-import eu.eudat.queryable.queryableentity.DataEntity;
-import org.hibernate.annotations.GenericGenerator;
+import eu.eudat.data.old.queryableentity.DataEntity;
import jakarta.persistence.*;
import java.util.List;
@@ -65,7 +64,6 @@ public class Content implements DataEntity { //IGNORE ME
@Id
@GeneratedValue
- @GenericGenerator(name = "uuid2", strategy = "uuid2")
@Column(name = "\"Id\"", updatable = false, nullable = false, columnDefinition = "BINARY(16)")
private UUID id;
diff --git a/dmp-backend/core/src/main/java/eu/eudat/data/old/DataRepository.java b/dmp-backend/core/src/main/java/eu/eudat/data/old/DataRepository.java
index be5b0d4f4..1ebe24bad 100644
--- a/dmp-backend/core/src/main/java/eu/eudat/data/old/DataRepository.java
+++ b/dmp-backend/core/src/main/java/eu/eudat/data/old/DataRepository.java
@@ -2,14 +2,12 @@ package eu.eudat.data.old;
import eu.eudat.data.old.helpers.EntityBinder;
-import eu.eudat.queryable.queryableentity.DataEntity;
-import org.hibernate.annotations.Type;
+import eu.eudat.data.old.queryableentity.DataEntity;
import jakarta.persistence.*;
import java.io.Serializable;
import java.util.Date;
import java.util.List;
-import java.util.Set;
import java.util.UUID;
@Entity
@@ -32,8 +30,7 @@ public class DataRepository implements Serializable, DataEntity {
@Id
@GeneratedValue
- @GenericGenerator(name = "uuid2", strategy = "uuid2")
@Column(name = "\"ID\"", updatable = false, nullable = false)
private UUID id;
diff --git a/dmp-backend/core/src/main/java/eu/eudat/data/old/ExternalDataset.java b/dmp-backend/core/src/main/java/eu/eudat/data/old/ExternalDataset.java
index 87dafd05c..71f551d75 100644
--- a/dmp-backend/core/src/main/java/eu/eudat/data/old/ExternalDataset.java
+++ b/dmp-backend/core/src/main/java/eu/eudat/data/old/ExternalDataset.java
@@ -2,12 +2,11 @@ package eu.eudat.data.old;
import eu.eudat.data.converters.DateToUTCConverter;
import eu.eudat.data.old.helpers.EntityBinder;
-import eu.eudat.queryable.queryableentity.DataEntity;
+import eu.eudat.data.old.queryableentity.DataEntity;
import jakarta.persistence.*;
import java.util.Date;
import java.util.List;
-import java.util.Set;
import java.util.UUID;
diff --git a/dmp-backend/core/src/main/java/eu/eudat/data/old/FileUpload.java b/dmp-backend/core/src/main/java/eu/eudat/data/old/FileUpload.java
index 275421361..524c9b804 100644
--- a/dmp-backend/core/src/main/java/eu/eudat/data/old/FileUpload.java
+++ b/dmp-backend/core/src/main/java/eu/eudat/data/old/FileUpload.java
@@ -2,7 +2,7 @@ package eu.eudat.data.old;
import eu.eudat.data.converters.DateToUTCConverter;
import eu.eudat.data.old.helpers.EntityBinder;
-import eu.eudat.queryable.queryableentity.DataEntity;
+import eu.eudat.data.old.queryableentity.DataEntity;
import jakarta.persistence.*;
import java.util.Date;
diff --git a/dmp-backend/core/src/main/java/eu/eudat/data/old/Funder.java b/dmp-backend/core/src/main/java/eu/eudat/data/old/Funder.java
index 4e4e0810e..b99a0eeb9 100644
--- a/dmp-backend/core/src/main/java/eu/eudat/data/old/Funder.java
+++ b/dmp-backend/core/src/main/java/eu/eudat/data/old/Funder.java
@@ -1,7 +1,6 @@
package eu.eudat.data.old;
-import eu.eudat.queryable.queryableentity.DataEntity;
-import org.hibernate.annotations.Type;
+import eu.eudat.data.old.queryableentity.DataEntity;
import jakarta.persistence.*;
import java.util.Date;
@@ -73,12 +72,10 @@ public class Funder implements DataEntity {
@Column(name = "\"Label\"")
private String label;
- @Type(eu.eudat.configurations.typedefinition.XMLType.class)
- @Column(name = "\"Reference\"", columnDefinition = "xml", nullable = true)
+ @Column(name = "\"Reference\"", nullable = true)
private String reference;
- @Type(eu.eudat.configurations.typedefinition.XMLType.class)
- @Column(name = "\"Definition\"", columnDefinition = "xml", nullable = true)
+ @Column(name = "\"Definition\"", nullable = true)
private String definition;
@Column(name = "\"Status\"", nullable = false)
diff --git a/dmp-backend/core/src/main/java/eu/eudat/data/old/Grant.java b/dmp-backend/core/src/main/java/eu/eudat/data/old/Grant.java
index e8996e02b..4ca962b6e 100644
--- a/dmp-backend/core/src/main/java/eu/eudat/data/old/Grant.java
+++ b/dmp-backend/core/src/main/java/eu/eudat/data/old/Grant.java
@@ -3,8 +3,7 @@ package eu.eudat.data.old;
import eu.eudat.data.converters.DateToUTCConverter;
import eu.eudat.data.old.helpers.EntityBinder;
-import eu.eudat.queryable.queryableentity.DataEntity;
-import org.hibernate.annotations.Type;
+import eu.eudat.data.old.queryableentity.DataEntity;
import jakarta.persistence.*;
import java.util.*;
@@ -13,18 +12,18 @@ import java.util.stream.Collectors;
@Entity
@Table(name = "\"Grant\"")
-@NamedEntityGraphs({
- @NamedEntityGraph(
- name = "grantRecentActivity",
- attributeNodes = {@NamedAttributeNode(value = "dmps", subgraph = "dmps")},
- subgraphs = @NamedSubgraph(name = "dmps", attributeNodes = {@NamedAttributeNode("users")})
- ),
- @NamedEntityGraph(
- name = "grantListingItem",
- attributeNodes = {@NamedAttributeNode(value = "dmps", subgraph = "dmps"), @NamedAttributeNode(value = "content")},
- subgraphs = @NamedSubgraph(name = "dmps", attributeNodes = {@NamedAttributeNode("creator"), @NamedAttributeNode("grant"), @NamedAttributeNode("users")})
- )
-})
+//@NamedEntityGraphs({
+// @NamedEntityGraph(
+// name = "grantRecentActivity",
+// attributeNodes = {@NamedAttributeNode(value = "dmps", subgraph = "dmps")},
+// subgraphs = @NamedSubgraph(name = "dmps", attributeNodes = {@NamedAttributeNode("users")})
+// ),
+// @NamedEntityGraph(
+// name = "grantListingItem",
+// attributeNodes = {@NamedAttributeNode(value = "dmps", subgraph = "dmps"), @NamedAttributeNode(value = "content")},
+// subgraphs = @NamedSubgraph(name = "dmps", attributeNodes = {@NamedAttributeNode("creator"), @NamedAttributeNode("grant"), @NamedAttributeNode("users")})
+// )
+//})
public class Grant implements DataEntity {
public enum Status {
@@ -86,8 +85,8 @@ public class Grant implements DataEntity {
private UUID id;
- @OneToMany(mappedBy = "grant")
- private Set dmps;
+// @OneToMany(mappedBy = "grant")
+// private Set dmps;
@Column(name = "\"Label\"")
private String label;
@@ -101,7 +100,6 @@ public class Grant implements DataEntity {
@Column(name = "\"Uri\"")
private String uri;
- @Type(eu.eudat.configurations.typedefinition.XMLType.class)
@Column(name = "\"Definition\"", columnDefinition = "xml", nullable = true)
private String definition;
@@ -231,12 +229,12 @@ public class Grant implements DataEntity {
this.definition = definition;
}
- public Set getDmps() {
- return dmps;
- }
- public void setDmps(Set dmps) {
- this.dmps = dmps;
- }
+// public Set getDmps() {
+// return dmps;
+// }
+// public void setDmps(Set dmps) {
+// this.dmps = dmps;
+// }
public UserInfo getCreationUser() {
return creationUser;
@@ -273,7 +271,7 @@ public class Grant implements DataEntity {
this.abbreviation = entity.getAbbreviation();
this.created = entity.getCreated();
this.definition = entity.getDefinition();
- this.dmps = entity.getDmps();
+// this.dmps = entity.getDmps();
this.startdate = entity.getStartdate();
this.enddate = entity.getEnddate();
this.modified = new Date();
@@ -291,8 +289,8 @@ public class Grant implements DataEntity {
public Grant buildFromTuple(List tuple, List fields, String base) {
String currentBase = base.isEmpty() ? "" : base + ".";
if (fields.contains(currentBase + "id")) this.id = EntityBinder.fromTuple(tuple, currentBase + "id");
- if (fields.contains(currentBase + "dmps"))
- this.dmps = tuple.stream().map(x -> new DMP().buildFromTuple(Arrays.asList(x), fields, currentBase + "dmps")).collect(Collectors.toSet());
+// if (fields.contains(currentBase + "dmps"))
+// this.dmps = tuple.stream().map(x -> new DMP().buildFromTuple(Arrays.asList(x), fields, currentBase + "dmps")).collect(Collectors.toSet());
if (fields.contains(currentBase + "creationUser"))
this.creationUser = tuple.stream().map(x -> new UserInfo().buildFromTuple(Arrays.asList(x), fields, currentBase + "creationUser")).collect(Collectors.toList()).get(0);
return this;
diff --git a/dmp-backend/core/src/main/java/eu/eudat/data/old/Invitation.java b/dmp-backend/core/src/main/java/eu/eudat/data/old/Invitation.java
index b8da71354..0bc0b1d29 100644
--- a/dmp-backend/core/src/main/java/eu/eudat/data/old/Invitation.java
+++ b/dmp-backend/core/src/main/java/eu/eudat/data/old/Invitation.java
@@ -1,9 +1,7 @@
package eu.eudat.data.old;
import eu.eudat.data.old.helpers.EntityBinder;
-import eu.eudat.queryable.queryableentity.DataEntity;
-import org.hibernate.annotations.GenericGenerator;
-import org.hibernate.annotations.Type;
+import eu.eudat.data.old.queryableentity.DataEntity;
import jakarta.persistence.*;
import java.util.List;
@@ -16,7 +14,6 @@ public class Invitation implements DataEntity {
@Id
@GeneratedValue
- @GenericGenerator(name = "uuid2", strategy = "uuid2")
@Column(name = "\"Id\"", updatable = false, nullable = false)
private UUID id;
@@ -27,9 +24,9 @@ public class Invitation implements DataEntity {
@JoinColumn(name = "\"CreationUser\"", nullable = false)
private UserInfo user;
- @OneToOne(fetch = FetchType.EAGER)
- @JoinColumn(name = "\"Dmp\"", nullable = false)
- private DMP dmp;
+// @OneToOne(fetch = FetchType.EAGER)
+// @JoinColumn(name = "\"Dmp\"", nullable = false)
+// private DMP dmp;
@Column(name = "\"Token\"", updatable = false, nullable = false, columnDefinition = "BINARY(16)")
private UUID token;
@@ -37,8 +34,7 @@ public class Invitation implements DataEntity {
@Column(name = "\"AcceptedInvitation\"", nullable = false)
private boolean acceptedInvitation;
- @Type(eu.eudat.configurations.typedefinition.XMLType.class)
- @Column(name = "\"Properties\"", columnDefinition = "xml", nullable = true)
+ @Column(name = "\"Properties\"", nullable = true)
private String properties;
public UUID getId() {
@@ -65,13 +61,13 @@ public class Invitation implements DataEntity {
this.user = user;
}
- public DMP getDmp() {
- return dmp;
- }
-
- public void setDmp(DMP dmp) {
- this.dmp = dmp;
- }
+// public DMP getDmp() {
+// return dmp;
+// }
+//
+// public void setDmp(DMP dmp) {
+// this.dmp = dmp;
+// }
public UUID getToken() {
return token;
diff --git a/dmp-backend/core/src/main/java/eu/eudat/data/old/Lock.java b/dmp-backend/core/src/main/java/eu/eudat/data/old/Lock.java
index 4f50dd645..84c397d3c 100644
--- a/dmp-backend/core/src/main/java/eu/eudat/data/old/Lock.java
+++ b/dmp-backend/core/src/main/java/eu/eudat/data/old/Lock.java
@@ -2,8 +2,7 @@ package eu.eudat.data.old;
import eu.eudat.data.converters.DateToUTCConverter;
import eu.eudat.data.old.helpers.EntityBinder;
-import eu.eudat.queryable.queryableentity.DataEntity;
-import org.hibernate.annotations.GenericGenerator;
+import eu.eudat.data.old.queryableentity.DataEntity;
import jakarta.persistence.*;
import java.util.Date;
@@ -16,7 +15,6 @@ public class Lock implements DataEntity {
@Id
@GeneratedValue
- @GenericGenerator(name = "uuid2", strategy = "uuid2")
@Column(name = "id", updatable = false, nullable = false, columnDefinition = "BINARY(16)")
private UUID id;
diff --git a/dmp-backend/core/src/main/java/eu/eudat/data/old/Notification.java b/dmp-backend/core/src/main/java/eu/eudat/data/old/Notification.java
index 143237d15..2131ec35d 100644
--- a/dmp-backend/core/src/main/java/eu/eudat/data/old/Notification.java
+++ b/dmp-backend/core/src/main/java/eu/eudat/data/old/Notification.java
@@ -4,8 +4,7 @@ import eu.eudat.commons.enums.old.notification.ActiveStatus;
import eu.eudat.commons.enums.old.notification.ContactType;
import eu.eudat.commons.enums.old.notification.NotificationType;
import eu.eudat.commons.enums.old.notification.NotifyState;
-import eu.eudat.queryable.queryableentity.DataEntity;
-import org.hibernate.annotations.GenericGenerator;
+import eu.eudat.data.old.queryableentity.DataEntity;
import jakarta.persistence.*;
import java.util.Date;
@@ -18,7 +17,6 @@ public class Notification implements DataEntity {
@Id
@GeneratedValue
- @GenericGenerator(name = "uuid2", strategy = "uuid2")
@Column(name = "id", updatable = false, nullable = false, columnDefinition = "BINARY(16)")
private UUID id;
diff --git a/dmp-backend/core/src/main/java/eu/eudat/data/old/Organisation.java b/dmp-backend/core/src/main/java/eu/eudat/data/old/Organisation.java
index 6cfded45d..db364f406 100644
--- a/dmp-backend/core/src/main/java/eu/eudat/data/old/Organisation.java
+++ b/dmp-backend/core/src/main/java/eu/eudat/data/old/Organisation.java
@@ -2,9 +2,7 @@ package eu.eudat.data.old;
import eu.eudat.data.converters.DateToUTCConverter;
import eu.eudat.data.old.helpers.EntityBinder;
-import eu.eudat.queryable.queryableentity.DataEntity;
-import org.hibernate.annotations.GenericGenerator;
-import org.hibernate.annotations.Type;
+import eu.eudat.data.old.queryableentity.DataEntity;
import jakarta.persistence.*;
import java.io.Serializable;
@@ -14,18 +12,17 @@ import java.util.Set;
import java.util.UUID;
@Entity
-@Table(name = "\"Organisation\"")
-@NamedEntityGraphs({
- @NamedEntityGraph(
- name = "organisationRecentActivity",
- attributeNodes = {@NamedAttributeNode(value = "dmps")}
- )
-})
+//@Table(name = "\"Organisation\"")
+//@NamedEntityGraphs({
+// @NamedEntityGraph(
+// name = "organisationRecentActivity",
+// attributeNodes = {@NamedAttributeNode(value = "dmps")}
+// )
+//})
public class Organisation implements Serializable, DataEntity {
@Id
@GeneratedValue
- @GenericGenerator(name = "uuid2", strategy = "uuid2")
@Column(name = "\"ID\"", updatable = false, nullable = false, columnDefinition = "BINARY(16)")
private UUID id;
@@ -35,23 +32,21 @@ public class Organisation implements Serializable, DataEntity
@Column(name = "\"Abbreviation\"")
private String abbreviation;
- @Type(eu.eudat.configurations.typedefinition.XMLType.class)
- @Column(name = "\"Reference\"", columnDefinition = "xml", nullable = true)
+ @Column(name = "\"Reference\"", nullable = true)
private String reference;
@Column(name = "\"Uri\"")
private String uri;
- @Type(eu.eudat.configurations.typedefinition.XMLType.class)
- @Column(name = "\"Definition\"", columnDefinition = "xml", nullable = true)
+ @Column(name = "\"Definition\"", nullable = true)
private String definition;
- @OneToMany(fetch = FetchType.LAZY)
- @JoinTable(name = "\"DMPOrganisation\"",
- joinColumns = {@JoinColumn(name = "\"Organisation\"", referencedColumnName = "\"ID\"")},
- inverseJoinColumns = {@JoinColumn(name = "\"DMP\"", referencedColumnName = "\"ID\"")}
- )
- private Set dmps;
+// @OneToMany(fetch = FetchType.LAZY)
+// @JoinTable(name = "\"DMPOrganisation\"",
+// joinColumns = {@JoinColumn(name = "\"Organisation\"", referencedColumnName = "\"ID\"")},
+// inverseJoinColumns = {@JoinColumn(name = "\"DMP\"", referencedColumnName = "\"ID\"")}
+// )
+// private Set dmps;
@Column(name = "\"Status\"", nullable = false)
private Short status;
@@ -128,12 +123,12 @@ public class Organisation implements Serializable, DataEntity
this.definition = definition;
}
- public Set getDmps() {
- return dmps;
- }
- public void setDmps(Set dmps) {
- this.dmps = dmps;
- }
+// public Set getDmps() {
+// return dmps;
+// }
+// public void setDmps(Set dmps) {
+// this.dmps = dmps;
+// }
@Override
public void update(Organisation entity) {
diff --git a/dmp-backend/core/src/main/java/eu/eudat/data/old/Project.java b/dmp-backend/core/src/main/java/eu/eudat/data/old/Project.java
index bccc1ef58..130b4c28d 100644
--- a/dmp-backend/core/src/main/java/eu/eudat/data/old/Project.java
+++ b/dmp-backend/core/src/main/java/eu/eudat/data/old/Project.java
@@ -2,8 +2,7 @@ package eu.eudat.data.old;
import eu.eudat.data.converters.DateToUTCConverter;
import eu.eudat.data.old.helpers.EntityBinder;
-import eu.eudat.queryable.queryableentity.DataEntity;
-import org.hibernate.annotations.Type;
+import eu.eudat.data.old.queryableentity.DataEntity;
import jakarta.persistence.*;
import java.util.*;
@@ -71,8 +70,8 @@ public class Project implements DataEntity {
@Column(name = "\"ID\"", updatable = false, nullable = false, columnDefinition = "BINARY(16)")
private UUID id;
- @OneToMany(mappedBy = "project")
- private Set dmps;
+// @OneToMany(mappedBy = "project")
+// private Set dmps;
@Column(name = "\"Label\"")
private String label;
@@ -80,14 +79,13 @@ public class Project implements DataEntity {
@Column(name = "\"Abbreviation\"")
private String abbreviation;
- @Column(name = "\"Reference\"", columnDefinition = "xml", nullable = true)
+ @Column(name = "\"Reference\"", nullable = true)
private String reference;
@Column(name = "\"Uri\"")
private String uri;
- @Type(eu.eudat.configurations.typedefinition.XMLType.class)
- @Column(name = "\"Definition\"", columnDefinition = "xml", nullable = true)
+ @Column(name = "\"Definition\"", nullable = true)
private String definition;
@Column(name = "\"StartDate\"", nullable = false)
@@ -133,12 +131,12 @@ public class Project implements DataEntity {
this.id = id;
}
- public Set getDmps() {
- return dmps;
- }
- public void setDmps(Set dmps) {
- this.dmps = dmps;
- }
+// public Set getDmps() {
+// return dmps;
+// }
+// public void setDmps(Set dmps) {
+// this.dmps = dmps;
+// }
public String getLabel() {
return label;
@@ -245,7 +243,7 @@ public class Project implements DataEntity {
this.abbreviation = entity.getAbbreviation();
this.created = entity.getCreated();
this.definition = entity.getDefinition();
- this.dmps = entity.getDmps();
+// this.dmps = entity.getDmps();
this.startdate = entity.getStartdate();
this.enddate = entity.getEnddate();
this.modified = new Date();
@@ -260,7 +258,7 @@ public class Project implements DataEntity {
project.setAbbreviation(grant.getAbbreviation());
project.setCreated(new Date());
project.setDefinition(grant.getDefinition());
- project.setDmps(grant.getDmps());
+// project.setDmps(grant.getDmps());
project.setStartdate(grant.getStartdate());
project.setEnddate(grant.getEnddate());
project.setModified(new Date());
@@ -281,8 +279,8 @@ public class Project implements DataEntity {
public Project buildFromTuple(List tuple, List fields, String base) {
String currentBase = base.isEmpty() ? "" : base + ".";
if (fields.contains(currentBase + "id")) this.id = EntityBinder.fromTuple(tuple, currentBase + "id");
- if (fields.contains(currentBase + "dmps"))
- this.dmps = tuple.stream().map(x -> new DMP().buildFromTuple(Arrays.asList(x), fields, currentBase + "dmps")).collect(Collectors.toSet());
+// if (fields.contains(currentBase + "dmps"))
+// this.dmps = tuple.stream().map(x -> new DMP().buildFromTuple(Arrays.asList(x), fields, currentBase + "dmps")).collect(Collectors.toSet());
if (fields.contains(currentBase + "creationUser"))
this.creationUser = tuple.stream().map(x -> new UserInfo().buildFromTuple(Arrays.asList(x), fields, currentBase + "creationUser")).collect(Collectors.toList()).get(0);
return this;
diff --git a/dmp-backend/core/src/main/java/eu/eudat/data/old/Registry.java b/dmp-backend/core/src/main/java/eu/eudat/data/old/Registry.java
index 29c860824..2ef591896 100644
--- a/dmp-backend/core/src/main/java/eu/eudat/data/old/Registry.java
+++ b/dmp-backend/core/src/main/java/eu/eudat/data/old/Registry.java
@@ -4,8 +4,7 @@ package eu.eudat.data.old;
import eu.eudat.data.DescriptionEntity;
import eu.eudat.data.converters.DateToUTCConverter;
import eu.eudat.data.old.helpers.EntityBinder;
-import eu.eudat.queryable.queryableentity.DataEntity;
-import org.hibernate.annotations.Type;
+import eu.eudat.data.old.queryableentity.DataEntity;
import jakarta.persistence.*;
import java.util.Date;
@@ -34,8 +33,7 @@ public class Registry implements DataEntity {
@Column(name = "\"Uri\"")
private String uri;
- @Type(eu.eudat.configurations.typedefinition.XMLType.class)
- @Column(name = "\"Definition\"", columnDefinition = "xml", nullable = true)
+ @Column(name = "\"Definition\"", nullable = true)
private String definition;
@Transient
diff --git a/dmp-backend/core/src/main/java/eu/eudat/data/old/Researcher.java b/dmp-backend/core/src/main/java/eu/eudat/data/old/Researcher.java
index a11bb1520..a04e35a30 100644
--- a/dmp-backend/core/src/main/java/eu/eudat/data/old/Researcher.java
+++ b/dmp-backend/core/src/main/java/eu/eudat/data/old/Researcher.java
@@ -3,8 +3,7 @@ package eu.eudat.data.old;
import eu.eudat.data.converters.DateToUTCConverter;
import eu.eudat.data.old.helpers.EntityBinder;
-import eu.eudat.queryable.queryableentity.DataEntity;
-import org.hibernate.annotations.Type;
+import eu.eudat.data.old.queryableentity.DataEntity;
import jakarta.persistence.*;
import java.util.Date;
@@ -18,8 +17,6 @@ import java.util.UUID;
public class Researcher implements DataEntity {
@Id
- /*@GeneratedValue
- @GenericGenerator(name = "uuid2", strategy = "uuid2")*/
@Column(name = "\"ID\"", updatable = false, nullable = false, columnDefinition = "BINARY(16)")
private UUID id;
@@ -32,21 +29,19 @@ public class Researcher implements DataEntity {
@Column(name = "\"PrimaryEmail\"")
private String primaryEmail;
- @Type(eu.eudat.configurations.typedefinition.XMLType.class)
- @Column(name = "\"Definition\"", columnDefinition = "xml", nullable = true)
+ @Column(name = "\"Definition\"", nullable = true)
private String definition;
- @Type(eu.eudat.configurations.typedefinition.XMLType.class)
- @Column(name = "\"Reference\"", columnDefinition = "xml", nullable = true)
+ @Column(name = "\"Reference\"", nullable = true)
private String reference;
- @OneToMany(fetch = FetchType.LAZY)
- @JoinTable(name = "\"DMPResearcher\"",
- joinColumns = {@JoinColumn(name = "\"Researcher\"", referencedColumnName = "\"ID\"")},
- inverseJoinColumns = {@JoinColumn(name = "\"DMP\"", referencedColumnName = "\"ID\"")}
- )
- private Set dMPs;
+// @OneToMany(fetch = FetchType.LAZY)
+// @JoinTable(name = "\"DMPResearcher\"",
+// joinColumns = {@JoinColumn(name = "\"Researcher\"", referencedColumnName = "\"ID\"")},
+// inverseJoinColumns = {@JoinColumn(name = "\"DMP\"", referencedColumnName = "\"ID\"")}
+// )
+// private Set dMPs;
@Column(name = "\"Status\"", nullable = false)
@@ -128,12 +123,12 @@ public class Researcher implements DataEntity {
this.definition = definition;
}
- public Set getdMPs() {
- return dMPs;
- }
- public void setdMPs(Set dMPs) {
- this.dMPs = dMPs;
- }
+// public Set getdMPs() {
+// return dMPs;
+// }
+// public void setdMPs(Set dMPs) {
+// this.dMPs = dMPs;
+// }
public UserInfo getCreationUser() {
return creationUser;
diff --git a/dmp-backend/core/src/main/java/eu/eudat/data/old/Service.java b/dmp-backend/core/src/main/java/eu/eudat/data/old/Service.java
index 732b89927..61fa36e1e 100644
--- a/dmp-backend/core/src/main/java/eu/eudat/data/old/Service.java
+++ b/dmp-backend/core/src/main/java/eu/eudat/data/old/Service.java
@@ -2,13 +2,11 @@ package eu.eudat.data.old;
import eu.eudat.data.converters.DateToUTCConverter;
-import eu.eudat.queryable.queryableentity.DataEntity;
-import org.hibernate.annotations.Type;
+import eu.eudat.data.old.queryableentity.DataEntity;
import jakarta.persistence.*;
import java.util.Date;
import java.util.List;
-import java.util.Set;
import java.util.UUID;
@@ -32,8 +30,7 @@ public class Service implements DataEntity {
@Column(name = "\"Uri\"")
private String uri;
- @Type(eu.eudat.configurations.typedefinition.XMLType.class)
- @Column(name = "\"Definition\"", columnDefinition = "xml", nullable = false)
+ @Column(name = "\"Definition\"", nullable = false)
private String definition;
@Column(name = "\"Status\"", nullable = false)
diff --git a/dmp-backend/core/src/main/java/eu/eudat/data/old/UserInfo.java b/dmp-backend/core/src/main/java/eu/eudat/data/old/UserInfo.java
index cb2e04992..e1f5d3b96 100644
--- a/dmp-backend/core/src/main/java/eu/eudat/data/old/UserInfo.java
+++ b/dmp-backend/core/src/main/java/eu/eudat/data/old/UserInfo.java
@@ -3,9 +3,7 @@ package eu.eudat.data.old;
import eu.eudat.data.CredentialEntity;
import eu.eudat.data.converters.DateToUTCConverter;
import eu.eudat.data.old.helpers.EntityBinder;
-import eu.eudat.queryable.queryableentity.DataEntity;
-import org.hibernate.annotations.GenericGenerator;
-import org.hibernate.annotations.Type;
+import eu.eudat.data.old.queryableentity.DataEntity;
import jakarta.persistence.*;
import java.util.*;
@@ -22,7 +20,6 @@ public class UserInfo implements DataEntity {
@Id
@GeneratedValue
- @GenericGenerator(name = "uuid2", strategy = "uuid2")
@Column(name = "id", updatable = false, nullable = false, columnDefinition = "BINARY(16)")
private UUID id;
public final static String _id = "id";
@@ -65,17 +62,16 @@ public class UserInfo implements DataEntity {
public final static String _lastloggedin = "lastloggedin";
- @Type(eu.eudat.configurations.typedefinition.XMLType.class)
@Column(name = "additionalinfo", nullable = true)
private String additionalinfo;
public final static String _additionalinfo = "additionalinfo";
- @OneToMany(fetch = FetchType.LAZY)
- @JoinTable(name = "\"UserDMP\"",
- joinColumns = {@JoinColumn(name = "usr", referencedColumnName = "id")},
- inverseJoinColumns = {@JoinColumn(name = "dmp", referencedColumnName = "\"ID\"")}
- )
- private Set dmps;
+// @OneToMany(fetch = FetchType.LAZY)
+// @JoinTable(name = "\"UserDMP\"",
+// joinColumns = {@JoinColumn(name = "usr", referencedColumnName = "id")},
+// inverseJoinColumns = {@JoinColumn(name = "dmp", referencedColumnName = "\"ID\"")}
+// )
+// private Set dmps;
@OneToMany(fetch = FetchType.LAZY)
@JoinColumn(name = "Id")
@@ -90,13 +86,13 @@ public class UserInfo implements DataEntity {
@OneToMany(mappedBy = "userId", fetch = FetchType.LAZY)
private Set notifications = new HashSet<>();
- public Set getDmps() {
- return dmps;
- }
-
- public void setDmps(Set dmps) {
- this.dmps = dmps;
- }
+// public Set getDmps() {
+// return dmps;
+// }
+//
+// public void setDmps(Set dmps) {
+// this.dmps = dmps;
+// }
public UUID getId() {
return id;
diff --git a/dmp-backend/core/src/main/java/eu/eudat/data/old/UserRole.java b/dmp-backend/core/src/main/java/eu/eudat/data/old/UserRole.java
index 0c3c8c385..719556c1e 100644
--- a/dmp-backend/core/src/main/java/eu/eudat/data/old/UserRole.java
+++ b/dmp-backend/core/src/main/java/eu/eudat/data/old/UserRole.java
@@ -1,8 +1,7 @@
package eu.eudat.data.old;
import eu.eudat.data.old.helpers.EntityBinder;
-import eu.eudat.queryable.queryableentity.DataEntity;
-import org.hibernate.annotations.GenericGenerator;
+import eu.eudat.data.old.queryableentity.DataEntity;
import jakarta.persistence.*;
import java.util.List;
@@ -15,7 +14,6 @@ public class UserRole implements DataEntity {
@Id
@GeneratedValue
- @GenericGenerator(name = "uuid2", strategy = "uuid2")
@Column(name = "\"Id\"", updatable = false, nullable = false, columnDefinition = "BINARY(16)")
private UUID id;
diff --git a/dmp-backend/queryable/src/main/java/eu/eudat/queryable/queryableentity/DataEntity.java b/dmp-backend/core/src/main/java/eu/eudat/data/old/queryableentity/DataEntity.java
similarity index 82%
rename from dmp-backend/queryable/src/main/java/eu/eudat/queryable/queryableentity/DataEntity.java
rename to dmp-backend/core/src/main/java/eu/eudat/data/old/queryableentity/DataEntity.java
index 0eca2836d..035d25698 100644
--- a/dmp-backend/queryable/src/main/java/eu/eudat/queryable/queryableentity/DataEntity.java
+++ b/dmp-backend/core/src/main/java/eu/eudat/data/old/queryableentity/DataEntity.java
@@ -1,4 +1,4 @@
-package eu.eudat.queryable.queryableentity;
+package eu.eudat.data.old.queryableentity;
import jakarta.persistence.Tuple;
import java.util.List;
diff --git a/dmp-backend/core/src/main/java/eu/eudat/elastic/ElasticConfiguration.java b/dmp-backend/core/src/main/java/eu/eudat/elastic/ElasticConfiguration.java
new file mode 100644
index 000000000..e7965b79c
--- /dev/null
+++ b/dmp-backend/core/src/main/java/eu/eudat/elastic/ElasticConfiguration.java
@@ -0,0 +1,40 @@
+package eu.eudat.elastic;
+
+
+import eu.eudat.elastic.converter.*;
+import gr.cite.tools.elastic.configuration.AbstractElasticConfiguration;
+import gr.cite.tools.elastic.configuration.ElasticCertificateProvider;
+import gr.cite.tools.elastic.configuration.ElasticProperties;
+import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
+import org.springframework.boot.context.properties.EnableConfigurationProperties;
+import org.springframework.context.ApplicationContext;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+import org.springframework.data.elasticsearch.core.convert.ElasticsearchCustomConversions;
+
+import java.util.List;
+
+@Configuration
+@EnableConfigurationProperties(ElasticProperties.class)
+@ConditionalOnProperty(prefix = "elastic", name = "enabled", matchIfMissing = false)
+public class ElasticConfiguration extends AbstractElasticConfiguration {
+
+ public ElasticConfiguration(ElasticProperties elasticProperties, ElasticCertificateProvider elasticCertificateProvider) {
+ super(elasticProperties, elasticCertificateProvider);
+ }
+
+ @Bean
+ @Override
+ public ElasticsearchCustomConversions elasticsearchCustomConversions() {
+ return new ElasticsearchCustomConversions(
+ List.of(
+ new DmpUserRoleToShortConverter(),
+ new DescriptionTemplateVersionStatusToShortConverter(),
+ new DmpStatusToShortConverter(),
+ new IsActiveToShortConverter(),
+ new DescriptionTemplateVersionStatusToShortConverter(),
+ new DmpVersionStatusToShortConverter(),
+ new DmpAccessTypeToShortConverter()
+ ));
+ }
+}
diff --git a/dmp-backend/core/src/main/java/eu/eudat/elastic/converter/DescriptionTemplateVersionStatusToShortConverter.java b/dmp-backend/core/src/main/java/eu/eudat/elastic/converter/DescriptionTemplateVersionStatusToShortConverter.java
new file mode 100644
index 000000000..1e76e0ba4
--- /dev/null
+++ b/dmp-backend/core/src/main/java/eu/eudat/elastic/converter/DescriptionTemplateVersionStatusToShortConverter.java
@@ -0,0 +1,13 @@
+package eu.eudat.elastic.converter;
+
+import eu.eudat.commons.enums.DescriptionTemplateVersionStatus;
+import org.springframework.core.convert.converter.Converter;
+import org.springframework.data.convert.WritingConverter;
+
+@WritingConverter
+public class DescriptionTemplateVersionStatusToShortConverter implements Converter {
+ @Override
+ public Short convert(DescriptionTemplateVersionStatus source) {
+ return source.getValue();
+ }
+}
diff --git a/dmp-backend/core/src/main/java/eu/eudat/elastic/converter/DmpAccessTypeToShortConverter.java b/dmp-backend/core/src/main/java/eu/eudat/elastic/converter/DmpAccessTypeToShortConverter.java
new file mode 100644
index 000000000..efb5eb50f
--- /dev/null
+++ b/dmp-backend/core/src/main/java/eu/eudat/elastic/converter/DmpAccessTypeToShortConverter.java
@@ -0,0 +1,13 @@
+package eu.eudat.elastic.converter;
+
+import eu.eudat.commons.enums.DmpAccessType;
+import org.springframework.core.convert.converter.Converter;
+import org.springframework.data.convert.WritingConverter;
+
+@WritingConverter
+public class DmpAccessTypeToShortConverter implements Converter {
+ @Override
+ public Short convert(DmpAccessType source) {
+ return source.getValue();
+ }
+}
diff --git a/dmp-backend/core/src/main/java/eu/eudat/elastic/converter/DmpStatusToShortConverter.java b/dmp-backend/core/src/main/java/eu/eudat/elastic/converter/DmpStatusToShortConverter.java
new file mode 100644
index 000000000..fd3dbee43
--- /dev/null
+++ b/dmp-backend/core/src/main/java/eu/eudat/elastic/converter/DmpStatusToShortConverter.java
@@ -0,0 +1,14 @@
+package eu.eudat.elastic.converter;
+
+import eu.eudat.commons.enums.DescriptionStatus;
+import eu.eudat.commons.enums.DmpStatus;
+import org.springframework.core.convert.converter.Converter;
+import org.springframework.data.convert.WritingConverter;
+
+@WritingConverter
+public class DmpStatusToShortConverter implements Converter {
+ @Override
+ public Short convert(DmpStatus source) {
+ return source.getValue();
+ }
+}
diff --git a/dmp-backend/core/src/main/java/eu/eudat/elastic/converter/DmpUserRoleToShortConverter.java b/dmp-backend/core/src/main/java/eu/eudat/elastic/converter/DmpUserRoleToShortConverter.java
new file mode 100644
index 000000000..7a61e7f21
--- /dev/null
+++ b/dmp-backend/core/src/main/java/eu/eudat/elastic/converter/DmpUserRoleToShortConverter.java
@@ -0,0 +1,13 @@
+package eu.eudat.elastic.converter;
+
+import eu.eudat.commons.enums.DmpUserRole;
+import org.springframework.core.convert.converter.Converter;
+import org.springframework.data.convert.WritingConverter;
+
+@WritingConverter
+public class DmpUserRoleToShortConverter implements Converter {
+ @Override
+ public Short convert(DmpUserRole source) {
+ return source.getValue();
+ }
+}
diff --git a/dmp-backend/core/src/main/java/eu/eudat/elastic/converter/DmpVersionStatusToShortConverter.java b/dmp-backend/core/src/main/java/eu/eudat/elastic/converter/DmpVersionStatusToShortConverter.java
new file mode 100644
index 000000000..8d34e5d96
--- /dev/null
+++ b/dmp-backend/core/src/main/java/eu/eudat/elastic/converter/DmpVersionStatusToShortConverter.java
@@ -0,0 +1,13 @@
+package eu.eudat.elastic.converter;
+
+import eu.eudat.commons.enums.DmpVersionStatus;
+import org.springframework.core.convert.converter.Converter;
+import org.springframework.data.convert.WritingConverter;
+
+@WritingConverter
+public class DmpVersionStatusToShortConverter implements Converter {
+ @Override
+ public Short convert(DmpVersionStatus source) {
+ return source.getValue();
+ }
+}
diff --git a/dmp-backend/core/src/main/java/eu/eudat/elastic/converter/IsActiveToShortConverter.java b/dmp-backend/core/src/main/java/eu/eudat/elastic/converter/IsActiveToShortConverter.java
new file mode 100644
index 000000000..8f54da448
--- /dev/null
+++ b/dmp-backend/core/src/main/java/eu/eudat/elastic/converter/IsActiveToShortConverter.java
@@ -0,0 +1,13 @@
+package eu.eudat.elastic.converter;
+
+import eu.eudat.commons.enums.DmpStatus;
+import org.springframework.core.convert.converter.Converter;
+import org.springframework.data.convert.WritingConverter;
+
+@WritingConverter
+public class IsActiveToShortConverter implements Converter {
+ @Override
+ public Short convert(DmpStatus source) {
+ return source.getValue();
+ }
+}
diff --git a/dmp-backend/core/src/main/java/eu/eudat/elastic/data/DescriptionElasticEntity.java b/dmp-backend/core/src/main/java/eu/eudat/elastic/data/DescriptionElasticEntity.java
new file mode 100644
index 000000000..df810740b
--- /dev/null
+++ b/dmp-backend/core/src/main/java/eu/eudat/elastic/data/DescriptionElasticEntity.java
@@ -0,0 +1,139 @@
+package eu.eudat.elastic.data;
+
+import eu.eudat.commons.enums.DescriptionStatus;
+import eu.eudat.commons.enums.DescriptionTemplateVersionStatus;
+import eu.eudat.elastic.data.nested.*;
+import gr.cite.tools.elastic.ElasticConstants;
+import org.springframework.data.annotation.Id;
+import org.springframework.data.elasticsearch.annotations.*;
+
+import java.util.Date;
+import java.util.List;
+import java.util.UUID;
+
+@Document(indexName = "description")
+public class DescriptionElasticEntity {
+
+ @Id
+ @Field(value = DescriptionElasticEntity._id, type = FieldType.Keyword)
+ private UUID id;
+ public final static String _id = "id";
+
+ @MultiField(mainField = @Field(value = DescriptionElasticEntity._label, type = FieldType.Text), otherFields = {
+ @InnerField(suffix = ElasticConstants.SubFields.keyword, type = FieldType.Keyword)
+ })
+ private String label;
+ public final static String _label = "label";
+
+ @Field(value = DescriptionElasticEntity._description, type = FieldType.Text)
+ private String description;
+ public final static String _description = "description";
+
+ @Field(value = DescriptionElasticEntity._status, type = FieldType.Short)
+ private DescriptionStatus status;
+ public final static String _status = "status";
+
+ @Field(value = DescriptionElasticEntity._finalizedAt, type = FieldType.Date)
+ private Date finalizedAt;
+ public final static String _finalizedAt = "finalizedAt";
+
+ @Field(value = DescriptionElasticEntity._createdAt, type = FieldType.Date)
+ private Date createdAt;
+ public final static String _createdAt = "createdAt";
+
+ @Field(value = DescriptionElasticEntity._tags, type = FieldType.Nested)
+ private List tags;
+ public final static String _tags = "tags";
+
+ @Field(value = DescriptionElasticEntity._descriptionTemplate, type = FieldType.Object)
+ private NestedDescriptionTemplateElasticEntity descriptionTemplate;
+ public final static String _descriptionTemplate = "descriptionTemplate";
+
+ @Field(value = DescriptionElasticEntity._dmp, type = FieldType.Object)
+ private NestedDmpElasticEntity dmp;
+ public final static String _dmp = "dmp";
+
+ @Field(value = DescriptionElasticEntity._references, type = FieldType.Nested)
+ private List references;
+ public final static String _references = "references";
+
+ public UUID getId() {
+ return id;
+ }
+
+ public void setId(UUID id) {
+ this.id = id;
+ }
+
+ public String getLabel() {
+ return label;
+ }
+
+ public void setLabel(String label) {
+ this.label = label;
+ }
+
+ public String getDescription() {
+ return description;
+ }
+
+ public void setDescription(String description) {
+ this.description = description;
+ }
+
+ public DescriptionStatus getStatus() {
+ return status;
+ }
+
+ public void setStatus(DescriptionStatus status) {
+ this.status = status;
+ }
+
+ public Date getFinalizedAt() {
+ return finalizedAt;
+ }
+
+ public void setFinalizedAt(Date finalizedAt) {
+ this.finalizedAt = finalizedAt;
+ }
+
+ public List getTags() {
+ return tags;
+ }
+
+ public void setTags(List tags) {
+ this.tags = tags;
+ }
+
+ public NestedDescriptionTemplateElasticEntity getDescriptionTemplate() {
+ return descriptionTemplate;
+ }
+
+ public void setDescriptionTemplate(NestedDescriptionTemplateElasticEntity descriptionTemplate) {
+ this.descriptionTemplate = descriptionTemplate;
+ }
+
+ public NestedDmpElasticEntity getDmp() {
+ return dmp;
+ }
+
+ public void setDmp(NestedDmpElasticEntity dmp) {
+ this.dmp = dmp;
+ }
+
+ public List getReferences() {
+ return references;
+ }
+
+ public void setReferences(List references) {
+ this.references = references;
+ }
+
+ public Date getCreatedAt() {
+ return createdAt;
+ }
+
+ public void setCreatedAt(Date createdAt) {
+ this.createdAt = createdAt;
+ }
+}
diff --git a/dmp-backend/core/src/main/java/eu/eudat/elastic/data/DmpElasticEntity.java b/dmp-backend/core/src/main/java/eu/eudat/elastic/data/DmpElasticEntity.java
new file mode 100644
index 000000000..8402bd601
--- /dev/null
+++ b/dmp-backend/core/src/main/java/eu/eudat/elastic/data/DmpElasticEntity.java
@@ -0,0 +1,210 @@
+package eu.eudat.elastic.data;
+
+import eu.eudat.commons.enums.DmpAccessType;
+import eu.eudat.commons.enums.DmpStatus;
+import eu.eudat.commons.enums.DmpVersionStatus;
+import eu.eudat.elastic.data.nested.*;
+import gr.cite.tools.elastic.ElasticConstants;
+import org.springframework.data.annotation.Id;
+import org.springframework.data.elasticsearch.annotations.*;
+
+import java.util.Date;
+import java.util.List;
+import java.util.UUID;
+
+@Document(indexName = "dmp")
+public class DmpElasticEntity {
+ @Id
+ @Field(value = DmpElasticEntity._id, type = FieldType.Keyword)
+ private UUID id;
+ public final static String _id = "id";
+
+ @MultiField(mainField = @Field(value = DmpElasticEntity._label, type = FieldType.Text), otherFields = {
+ @InnerField(suffix = ElasticConstants.SubFields.keyword, type = FieldType.Keyword)
+ })
+ private String label;
+ public final static String _label = "label";
+
+ @Field(value = DmpElasticEntity._description, type = FieldType.Text)
+ private String description;
+ public final static String _description = "description";
+
+ @Field(value = DmpElasticEntity._version, type = FieldType.Keyword)
+ private Short version;
+ public final static String _version = "version";
+
+ @Field(value = DmpElasticEntity._status, type = FieldType.Short)
+ private DmpStatus status;
+ public final static String _status = "status";
+
+ @Field(value = DmpElasticEntity._accessType, type = FieldType.Short)
+ private DmpAccessType accessType;
+ public final static String _accessType = "accessType";
+ @Field(value = DmpElasticEntity._versionStatus, type = FieldType.Short)
+ private DmpVersionStatus versionStatus;
+ public final static String _versionStatus = "versionStatus";
+
+ @Field(value = DmpElasticEntity._language, type = FieldType.Keyword)
+ private String language;
+ public final static String _language = "language";
+
+ @Field(value = DmpElasticEntity._blueprintId, type = FieldType.Keyword)
+ private UUID blueprintId;
+ public final static String _blueprintId = "blueprintId";
+
+ @Field(value = DmpElasticEntity._groupId, type = FieldType.Keyword)
+ private UUID groupId;
+ public final static String _groupId = "groupId";
+
+ @Field(value = DmpElasticEntity._finalizedAt, type = FieldType.Date)
+ private Date finalizedAt;
+ public final static String _finalizedAt = "finalizedAt";
+
+ @Field(value = DmpElasticEntity._references, type = FieldType.Nested)
+ private List references;
+ public final static String _references = "references";
+
+ @Field(value = DmpElasticEntity._collaborators, type = FieldType.Nested)
+ private List collaborators;
+ public final static String _collaborators = "collaborators";
+
+ @Field(value = DmpElasticEntity._descriptionTemplates, type = FieldType.Nested)
+ private List descriptionTemplates;
+ public final static String _descriptionTemplates = "descriptionTemplates";
+
+ @Field(value = DmpElasticEntity._descriptions, type = FieldType.Nested)
+ private List descriptions;
+ public final static String _descriptions = "descriptions";
+
+ @Field(value = DmpElasticEntity._dois, type = FieldType.Nested)
+ private List dois;
+ public final static String _dois = "dois";
+
+ public UUID getId() {
+ return id;
+ }
+
+ public void setId(UUID id) {
+ this.id = id;
+ }
+
+ public String getLabel() {
+ return label;
+ }
+
+ public void setLabel(String label) {
+ this.label = label;
+ }
+
+ public String getDescription() {
+ return description;
+ }
+
+ public void setDescription(String description) {
+ this.description = description;
+ }
+
+ public Short getVersion() {
+ return version;
+ }
+
+ public void setVersion(Short version) {
+ this.version = version;
+ }
+
+ public DmpStatus getStatus() {
+ return status;
+ }
+
+ public void setStatus(DmpStatus status) {
+ this.status = status;
+ }
+
+ public DmpAccessType getAccessType() {
+ return accessType;
+ }
+
+ public void setAccessType(DmpAccessType accessType) {
+ this.accessType = accessType;
+ }
+
+ public String getLanguage() {
+ return language;
+ }
+
+ public void setLanguage(String language) {
+ this.language = language;
+ }
+
+ public UUID getBlueprintId() {
+ return blueprintId;
+ }
+
+ public void setBlueprintId(UUID blueprintId) {
+ this.blueprintId = blueprintId;
+ }
+
+ public UUID getGroupId() {
+ return groupId;
+ }
+
+ public void setGroupId(UUID groupId) {
+ this.groupId = groupId;
+ }
+
+ public Date getFinalizedAt() {
+ return finalizedAt;
+ }
+
+ public void setFinalizedAt(Date finalizedAt) {
+ this.finalizedAt = finalizedAt;
+ }
+
+ public List getReferences() {
+ return references;
+ }
+
+ public void setReferences(List references) {
+ this.references = references;
+ }
+
+ public List getCollaborators() {
+ return collaborators;
+ }
+
+ public void setCollaborators(List collaborators) {
+ this.collaborators = collaborators;
+ }
+
+ public List getDescriptionTemplates() {
+ return descriptionTemplates;
+ }
+
+ public void setDescriptionTemplates(List descriptionTemplates) {
+ this.descriptionTemplates = descriptionTemplates;
+ }
+
+ public List getDescriptions() {
+ return descriptions;
+ }
+
+ public void setDescriptions(List descriptions) {
+ this.descriptions = descriptions;
+ }
+
+ public List getDois() {
+ return dois;
+ }
+
+ public void setDois(List dois) {
+ this.dois = dois;
+ }
+
+ public DmpVersionStatus getVersionStatus() {
+ return versionStatus;
+ }
+
+ public void setVersionStatus(DmpVersionStatus versionStatus) {
+ this.versionStatus = versionStatus;
+ }
+}
diff --git a/dmp-backend/core/src/main/java/eu/eudat/elastic/data/nested/NestedCollaboratorElasticEntity.java b/dmp-backend/core/src/main/java/eu/eudat/elastic/data/nested/NestedCollaboratorElasticEntity.java
new file mode 100644
index 000000000..c8c6326c9
--- /dev/null
+++ b/dmp-backend/core/src/main/java/eu/eudat/elastic/data/nested/NestedCollaboratorElasticEntity.java
@@ -0,0 +1,49 @@
+package eu.eudat.elastic.data.nested;
+
+import eu.eudat.commons.enums.DmpUserRole;
+import gr.cite.tools.elastic.ElasticConstants;
+import org.springframework.data.annotation.Id;
+import org.springframework.data.elasticsearch.annotations.*;
+
+import java.util.UUID;
+
+public class NestedCollaboratorElasticEntity {
+ @Id
+ @Field(value = NestedCollaboratorElasticEntity._id, type = FieldType.Keyword)
+ private UUID id;
+ public final static String _id = "id";
+
+ @MultiField(mainField = @Field(value = NestedCollaboratorElasticEntity._name, type = FieldType.Text), otherFields = {
+ @InnerField(suffix = ElasticConstants.SubFields.keyword, type = FieldType.Keyword)
+ })
+ private String name;
+ public final static String _name = "name";
+
+ @Field(value = NestedCollaboratorElasticEntity._role, type = FieldType.Short)
+ private DmpUserRole role;
+ public final static String _role = "role";
+
+ public UUID getId() {
+ return id;
+ }
+
+ public void setId(UUID id) {
+ this.id = id;
+ }
+
+ public String getName() {
+ return name;
+ }
+
+ public void setName(String name) {
+ this.name = name;
+ }
+
+ public DmpUserRole getRole() {
+ return role;
+ }
+
+ public void setRole(DmpUserRole role) {
+ this.role = role;
+ }
+}
diff --git a/dmp-backend/core/src/main/java/eu/eudat/elastic/data/nested/NestedDescriptionElasticEntity.java b/dmp-backend/core/src/main/java/eu/eudat/elastic/data/nested/NestedDescriptionElasticEntity.java
new file mode 100644
index 000000000..a08d0e34c
--- /dev/null
+++ b/dmp-backend/core/src/main/java/eu/eudat/elastic/data/nested/NestedDescriptionElasticEntity.java
@@ -0,0 +1,112 @@
+package eu.eudat.elastic.data.nested;
+
+import eu.eudat.commons.enums.DescriptionStatus;
+import gr.cite.tools.elastic.ElasticConstants;
+import org.springframework.data.annotation.Id;
+import org.springframework.data.elasticsearch.annotations.*;
+
+import java.util.Date;
+import java.util.List;
+import java.util.UUID;
+
+public class NestedDescriptionElasticEntity {
+
+ @Id
+ @Field(value = NestedDescriptionElasticEntity._id, type = FieldType.Keyword)
+ private UUID id;
+ public final static String _id = "id";
+
+ @Field(value = NestedDescriptionElasticEntity._dmpId, type = FieldType.Keyword)
+ private UUID dmpId;
+ public final static String _dmpId = "dmpId";
+
+ @MultiField(mainField = @Field(value = NestedDescriptionElasticEntity._label, type = FieldType.Text), otherFields = {
+ @InnerField(suffix = ElasticConstants.SubFields.keyword, type = FieldType.Keyword)
+ })
+ private String label;
+ public final static String _label = "label";
+
+ @Field(value = NestedDescriptionElasticEntity._description, type = FieldType.Text)
+ private String description;
+ public final static String _description = "description";
+
+ @Field(value = NestedDescriptionElasticEntity._status, type = FieldType.Short)
+ private DescriptionStatus status;
+ public final static String _status = "status";
+
+ @Field(value = NestedDescriptionElasticEntity._finalizedAt, type = FieldType.Date)
+ private Date finalizedAt;
+ public final static String _finalizedAt = "finalizedAt";
+
+ @Field(value = NestedDescriptionElasticEntity._tags, type = FieldType.Nested)
+ private List tags;
+ public final static String _tags = "tags";
+
+ @Field(value = NestedDescriptionElasticEntity._references, type = FieldType.Nested)
+ private List references;
+ public final static String _references = "references";
+
+ public UUID getId() {
+ return id;
+ }
+
+ public void setId(UUID id) {
+ this.id = id;
+ }
+
+ public UUID getDmpId() {
+ return dmpId;
+ }
+
+ public void setDmpId(UUID dmpId) {
+ this.dmpId = dmpId;
+ }
+
+ public String getLabel() {
+ return label;
+ }
+
+ public void setLabel(String label) {
+ this.label = label;
+ }
+
+ public String getDescription() {
+ return description;
+ }
+
+ public void setDescription(String description) {
+ this.description = description;
+ }
+
+ public DescriptionStatus getStatus() {
+ return status;
+ }
+
+ public void setStatus(DescriptionStatus status) {
+ this.status = status;
+ }
+
+ public Date getFinalizedAt() {
+ return finalizedAt;
+ }
+
+ public void setFinalizedAt(Date finalizedAt) {
+ this.finalizedAt = finalizedAt;
+ }
+
+ public List getTags() {
+ return tags;
+ }
+
+ public void setTags(List tags) {
+ this.tags = tags;
+ }
+
+ public List getReferences() {
+ return references;
+ }
+
+ public void setReferences(List references) {
+ this.references = references;
+ }
+}
diff --git a/dmp-backend/core/src/main/java/eu/eudat/elastic/data/nested/NestedDescriptionTemplateElasticEntity.java b/dmp-backend/core/src/main/java/eu/eudat/elastic/data/nested/NestedDescriptionTemplateElasticEntity.java
new file mode 100644
index 000000000..fc2ae5a27
--- /dev/null
+++ b/dmp-backend/core/src/main/java/eu/eudat/elastic/data/nested/NestedDescriptionTemplateElasticEntity.java
@@ -0,0 +1,53 @@
+package eu.eudat.elastic.data.nested;
+
+import eu.eudat.commons.enums.DescriptionTemplateVersionStatus;
+import eu.eudat.elastic.data.DescriptionElasticEntity;
+import gr.cite.tools.elastic.ElasticConstants;
+import org.springframework.data.annotation.Id;
+import org.springframework.data.elasticsearch.annotations.*;
+
+import java.util.UUID;
+
+public class NestedDescriptionTemplateElasticEntity {
+
+ @Id
+ @Field(value = NestedDescriptionTemplateElasticEntity._id, type = FieldType.Keyword)
+ private UUID id;
+ public final static String _id = "id";
+
+ @MultiField(mainField = @Field(value = NestedDescriptionTemplateElasticEntity._label, type = FieldType.Text), otherFields = {
+ @InnerField(suffix = ElasticConstants.SubFields.keyword, type = FieldType.Keyword)
+ })
+ private String label;
+ public final static String _label = "label";
+
+
+
+ @Field(value = NestedDescriptionTemplateElasticEntity._versionStatus, type = FieldType.Short)
+ private DescriptionTemplateVersionStatus versionStatus;
+ public final static String _versionStatus = "versionStatus";
+
+ public UUID getId() {
+ return id;
+ }
+
+ public void setId(UUID id) {
+ this.id = id;
+ }
+
+ public String getLabel() {
+ return label;
+ }
+
+ public void setLabel(String label) {
+ this.label = label;
+ }
+
+ public DescriptionTemplateVersionStatus getVersionStatus() {
+ return versionStatus;
+ }
+
+ public void setVersionStatus(DescriptionTemplateVersionStatus versionStatus) {
+ this.versionStatus = versionStatus;
+ }
+}
diff --git a/dmp-backend/core/src/main/java/eu/eudat/elastic/data/nested/NestedDmpElasticEntity.java b/dmp-backend/core/src/main/java/eu/eudat/elastic/data/nested/NestedDmpElasticEntity.java
new file mode 100644
index 000000000..e787c8c4c
--- /dev/null
+++ b/dmp-backend/core/src/main/java/eu/eudat/elastic/data/nested/NestedDmpElasticEntity.java
@@ -0,0 +1,186 @@
+package eu.eudat.elastic.data.nested;
+
+import eu.eudat.commons.enums.DmpAccessType;
+import eu.eudat.commons.enums.DmpStatus;
+import eu.eudat.commons.enums.DmpVersionStatus;
+import eu.eudat.elastic.data.DmpElasticEntity;
+import gr.cite.tools.elastic.ElasticConstants;
+import org.springframework.data.annotation.Id;
+import org.springframework.data.elasticsearch.annotations.*;
+
+import java.util.Date;
+import java.util.List;
+import java.util.UUID;
+
+public class NestedDmpElasticEntity {
+ @Id
+ @Field(value = NestedDmpElasticEntity._id, type = FieldType.Keyword)
+ private UUID id;
+ public final static String _id = "id";
+
+ @MultiField(mainField = @Field(value = NestedDmpElasticEntity._label, type = FieldType.Text), otherFields = {
+ @InnerField(suffix = ElasticConstants.SubFields.keyword, type = FieldType.Keyword)
+ })
+ private String label;
+ public final static String _label = "label";
+
+ @Field(value = NestedDmpElasticEntity._description, type = FieldType.Text)
+ private String description;
+ public final static String _description = "description";
+
+ @Field(value = NestedDmpElasticEntity._version, type = FieldType.Keyword)
+ private Short version;
+ public final static String _version = "version";
+
+ @Field(value = NestedDmpElasticEntity._versionStatus, type = FieldType.Short)
+ private DmpVersionStatus versionStatus;
+ public final static String _versionStatus = "versionStatus";
+
+ @Field(value = NestedDmpElasticEntity._status, type = FieldType.Short)
+ private DmpStatus status;
+ public final static String _status = "status";
+
+ @Field(value = NestedDmpElasticEntity._accessType, type = FieldType.Short)
+ private DmpAccessType accessType;
+ public final static String _accessType = "accessType";
+
+ @Field(value = NestedDmpElasticEntity._language, type = FieldType.Keyword)
+ private String language;
+ public final static String _language = "language";
+
+ @Field(value = NestedDmpElasticEntity._blueprintId, type = FieldType.Keyword)
+ private UUID blueprintId;
+ public final static String _blueprintId = "blueprintId";
+
+ @Field(value = NestedDmpElasticEntity._groupId, type = FieldType.Keyword)
+ private UUID groupId;
+ public final static String _groupId = "groupId";
+
+ @Field(value = NestedDmpElasticEntity._finalizedAt, type = FieldType.Date)
+ private Date finalizedAt;
+ public final static String _finalizedAt = "finalizedAt";
+
+ @Field(value = NestedDmpElasticEntity._references, type = FieldType.Nested)
+ private List references;
+ public final static String _references = "references";
+
+ @Field(value = NestedDmpElasticEntity._collaborators, type = FieldType.Nested)
+ private List collaborators;
+ public final static String _collaborators = "collaborators";
+
+ @Field(value = NestedDmpElasticEntity._dois, type = FieldType.Nested)
+ private List dois;
+ public final static String _dois = "dois";
+
+ public UUID getId() {
+ return id;
+ }
+
+ public void setId(UUID id) {
+ this.id = id;
+ }
+
+ public String getLabel() {
+ return label;
+ }
+
+ public void setLabel(String label) {
+ this.label = label;
+ }
+
+ public String getDescription() {
+ return description;
+ }
+
+ public void setDescription(String description) {
+ this.description = description;
+ }
+
+ public Short getVersion() {
+ return version;
+ }
+
+ public void setVersion(Short version) {
+ this.version = version;
+ }
+
+ public DmpStatus getStatus() {
+ return status;
+ }
+
+ public void setStatus(DmpStatus status) {
+ this.status = status;
+ }
+
+ public DmpAccessType getAccessType() {
+ return accessType;
+ }
+
+ public void setAccessType(DmpAccessType accessType) {
+ this.accessType = accessType;
+ }
+
+ public String getLanguage() {
+ return language;
+ }
+
+ public void setLanguage(String language) {
+ this.language = language;
+ }
+
+ public UUID getBlueprintId() {
+ return blueprintId;
+ }
+
+ public void setBlueprintId(UUID blueprintId) {
+ this.blueprintId = blueprintId;
+ }
+
+ public UUID getGroupId() {
+ return groupId;
+ }
+
+ public void setGroupId(UUID groupId) {
+ this.groupId = groupId;
+ }
+
+ public Date getFinalizedAt() {
+ return finalizedAt;
+ }
+
+ public void setFinalizedAt(Date finalizedAt) {
+ this.finalizedAt = finalizedAt;
+ }
+
+ public List getReferences() {
+ return references;
+ }
+
+ public void setReferences(List references) {
+ this.references = references;
+ }
+
+ public List getCollaborators() {
+ return collaborators;
+ }
+
+ public void setCollaborators(List collaborators) {
+ this.collaborators = collaborators;
+ }
+
+ public List getDois() {
+ return dois;
+ }
+
+ public void setDois(List dois) {
+ this.dois = dois;
+ }
+
+ public DmpVersionStatus getVersionStatus() {
+ return versionStatus;
+ }
+
+ public void setVersionStatus(DmpVersionStatus versionStatus) {
+ this.versionStatus = versionStatus;
+ }
+}
diff --git a/dmp-backend/core/src/main/java/eu/eudat/elastic/data/nested/NestedDoiElasticEntity.java b/dmp-backend/core/src/main/java/eu/eudat/elastic/data/nested/NestedDoiElasticEntity.java
new file mode 100644
index 000000000..73f258d6a
--- /dev/null
+++ b/dmp-backend/core/src/main/java/eu/eudat/elastic/data/nested/NestedDoiElasticEntity.java
@@ -0,0 +1,46 @@
+package eu.eudat.elastic.data.nested;
+
+import org.springframework.data.annotation.Id;
+import org.springframework.data.elasticsearch.annotations.*;
+
+import java.util.UUID;
+
+public class NestedDoiElasticEntity {
+
+ @Id
+ @Field(value = NestedDoiElasticEntity._id, type = FieldType.Keyword)
+ private UUID id;
+ public final static String _id = "id";
+
+ @Field(value = NestedDoiElasticEntity._repositoryId, type = FieldType.Keyword)
+ private String repositoryId;
+ public final static String _repositoryId = "repositoryId";
+
+ @Field(value = NestedDoiElasticEntity._doi, type = FieldType.Keyword)
+ private String doi;
+ public final static String _doi = "doi";
+
+ public UUID getId() {
+ return id;
+ }
+
+ public void setId(UUID id) {
+ this.id = id;
+ }
+
+ public String getRepositoryId() {
+ return repositoryId;
+ }
+
+ public void setRepositoryId(String repositoryId) {
+ this.repositoryId = repositoryId;
+ }
+
+ public String getDoi() {
+ return doi;
+ }
+
+ public void setDoi(String doi) {
+ this.doi = doi;
+ }
+}
diff --git a/dmp-backend/core/src/main/java/eu/eudat/elastic/data/nested/NestedReferenceElasticEntity.java b/dmp-backend/core/src/main/java/eu/eudat/elastic/data/nested/NestedReferenceElasticEntity.java
new file mode 100644
index 000000000..afe582927
--- /dev/null
+++ b/dmp-backend/core/src/main/java/eu/eudat/elastic/data/nested/NestedReferenceElasticEntity.java
@@ -0,0 +1,36 @@
+package eu.eudat.elastic.data.nested;
+
+import gr.cite.tools.elastic.ElasticConstants;
+import org.springframework.data.annotation.Id;
+import org.springframework.data.elasticsearch.annotations.*;
+
+import java.util.UUID;
+
+public class NestedReferenceElasticEntity {
+ @Id
+ @Field(value = NestedReferenceElasticEntity._id, type = FieldType.Keyword)
+ private UUID id;
+ public final static String _id = "id";
+
+ @MultiField(mainField = @Field(value = NestedReferenceElasticEntity._label, type = FieldType.Text), otherFields = {
+ @InnerField(suffix = ElasticConstants.SubFields.keyword, type = FieldType.Keyword)
+ })
+ private String label;
+ public final static String _label = "label";
+
+ public UUID getId() {
+ return id;
+ }
+
+ public void setId(UUID id) {
+ this.id = id;
+ }
+
+ public String getLabel() {
+ return label;
+ }
+
+ public void setLabel(String label) {
+ this.label = label;
+ }
+}
diff --git a/dmp-backend/core/src/main/java/eu/eudat/elastic/data/nested/NestedTagElasticEntity.java b/dmp-backend/core/src/main/java/eu/eudat/elastic/data/nested/NestedTagElasticEntity.java
new file mode 100644
index 000000000..707b45005
--- /dev/null
+++ b/dmp-backend/core/src/main/java/eu/eudat/elastic/data/nested/NestedTagElasticEntity.java
@@ -0,0 +1,36 @@
+package eu.eudat.elastic.data.nested;
+
+import org.springframework.data.annotation.Id;
+import org.springframework.data.elasticsearch.annotations.*;
+import gr.cite.tools.elastic.ElasticConstants;
+
+import java.util.UUID;
+
+public class NestedTagElasticEntity {
+ @Id
+ @Field(value = NestedTagElasticEntity._id, type = FieldType.Keyword)
+ private UUID id;
+ public final static String _id = "id";
+
+ @MultiField(mainField = @Field(value = NestedTagElasticEntity._label, type = FieldType.Text), otherFields = {
+ @InnerField(suffix = ElasticConstants.SubFields.keyword, type = FieldType.Keyword)
+ })
+ private String label;
+ public final static String _label = "label";
+
+ public UUID getId() {
+ return id;
+ }
+
+ public void setId(UUID id) {
+ this.id = id;
+ }
+
+ public String getLabel() {
+ return label;
+ }
+
+ public void setLabel(String label) {
+ this.label = label;
+ }
+}
diff --git a/dmp-backend/core/src/main/java/eu/eudat/elastic/elasticbuilder/BaseElasticBuilder.java b/dmp-backend/core/src/main/java/eu/eudat/elastic/elasticbuilder/BaseElasticBuilder.java
new file mode 100644
index 000000000..d06896183
--- /dev/null
+++ b/dmp-backend/core/src/main/java/eu/eudat/elastic/elasticbuilder/BaseElasticBuilder.java
@@ -0,0 +1,93 @@
+package eu.eudat.elastic.elasticbuilder;
+
+import eu.eudat.convention.ConventionService;
+import gr.cite.tools.data.builder.Builder;
+import gr.cite.tools.data.query.QueryBase;
+import gr.cite.tools.exception.MyApplicationException;
+import gr.cite.tools.logging.LoggerService;
+
+import java.time.Instant;
+import java.util.*;
+import java.util.function.Function;
+import java.util.stream.Collectors;
+
+public abstract class BaseElasticBuilder implements Builder {
+ protected final LoggerService logger;
+ protected final ConventionService conventionService;
+
+ public BaseElasticBuilder(
+ ConventionService conventionService,
+ LoggerService logger
+ ) {
+ this.conventionService = conventionService;
+ this.logger = logger;
+ }
+
+ public M build(D data) throws MyApplicationException {
+ if (data == null) {
+ M model = null;
+ return null; //TODO
+ }
+ List models = this.build(Arrays.asList(data));
+ return models.stream().findFirst().orElse(null); //TODO
+ }
+
+ public abstract List build(List datas) throws MyApplicationException;
+
+ public Map asForeignKey(QueryBase query, Function keySelector) throws MyApplicationException {
+ this.logger.trace("Building references from query");
+ List datas = query.collect();
+ this.logger.debug("collected {} items to build", Optional.ofNullable(datas).map(e -> e.size()).orElse(0));
+ return this.asForeignKey(datas, keySelector);
+ }
+
+ public Map asForeignKey(List datas, Function keySelector) throws MyApplicationException {
+ this.logger.trace("building references");
+ List models = this.build(datas);
+ this.logger.debug("mapping {} build items from {} requested", Optional.ofNullable(models).map(e -> e.size()).orElse(0), Optional.ofNullable(datas).map(e -> e.size()).orElse(0));
+ Map map = models.stream().collect(Collectors.toMap(o -> keySelector.apply(o), o -> o));
+ return map;
+ }
+
+ public Map> asMasterKey(QueryBase query, Function keySelector) throws MyApplicationException {
+ this.logger.trace("Building details from query");
+ List datas = query.collect();
+ this.logger.debug("collected {} items to build", Optional.ofNullable(datas).map(e -> e.size()).orElse(0));
+ return this.asMasterKey(datas, keySelector);
+ }
+
+ public Map> asMasterKey(List datas, Function keySelector) throws MyApplicationException {
+ this.logger.trace("building details");
+ List models = this.build(datas);
+ this.logger.debug("mapping {} build items from {} requested", Optional.ofNullable(models).map(e -> e.size()).orElse(0), Optional.ofNullable(datas).map(e -> e.size()).orElse(0));
+ Map> map = new HashMap<>();
+ for (M model : models) {
+ K key = keySelector.apply(model);
+ if (!map.containsKey(key)) map.put(key, new ArrayList());
+ map.get(key).add(model);
+ }
+ return map;
+ }
+
+ public Map asEmpty(List keys, Function mapper, Function keySelector) {
+ this.logger.trace("building static references");
+ List models = keys.stream().map(x -> mapper.apply(x)).collect(Collectors.toList());
+ this.logger.debug("mapping {} build items from {} requested", Optional.ofNullable(models).map(x -> x.size()).orElse(0), Optional.ofNullable(keys).map(x -> x.size()));
+ Map map = models.stream().collect(Collectors.toMap(o -> keySelector.apply(o), o -> o));
+ return map;
+ }
+
+ protected String hashValue(Instant value) throws MyApplicationException {
+ return this.conventionService.hashValue(value);
+ }
+
+ protected String asPrefix(String name) {
+ return this.conventionService.asPrefix(name);
+ }
+
+ protected String asIndexer(String... names) {
+ return this.conventionService.asIndexer(names);
+ }
+
+}
+
diff --git a/dmp-backend/core/src/main/java/eu/eudat/elastic/elasticbuilder/DescriptionElasticBuilder.java b/dmp-backend/core/src/main/java/eu/eudat/elastic/elasticbuilder/DescriptionElasticBuilder.java
new file mode 100644
index 000000000..ef5ce69ed
--- /dev/null
+++ b/dmp-backend/core/src/main/java/eu/eudat/elastic/elasticbuilder/DescriptionElasticBuilder.java
@@ -0,0 +1,149 @@
+package eu.eudat.elastic.elasticbuilder;
+
+import eu.eudat.commons.enums.IsActive;
+import eu.eudat.convention.ConventionService;
+import eu.eudat.data.DescriptionEntity;
+import eu.eudat.data.DescriptionReferenceEntity;
+import eu.eudat.data.DescriptionTagEntity;
+import eu.eudat.data.DmpDescriptionTemplateEntity;
+import eu.eudat.elastic.data.DescriptionElasticEntity;
+import eu.eudat.elastic.data.nested.*;
+import eu.eudat.elastic.elasticbuilder.nested.NestedDescriptionTemplateElasticBuilder;
+import eu.eudat.elastic.elasticbuilder.nested.NestedDmpElasticBuilder;
+import eu.eudat.elastic.elasticbuilder.nested.NestedReferenceElasticBuilder;
+import eu.eudat.elastic.elasticbuilder.nested.NestedTagElasticBuilder;
+import eu.eudat.model.*;
+import eu.eudat.model.builder.DescriptionBuilder;
+import eu.eudat.model.builder.ReferenceBuilder;
+import eu.eudat.query.*;
+import gr.cite.tools.data.builder.BuilderFactory;
+import gr.cite.tools.data.query.QueryFactory;
+import gr.cite.tools.exception.MyApplicationException;
+import gr.cite.tools.fieldset.BaseFieldSet;
+import gr.cite.tools.fieldset.FieldSet;
+import gr.cite.tools.logging.LoggerService;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.config.ConfigurableBeanFactory;
+import org.springframework.context.annotation.Scope;
+import org.springframework.stereotype.Component;
+
+import java.util.*;
+import java.util.stream.Collectors;
+
+@Component
+@Scope(value = ConfigurableBeanFactory.SCOPE_PROTOTYPE)
+public class DescriptionElasticBuilder extends BaseElasticBuilder {
+
+ private final QueryFactory queryFactory;
+ private final BuilderFactory builderFactory;
+
+ @Autowired
+ public DescriptionElasticBuilder(
+ ConventionService conventionService, QueryFactory queryFactory, BuilderFactory builderFactory) {
+ super(conventionService, new LoggerService(LoggerFactory.getLogger(DescriptionElasticBuilder.class)));
+ this.queryFactory = queryFactory;
+ this.builderFactory = builderFactory;
+ }
+
+ @Override
+ public List build(List data) throws MyApplicationException {
+ if (data == null)
+ return new ArrayList<>();
+
+ Map> referenceElasticEntityMap = this.collectDescriptionReferences(data);
+ Map> tagElasticEntityMap = this.collectDescriptionTags(data);
+ Map dmpElasticEntityMap = this.collectDmps(data);
+ Map descriptionTemplateElasticEntityMap = this.collectDescriptionTemplates(data);
+
+ List models = new ArrayList<>();
+ for (DescriptionEntity d : data) {
+ DescriptionElasticEntity m = new DescriptionElasticEntity();
+ m.setId(d.getId());
+ m.setLabel(d.getLabel());
+ m.setDescription(d.getDescription());
+ m.setStatus(d.getStatus());
+ m.setCreatedAt(Date.from(d.getCreatedAt()));
+ m.setFinalizedAt(Date.from(d.getFinalizedAt()));
+ if (referenceElasticEntityMap != null) m.setReferences(referenceElasticEntityMap.getOrDefault(d.getId(), null));
+ if (tagElasticEntityMap != null) m.setTags(tagElasticEntityMap.getOrDefault(d.getId(), null));
+ if (dmpElasticEntityMap != null) m.setDmp(dmpElasticEntityMap.getOrDefault(d.getDmpId(), null));
+ if (descriptionTemplateElasticEntityMap != null) m.setDescriptionTemplate(descriptionTemplateElasticEntityMap.getOrDefault(d.getDmpId(), null));
+ models.add(m);
+ }
+ this.logger.debug("build {} items", Optional.of(models).map(List::size).orElse(0));
+ return models;
+ }
+
+ private Map> collectDescriptionReferences(List data) throws MyApplicationException {
+ if (data.isEmpty()) return null;
+ this.logger.debug("checking related - {}", DescriptionReference.class.getSimpleName());
+
+ DescriptionReferenceQuery associationQuery = this.queryFactory.query(DescriptionReferenceQuery.class).descriptionIds(data.stream().map(DescriptionEntity::getId).collect(Collectors.toList())).isActive(IsActive.Active);
+ List associationEntities = associationQuery.collect();
+
+ ReferenceQuery query = this.queryFactory.query(ReferenceQuery.class).isActive(IsActive.Active).ids(associationEntities.stream().map(DescriptionReferenceEntity::getReferenceId).distinct().collect(Collectors.toList()));
+ Map itemMapById = this.builderFactory.builder(NestedReferenceElasticBuilder.class).asForeignKey(query, NestedReferenceElasticEntity::getId);
+
+ Map> itemMap = new HashMap<>();
+ for (DescriptionReferenceEntity associationEntity : associationEntities){
+ if (!itemMap.containsKey(associationEntity.getDescriptionId())) itemMap.put(associationEntity.getDescriptionId(), new ArrayList<>());
+ NestedReferenceElasticEntity item = itemMapById.getOrDefault(associationEntity.getReferenceId(), null);
+ if (item != null) itemMap.get(associationEntity.getDescriptionId()).add(item);
+ }
+
+ return itemMap;
+ }
+
+ private Map> collectDescriptionTags(List data) throws MyApplicationException {
+ if (data.isEmpty()) return null;
+ this.logger.debug("checking related - {}", DescriptionTag.class.getSimpleName());
+
+ DescriptionTagQuery associationQuery = this.queryFactory.query(DescriptionTagQuery.class).descriptionIds(data.stream().map(DescriptionEntity::getId).collect(Collectors.toList())).isActive(IsActive.Active);
+ List associationEntities = associationQuery.collect();
+
+ TagQuery query = this.queryFactory.query(TagQuery.class).isActive(IsActive.Active).ids(associationEntities.stream().map(DescriptionTagEntity::getTagId).distinct().collect(Collectors.toList()));
+ Map itemMapById = this.builderFactory.builder(NestedTagElasticBuilder.class).asForeignKey(query, NestedTagElasticEntity::getId);
+
+ Map> itemMap = new HashMap<>();
+ for (DescriptionTagEntity associationEntity : associationEntities){
+ if (!itemMap.containsKey(associationEntity.getDescriptionId())) itemMap.put(associationEntity.getDescriptionId(), new ArrayList<>());
+ NestedTagElasticEntity item = itemMapById.getOrDefault(associationEntity.getTagId(), null);
+ if (item != null) itemMap.get(associationEntity.getDescriptionId()).add(item);
+ }
+
+ return itemMap;
+ }
+
+ private Map collectDmps(List data) throws MyApplicationException {
+ if (data.isEmpty())
+ return null;
+ this.logger.debug("checking related - {}", Dmp.class.getSimpleName());
+
+ Map itemMap;
+ DmpQuery q = this.queryFactory.query(DmpQuery.class).isActive(IsActive.Active).ids(data.stream().map(DescriptionEntity::getDmpId).distinct().collect(Collectors.toList()));
+ itemMap = this.builderFactory.builder(NestedDmpElasticBuilder.class).asForeignKey(q, NestedDmpElasticEntity::getId);
+
+ return itemMap;
+ }
+
+
+
+ private Map collectDescriptionTemplates(List data) throws MyApplicationException {
+ if (data.isEmpty())
+ return null;
+ this.logger.debug("checking related - {}", DescriptionTemplate.class.getSimpleName());
+
+ DmpDescriptionTemplateQuery associationQuery = this.queryFactory.query(DmpDescriptionTemplateQuery.class).ids(data.stream().map(DescriptionEntity::getDmpDescriptionTemplateId).collect(Collectors.toList())).isActive(IsActive.Active);
+ List associationEntities = associationQuery.collect();
+
+ DescriptionTemplateQuery query = this.queryFactory.query(DescriptionTemplateQuery.class).isActive(IsActive.Active).ids(associationEntities.stream().map(DmpDescriptionTemplateEntity::getDescriptionTemplateId).distinct().collect(Collectors.toList()));
+ Map itemMapById = this.builderFactory.builder(NestedDescriptionTemplateElasticBuilder.class).asForeignKey(query, NestedDescriptionTemplateElasticEntity::getId);
+
+ Map itemMap = new HashMap<>();
+ for (DmpDescriptionTemplateEntity associationEntity : associationEntities){
+ itemMap.put(associationEntity.getId(), itemMapById.getOrDefault(associationEntity.getDescriptionTemplateId(), null));
+ }
+ return itemMap;
+ }
+}
diff --git a/dmp-backend/core/src/main/java/eu/eudat/elastic/elasticbuilder/DmpElasticBuilder.java b/dmp-backend/core/src/main/java/eu/eudat/elastic/elasticbuilder/DmpElasticBuilder.java
new file mode 100644
index 000000000..e9ffc51e7
--- /dev/null
+++ b/dmp-backend/core/src/main/java/eu/eudat/elastic/elasticbuilder/DmpElasticBuilder.java
@@ -0,0 +1,164 @@
+package eu.eudat.elastic.elasticbuilder;
+
+import eu.eudat.commons.enums.IsActive;
+import eu.eudat.convention.ConventionService;
+import eu.eudat.data.*;
+import eu.eudat.elastic.data.DmpElasticEntity;
+import eu.eudat.elastic.data.nested.*;
+import eu.eudat.elastic.elasticbuilder.nested.*;
+import eu.eudat.model.DmpReference;
+import eu.eudat.query.*;
+import gr.cite.tools.data.builder.BuilderFactory;
+import gr.cite.tools.data.query.QueryFactory;
+import gr.cite.tools.exception.MyApplicationException;
+import gr.cite.tools.logging.LoggerService;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.config.ConfigurableBeanFactory;
+import org.springframework.context.annotation.Scope;
+import org.springframework.stereotype.Component;
+
+import java.util.*;
+import java.util.stream.Collectors;
+
+@Component
+@Scope(value = ConfigurableBeanFactory.SCOPE_PROTOTYPE)
+public class DmpElasticBuilder extends BaseElasticBuilder {
+
+ private final QueryFactory queryFactory;
+ private final BuilderFactory builderFactory;
+
+ @Autowired
+ public DmpElasticBuilder(
+ ConventionService conventionService, QueryFactory queryFactory, BuilderFactory builderFactory) {
+ super(conventionService, new LoggerService(LoggerFactory.getLogger(DmpElasticBuilder.class)));
+ this.queryFactory = queryFactory;
+ this.builderFactory = builderFactory;
+ }
+
+ @Override
+ public List build(List data) throws MyApplicationException {
+ if (data == null)
+ return new ArrayList<>();
+
+ Map> referenceElasticEntityMap = this.collectDmpReferences(data);
+ Map> dmpElasticEntityMap = this.collectDescriptions(data);
+ Map> collaboratorElasticEntityMap = this.collectCollaborators(data);
+ Map> doiElasticEntityMap = this.collectDois(data);
+ Map> descriptionTemplateElasticEntityMap = this.collectDescriptionTemplates(data);
+
+ List models = new ArrayList<>();
+ for (DmpEntity d : data) {
+ DmpElasticEntity m = new DmpElasticEntity();
+ m.setId(d.getId());
+ m.setLabel(d.getLabel());
+ m.setDescription(d.getDescription());
+ m.setVersion(d.getVersion());
+ m.setVersionStatus(d.getVersionStatus());
+ m.setStatus(d.getStatus());
+ m.setAccessType(d.getAccessType());
+ m.setLanguage(d.getLanguage());
+ m.setBlueprintId(d.getBlueprint());
+ m.setGroupId(d.getGroupId());
+ m.setFinalizedAt(Date.from(d.getFinalizedAt()));
+ if (referenceElasticEntityMap != null) m.setReferences(referenceElasticEntityMap.getOrDefault(d.getId(), null));
+ if (dmpElasticEntityMap != null) m.setDescriptions(dmpElasticEntityMap.getOrDefault(d.getId(), null));
+ if (collaboratorElasticEntityMap != null) m.setCollaborators(collaboratorElasticEntityMap.getOrDefault(d.getId(), null));
+ if (doiElasticEntityMap != null) m.setDois(doiElasticEntityMap.getOrDefault(d.getId(), null));
+ if (descriptionTemplateElasticEntityMap != null) m.setDescriptionTemplates(descriptionTemplateElasticEntityMap.getOrDefault(d.getId(), null));
+ models.add(m);
+ }
+ this.logger.debug("build {} items", Optional.of(models).map(List::size).orElse(0));
+ return models;
+ }
+
+ private Map> collectDmpReferences(List data) throws MyApplicationException {
+ if (data.isEmpty()) return null;
+ this.logger.debug("checking related - {}", DmpReference.class.getSimpleName());
+
+ DmpReferenceQuery associationQuery = this.queryFactory.query(DmpReferenceQuery.class).dmpIds(data.stream().map(DmpEntity::getId).collect(Collectors.toList())).isActives(IsActive.Active);
+ List associationEntities = associationQuery.collect();
+
+ ReferenceQuery query = this.queryFactory.query(ReferenceQuery.class).isActive(IsActive.Active).ids(associationEntities.stream().map(DmpReferenceEntity::getReferenceId).distinct().collect(Collectors.toList()));
+ Map itemMapById = this.builderFactory.builder(NestedReferenceElasticBuilder.class).asForeignKey(query, NestedReferenceElasticEntity::getId);
+
+ Map> itemMap = new HashMap<>();
+ for (DmpReferenceEntity associationEntity : associationEntities){
+ if (!itemMap.containsKey(associationEntity.getDmpId())) itemMap.put(associationEntity.getDmpId(), new ArrayList<>());
+ NestedReferenceElasticEntity item = itemMapById.getOrDefault(associationEntity.getReferenceId(), null);
+ if (item != null) itemMap.get(associationEntity.getDmpId()).add(item);
+ }
+
+ return itemMap;
+ }
+
+ private Map> collectDescriptionTemplates(List data) throws MyApplicationException {
+ if (data.isEmpty()) return null;
+ this.logger.debug("checking related - {}", DmpReference.class.getSimpleName());
+
+ DmpDescriptionTemplateQuery associationQuery = this.queryFactory.query(DmpDescriptionTemplateQuery.class).dmpIds(data.stream().map(DmpEntity::getId).collect(Collectors.toList())).isActive(IsActive.Active);
+ List associationEntities = associationQuery.collect();
+
+ DescriptionTemplateQuery query = this.queryFactory.query(DescriptionTemplateQuery.class).isActive(IsActive.Active).ids(associationEntities.stream().map(DmpDescriptionTemplateEntity::getDescriptionTemplateId).distinct().collect(Collectors.toList()));
+ Map itemMapById = this.builderFactory.builder(NestedDescriptionTemplateElasticBuilder.class).asForeignKey(query, NestedDescriptionTemplateElasticEntity::getId);
+
+ Map> itemMap = new HashMap<>();
+ for (DmpDescriptionTemplateEntity associationEntity : associationEntities){
+ if (!itemMap.containsKey(associationEntity.getDmpId())) itemMap.put(associationEntity.getDmpId(), new ArrayList<>());
+ NestedDescriptionTemplateElasticEntity item = itemMapById.getOrDefault(associationEntity.getDescriptionTemplateId(), null);
+ if (item != null) itemMap.get(associationEntity.getDmpId()).add(item);
+ }
+
+ return itemMap;
+ }
+
+ private Map> collectDescriptions(List data) throws MyApplicationException {
+ if (data.isEmpty())
+ return null;
+ this.logger.debug("checking related - {}", DescriptionEntity.class.getSimpleName());
+
+ Map> itemMap;
+ DescriptionQuery q = this.queryFactory.query(DescriptionQuery.class).isActive(IsActive.Active).dmpSubQuery(this.queryFactory.query(DmpQuery.class).ids(data.stream().map(DmpEntity::getId).distinct().collect(Collectors.toList())));
+ itemMap = this.builderFactory.builder(NestedDescriptionElasticBuilder.class).asMasterKey(q, NestedDescriptionElasticEntity::getDmpId);
+
+ return itemMap;
+ }
+
+ private Map> collectCollaborators(List data) throws MyApplicationException {
+ if (data.isEmpty())
+ return null;
+ this.logger.debug("checking related - {}", DmpUserEntity.class.getSimpleName());
+
+ DmpUserQuery associationQuery = this.queryFactory.query(DmpUserQuery.class).dmpIds(data.stream().map(DmpEntity::getId).collect(Collectors.toList())).isActives(IsActive.Active);
+ List associationEntities = associationQuery.collect();
+
+ Map itemMapById = this.builderFactory.builder(NestedCollaboratorElasticBuilder.class).asForeignKey(associationEntities, NestedCollaboratorElasticEntity::getId);
+
+ Map> itemMap = new HashMap<>();
+ for (DmpUserEntity associationEntity : associationEntities){
+ if (!itemMap.containsKey(associationEntity.getId())) itemMap.put(associationEntity.getDmp(), new ArrayList<>());
+ NestedCollaboratorElasticEntity item = itemMapById.getOrDefault(associationEntity.getId(), null);
+ if (item != null) itemMap.get(associationEntity.getDmp()).add(item);
+ }
+ return itemMap;
+ }
+
+ private Map> collectDois(List data) throws MyApplicationException {
+ if (data.isEmpty())
+ return null;
+ this.logger.debug("checking related - {}", EntityDoiEntity.class.getSimpleName());
+
+ EntityDoiQuery associationQuery = this.queryFactory.query(EntityDoiQuery.class).entityIds(data.stream().map(DmpEntity::getId).collect(Collectors.toList())).isActive(IsActive.Active);
+ List associationEntities = associationQuery.collect();
+
+ Map itemMapById = this.builderFactory.builder(NestedDoiElasticBuilder.class).asForeignKey(associationEntities, NestedDoiElasticEntity::getId);
+
+ Map> itemMap = new HashMap<>();
+ for (EntityDoiEntity associationEntity : associationEntities){
+ if (!itemMap.containsKey(associationEntity.getId())) itemMap.put(associationEntity.getEntityId(), new ArrayList<>());
+ NestedDoiElasticEntity item = itemMapById.getOrDefault(associationEntity.getId(), null);
+ if (item != null) itemMap.get(associationEntity.getEntityId()).add(item);
+ }
+ return itemMap;
+ }
+}
diff --git a/dmp-backend/core/src/main/java/eu/eudat/elastic/elasticbuilder/nested/NestedCollaboratorElasticBuilder.java b/dmp-backend/core/src/main/java/eu/eudat/elastic/elasticbuilder/nested/NestedCollaboratorElasticBuilder.java
new file mode 100644
index 000000000..63ac8c863
--- /dev/null
+++ b/dmp-backend/core/src/main/java/eu/eudat/elastic/elasticbuilder/nested/NestedCollaboratorElasticBuilder.java
@@ -0,0 +1,45 @@
+package eu.eudat.elastic.elasticbuilder.nested;
+
+import eu.eudat.convention.ConventionService;
+import eu.eudat.data.DmpUserEntity;
+import eu.eudat.elastic.data.nested.NestedCollaboratorElasticEntity;
+import eu.eudat.elastic.elasticbuilder.BaseElasticBuilder;
+import gr.cite.tools.exception.MyApplicationException;
+import gr.cite.tools.logging.LoggerService;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.config.ConfigurableBeanFactory;
+import org.springframework.context.annotation.Scope;
+import org.springframework.stereotype.Component;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Optional;
+
+@Component
+@Scope(value = ConfigurableBeanFactory.SCOPE_PROTOTYPE)
+public class NestedCollaboratorElasticBuilder extends BaseElasticBuilder {
+
+ @Autowired
+ public NestedCollaboratorElasticBuilder(
+ ConventionService conventionService) {
+ super(conventionService, new LoggerService(LoggerFactory.getLogger(NestedCollaboratorElasticBuilder.class)));
+ }
+
+ @Override
+ public List build(List data) throws MyApplicationException {
+ if (data == null)
+ return new ArrayList<>();
+
+ List