diff --git a/pom.xml b/pom.xml index 6dcfd7b..9695592 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..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,21 +4,30 @@ 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 { private Field license; + @NotNull private AccessRight accessright; + @NotNull private Qualifier instancetype; + @NotNull private KeyValue hostedby; + @NotEmpty private List url; // other research products specifc private String distributionlocation; + @NotNull private KeyValue collectedfrom; private List pid; @@ -35,6 +44,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..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,14 +3,19 @@ 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; import com.fasterxml.jackson.annotation.JsonIgnore; public class KeyValue implements Serializable { + @NotBlank private String key; + @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 494123f..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,13 +9,21 @@ 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 { /** * The list of datasource id/name pairs providing this relationship. */ + @Valid + @NotEmpty protected List collectedfrom; + @Valid + @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 9d1f52c..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; @@ -28,15 +32,15 @@ public class Result extends OafEntity implements Serializable { private List author; /** - * The Resulttype. + * The Resulttype, allows subclassing results into publications | datasets | software */ -// resulttype allows subclassing results into publications | datasets | software + @Valid + @NotNull private Qualifier resulttype; /** * The Language. */ -// common fields private Qualifier language; /** @@ -112,6 +116,8 @@ public class Result extends OafEntity implements Serializable { /** * The Bestaccessright. */ + @Valid + @NotNull private Qualifier bestaccessright; /** @@ -127,6 +133,8 @@ public class Result extends OafEntity implements Serializable { /** * The Instance. */ + @Valid + @NotEmpty private List instance; /** 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;