From ded9f6c61b00e81641bec6a55e6f9fe016f49b20 Mon Sep 17 00:00:00 2001 From: Claudio Atzori Date: Thu, 13 Jan 2022 12:18:53 +0100 Subject: [PATCH 1/3] added validation constraints to Oaf model classes --- pom.xml | 27 ++++++++++++++++--- .../dnetlib/dhp/schema/oaf/AccessRight.java | 3 +++ .../eu/dnetlib/dhp/schema/oaf/Author.java | 7 +++++ .../eu/dnetlib/dhp/schema/oaf/Context.java | 6 +++++ .../eu/dnetlib/dhp/schema/oaf/DataInfo.java | 11 ++++++++ .../java/eu/dnetlib/dhp/schema/oaf/Field.java | 3 +++ .../eu/dnetlib/dhp/schema/oaf/Instance.java | 8 ++++++ .../eu/dnetlib/dhp/schema/oaf/KeyValue.java | 4 +++ .../java/eu/dnetlib/dhp/schema/oaf/Oaf.java | 4 +++ .../eu/dnetlib/dhp/schema/oaf/OafEntity.java | 4 +++ .../eu/dnetlib/dhp/schema/oaf/Qualifier.java | 9 +++++++ .../eu/dnetlib/dhp/schema/oaf/Relation.java | 7 +++++ .../eu/dnetlib/dhp/schema/oaf/Result.java | 4 +++ .../dhp/schema/oaf/StructuredProperty.java | 5 ++++ 14 files changed, 99 insertions(+), 3 deletions(-) diff --git a/pom.xml b/pom.xml index 13f5ca0..e1e69a7 100644 --- a/pom.xml +++ b/pom.xml @@ -315,6 +315,24 @@ 2.4 + + javax.validation + validation-api + 2.0.1.Final + + + + com.github.victools + jsonschema-generator + ${jsonschemagenerator.version} + + + + com.github.imifou + jsonschema-module-addon + 1.2.1 + + com.fasterxml.jackson.core jackson-databind @@ -389,16 +407,19 @@ javax.persistence javax.persistence-api + + + javax.validation + validation-api + + com.github.victools jsonschema-generator - ${jsonschemagenerator.version} - com.github.imifou jsonschema-module-addon - 1.2.1 diff --git a/src/main/java/eu/dnetlib/dhp/schema/oaf/AccessRight.java b/src/main/java/eu/dnetlib/dhp/schema/oaf/AccessRight.java index c680555..e5751b1 100644 --- a/src/main/java/eu/dnetlib/dhp/schema/oaf/AccessRight.java +++ b/src/main/java/eu/dnetlib/dhp/schema/oaf/AccessRight.java @@ -3,11 +3,14 @@ package eu.dnetlib.dhp.schema.oaf; import java.util.Optional; +import javax.validation.constraints.NotNull; + /** * This class models the access rights of research products. */ public class AccessRight extends Qualifier { + @NotNull private OpenAccessRoute openAccessRoute; public OpenAccessRoute getOpenAccessRoute() { diff --git a/src/main/java/eu/dnetlib/dhp/schema/oaf/Author.java b/src/main/java/eu/dnetlib/dhp/schema/oaf/Author.java index b2f757d..5c6f9a4 100644 --- a/src/main/java/eu/dnetlib/dhp/schema/oaf/Author.java +++ b/src/main/java/eu/dnetlib/dhp/schema/oaf/Author.java @@ -4,8 +4,13 @@ package eu.dnetlib.dhp.schema.oaf; import java.io.Serializable; import java.util.*; +import javax.validation.constraints.Min; +import javax.validation.constraints.NotBlank; +import javax.validation.constraints.NotNull; + public class Author implements Serializable { + @NotBlank private String fullname; private String name; @@ -13,6 +18,8 @@ public class Author implements Serializable { private String surname; // START WITH 1 + @NotNull + @Min(1) private Integer rank; private List pid; diff --git a/src/main/java/eu/dnetlib/dhp/schema/oaf/Context.java b/src/main/java/eu/dnetlib/dhp/schema/oaf/Context.java index 57912c4..6a51d6b 100644 --- a/src/main/java/eu/dnetlib/dhp/schema/oaf/Context.java +++ b/src/main/java/eu/dnetlib/dhp/schema/oaf/Context.java @@ -4,9 +4,15 @@ package eu.dnetlib.dhp.schema.oaf; import java.io.Serializable; import java.util.List; +import javax.validation.constraints.NotBlank; +import javax.validation.constraints.NotNull; + public class Context implements Serializable { + + @NotBlank private String id; + @NotNull private List dataInfo; public String getId() { diff --git a/src/main/java/eu/dnetlib/dhp/schema/oaf/DataInfo.java b/src/main/java/eu/dnetlib/dhp/schema/oaf/DataInfo.java index 9d572ee..9992ff8 100644 --- a/src/main/java/eu/dnetlib/dhp/schema/oaf/DataInfo.java +++ b/src/main/java/eu/dnetlib/dhp/schema/oaf/DataInfo.java @@ -4,13 +4,24 @@ package eu.dnetlib.dhp.schema.oaf; import java.io.Serializable; import java.util.Objects; +import javax.validation.constraints.NotBlank; +import javax.validation.constraints.NotNull; + public class DataInfo implements Serializable { + @NotNull private Boolean invisible = false; + + @NotNull private Boolean inferred; + + @NotNull private Boolean deletedbyinference = false; private String trust; + private String inferenceprovenance; + + @NotNull private Qualifier provenanceaction; public Boolean getInvisible() { diff --git a/src/main/java/eu/dnetlib/dhp/schema/oaf/Field.java b/src/main/java/eu/dnetlib/dhp/schema/oaf/Field.java index 8358bc4..9f82124 100644 --- a/src/main/java/eu/dnetlib/dhp/schema/oaf/Field.java +++ b/src/main/java/eu/dnetlib/dhp/schema/oaf/Field.java @@ -4,8 +4,11 @@ package eu.dnetlib.dhp.schema.oaf; import java.io.Serializable; import java.util.Objects; +import javax.validation.constraints.NotBlank; + public class Field implements Serializable { + @NotBlank private T value; private DataInfo dataInfo; diff --git a/src/main/java/eu/dnetlib/dhp/schema/oaf/Instance.java b/src/main/java/eu/dnetlib/dhp/schema/oaf/Instance.java index 6bb2908..5907d78 100644 --- a/src/main/java/eu/dnetlib/dhp/schema/oaf/Instance.java +++ b/src/main/java/eu/dnetlib/dhp/schema/oaf/Instance.java @@ -4,21 +4,28 @@ package eu.dnetlib.dhp.schema.oaf; import java.io.Serializable; import java.util.List; +import javax.validation.constraints.NotNull; + public class Instance implements Serializable { private Field license; + @NotNull private AccessRight accessright; + @NotNull private Qualifier instancetype; + @NotNull private KeyValue hostedby; + @NotNull private List url; // other research products specifc private String distributionlocation; + @NotNull private KeyValue collectedfrom; private List pid; @@ -35,6 +42,7 @@ public class Instance implements Serializable { // typed results private Field processingchargecurrency; + @NotNull private Qualifier refereed; // peer-review status private List measures; diff --git a/src/main/java/eu/dnetlib/dhp/schema/oaf/KeyValue.java b/src/main/java/eu/dnetlib/dhp/schema/oaf/KeyValue.java index 4e2d601..c274a96 100644 --- a/src/main/java/eu/dnetlib/dhp/schema/oaf/KeyValue.java +++ b/src/main/java/eu/dnetlib/dhp/schema/oaf/KeyValue.java @@ -3,14 +3,18 @@ package eu.dnetlib.dhp.schema.oaf; import java.io.Serializable; +import javax.validation.constraints.NotNull; + import org.apache.commons.lang3.StringUtils; import com.fasterxml.jackson.annotation.JsonIgnore; public class KeyValue implements Serializable { + @NotNull private String key; + @NotNull private String value; private DataInfo dataInfo; diff --git a/src/main/java/eu/dnetlib/dhp/schema/oaf/Oaf.java b/src/main/java/eu/dnetlib/dhp/schema/oaf/Oaf.java index 494123f..8d8d4cd 100644 --- a/src/main/java/eu/dnetlib/dhp/schema/oaf/Oaf.java +++ b/src/main/java/eu/dnetlib/dhp/schema/oaf/Oaf.java @@ -9,13 +9,17 @@ import java.util.Optional; import java.util.stream.Collectors; import java.util.stream.Stream; +import javax.validation.constraints.NotNull; + public abstract class Oaf implements Serializable { /** * The list of datasource id/name pairs providing this relationship. */ + @NotNull protected List collectedfrom; + @NotNull private DataInfo dataInfo; private Long lastupdatetimestamp; diff --git a/src/main/java/eu/dnetlib/dhp/schema/oaf/OafEntity.java b/src/main/java/eu/dnetlib/dhp/schema/oaf/OafEntity.java index 0411821..fe0a07f 100644 --- a/src/main/java/eu/dnetlib/dhp/schema/oaf/OafEntity.java +++ b/src/main/java/eu/dnetlib/dhp/schema/oaf/OafEntity.java @@ -5,14 +5,18 @@ import java.io.Serializable; import java.util.*; import java.util.stream.Collectors; +import javax.validation.constraints.NotBlank; + public abstract class OafEntity extends Oaf implements Serializable { + @NotBlank private String id; private List originalId; private List pid; + @NotBlank private String dateofcollection; private String dateoftransformation; diff --git a/src/main/java/eu/dnetlib/dhp/schema/oaf/Qualifier.java b/src/main/java/eu/dnetlib/dhp/schema/oaf/Qualifier.java index 87ecb55..d5f0e1b 100644 --- a/src/main/java/eu/dnetlib/dhp/schema/oaf/Qualifier.java +++ b/src/main/java/eu/dnetlib/dhp/schema/oaf/Qualifier.java @@ -3,15 +3,24 @@ package eu.dnetlib.dhp.schema.oaf; import java.io.Serializable; +import javax.validation.constraints.NotBlank; + import org.apache.commons.lang3.StringUtils; import com.fasterxml.jackson.annotation.JsonIgnore; public class Qualifier implements Serializable { + @NotBlank private String classid; + + @NotBlank private String classname; + + @NotBlank private String schemeid; + + @NotBlank private String schemename; public String getClassid() { diff --git a/src/main/java/eu/dnetlib/dhp/schema/oaf/Relation.java b/src/main/java/eu/dnetlib/dhp/schema/oaf/Relation.java index fc6c5e0..a1c6316 100644 --- a/src/main/java/eu/dnetlib/dhp/schema/oaf/Relation.java +++ b/src/main/java/eu/dnetlib/dhp/schema/oaf/Relation.java @@ -8,6 +8,8 @@ import java.util.ArrayList; import java.util.List; import java.util.Objects; +import javax.validation.constraints.NotBlank; + import eu.dnetlib.dhp.schema.common.ModelSupport; /** @@ -21,27 +23,32 @@ public class Relation extends Oaf { /** * Main relationship classifier, values include 'resultResult', 'resultProject', 'resultOrganization', etc. */ + @NotBlank private String relType; /** * Further classifies a relationship, values include 'affiliation', 'similarity', 'supplement', etc. */ + @NotBlank private String subRelType; /** * Indicates the direction of the relationship, values include 'isSupplementTo', 'isSupplementedBy', 'merges, * 'isMergedIn'. */ + @NotBlank private String relClass; /** * The source entity id. */ + @NotBlank private String source; /** * The target entity id. */ + @NotBlank private String target; /** diff --git a/src/main/java/eu/dnetlib/dhp/schema/oaf/Result.java b/src/main/java/eu/dnetlib/dhp/schema/oaf/Result.java index db30bf6..db8261a 100644 --- a/src/main/java/eu/dnetlib/dhp/schema/oaf/Result.java +++ b/src/main/java/eu/dnetlib/dhp/schema/oaf/Result.java @@ -8,6 +8,8 @@ import java.util.Objects; import java.util.Optional; import java.util.stream.Collectors; +import javax.validation.constraints.NotNull; + import eu.dnetlib.dhp.schema.common.AccessRightComparator; import eu.dnetlib.dhp.schema.common.ModelConstants; @@ -18,6 +20,7 @@ public class Result extends OafEntity implements Serializable { private List author; // resulttype allows subclassing results into publications | datasets | software + @NotNull private Qualifier resulttype; // common fields @@ -57,6 +60,7 @@ public class Result extends OafEntity implements Serializable { private List externalReference; + @NotNull private List instance; public List getMeasures() { diff --git a/src/main/java/eu/dnetlib/dhp/schema/oaf/StructuredProperty.java b/src/main/java/eu/dnetlib/dhp/schema/oaf/StructuredProperty.java index 8750950..d416709 100644 --- a/src/main/java/eu/dnetlib/dhp/schema/oaf/StructuredProperty.java +++ b/src/main/java/eu/dnetlib/dhp/schema/oaf/StructuredProperty.java @@ -6,12 +6,17 @@ import java.util.Optional; import java.util.stream.Collectors; import java.util.stream.Stream; +import javax.validation.constraints.NotBlank; +import javax.validation.constraints.NotNull; + import org.apache.commons.lang3.StringUtils; public class StructuredProperty implements Serializable { + @NotBlank private String value; + @NotNull private Qualifier qualifier; private DataInfo dataInfo; -- 2.17.1 From b4e3359327b2601680659eb93e778f2d6f58f7bd Mon Sep 17 00:00:00 2001 From: Claudio Atzori Date: Fri, 14 Jan 2022 09:04:07 +0100 Subject: [PATCH 2/3] added validation constraints to Oaf model classes --- src/main/java/eu/dnetlib/dhp/schema/oaf/Instance.java | 4 +++- src/main/java/eu/dnetlib/dhp/schema/oaf/KeyValue.java | 5 +++-- src/main/java/eu/dnetlib/dhp/schema/oaf/Oaf.java | 6 +++++- src/main/java/eu/dnetlib/dhp/schema/oaf/Result.java | 7 +++++-- 4 files changed, 16 insertions(+), 6 deletions(-) diff --git a/src/main/java/eu/dnetlib/dhp/schema/oaf/Instance.java b/src/main/java/eu/dnetlib/dhp/schema/oaf/Instance.java index 5907d78..1657f8f 100644 --- a/src/main/java/eu/dnetlib/dhp/schema/oaf/Instance.java +++ b/src/main/java/eu/dnetlib/dhp/schema/oaf/Instance.java @@ -4,6 +4,8 @@ package eu.dnetlib.dhp.schema.oaf; import java.io.Serializable; import java.util.List; +import javax.validation.constraints.NotBlank; +import javax.validation.constraints.NotEmpty; import javax.validation.constraints.NotNull; public class Instance implements Serializable { @@ -19,7 +21,7 @@ public class Instance implements Serializable { @NotNull private KeyValue hostedby; - @NotNull + @NotEmpty private List url; // other research products specifc diff --git a/src/main/java/eu/dnetlib/dhp/schema/oaf/KeyValue.java b/src/main/java/eu/dnetlib/dhp/schema/oaf/KeyValue.java index c274a96..8bc3707 100644 --- a/src/main/java/eu/dnetlib/dhp/schema/oaf/KeyValue.java +++ b/src/main/java/eu/dnetlib/dhp/schema/oaf/KeyValue.java @@ -3,6 +3,7 @@ package eu.dnetlib.dhp.schema.oaf; import java.io.Serializable; +import javax.validation.constraints.NotBlank; import javax.validation.constraints.NotNull; import org.apache.commons.lang3.StringUtils; @@ -11,10 +12,10 @@ import com.fasterxml.jackson.annotation.JsonIgnore; public class KeyValue implements Serializable { - @NotNull + @NotBlank private String key; - @NotNull + @NotBlank private String value; private DataInfo dataInfo; diff --git a/src/main/java/eu/dnetlib/dhp/schema/oaf/Oaf.java b/src/main/java/eu/dnetlib/dhp/schema/oaf/Oaf.java index 8d8d4cd..9bbcac2 100644 --- a/src/main/java/eu/dnetlib/dhp/schema/oaf/Oaf.java +++ b/src/main/java/eu/dnetlib/dhp/schema/oaf/Oaf.java @@ -9,6 +9,8 @@ import java.util.Optional; import java.util.stream.Collectors; import java.util.stream.Stream; +import javax.validation.Valid; +import javax.validation.constraints.NotEmpty; import javax.validation.constraints.NotNull; public abstract class Oaf implements Serializable { @@ -16,9 +18,11 @@ public abstract class Oaf implements Serializable { /** * The list of datasource id/name pairs providing this relationship. */ - @NotNull + @Valid + @NotEmpty protected List collectedfrom; + @Valid @NotNull private DataInfo dataInfo; diff --git a/src/main/java/eu/dnetlib/dhp/schema/oaf/Result.java b/src/main/java/eu/dnetlib/dhp/schema/oaf/Result.java index db8261a..0269fd4 100644 --- a/src/main/java/eu/dnetlib/dhp/schema/oaf/Result.java +++ b/src/main/java/eu/dnetlib/dhp/schema/oaf/Result.java @@ -5,9 +5,10 @@ import java.io.Serializable; import java.util.Comparator; import java.util.List; import java.util.Objects; -import java.util.Optional; import java.util.stream.Collectors; +import javax.validation.Valid; +import javax.validation.constraints.NotEmpty; import javax.validation.constraints.NotNull; import eu.dnetlib.dhp.schema.common.AccessRightComparator; @@ -20,6 +21,7 @@ public class Result extends OafEntity implements Serializable { private List author; // resulttype allows subclassing results into publications | datasets | software + @Valid @NotNull private Qualifier resulttype; @@ -60,7 +62,8 @@ public class Result extends OafEntity implements Serializable { private List externalReference; - @NotNull + @Valid + @NotEmpty private List instance; public List getMeasures() { -- 2.17.1 From b4807b63599abba15df15c4e0c2582f57d7fe0fa Mon Sep 17 00:00:00 2001 From: Claudio Atzori Date: Wed, 19 Jan 2022 10:18:42 +0100 Subject: [PATCH 3/3] code formatting --- src/main/java/eu/dnetlib/dhp/schema/oaf/Result.java | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/main/java/eu/dnetlib/dhp/schema/oaf/Result.java b/src/main/java/eu/dnetlib/dhp/schema/oaf/Result.java index 8b2ff6f..d5b8d63 100644 --- a/src/main/java/eu/dnetlib/dhp/schema/oaf/Result.java +++ b/src/main/java/eu/dnetlib/dhp/schema/oaf/Result.java @@ -5,6 +5,10 @@ import java.io.Serializable; import java.util.*; import java.util.stream.Collectors; +import javax.validation.Valid; +import javax.validation.constraints.NotEmpty; +import javax.validation.constraints.NotNull; + import org.apache.commons.lang3.tuple.ImmutablePair; import org.apache.commons.lang3.tuple.Pair; @@ -12,10 +16,6 @@ import eu.dnetlib.dhp.schema.common.AccessRightComparator; import eu.dnetlib.dhp.schema.common.ModelConstants; import eu.dnetlib.dhp.schema.oaf.utils.CleaningFunctions; -import javax.validation.Valid; -import javax.validation.constraints.NotEmpty; -import javax.validation.constraints.NotNull; - /** * The type Result. */ -- 2.17.1