added validation constraints to Oaf model classes

This commit is contained in:
Claudio Atzori 2022-01-13 12:18:53 +01:00
parent eb8c5f38ce
commit ded9f6c61b
14 changed files with 99 additions and 3 deletions

27
pom.xml
View File

@ -315,6 +315,24 @@
<version>2.4</version>
</dependency>
<dependency>
<groupId>javax.validation</groupId>
<artifactId>validation-api</artifactId>
<version>2.0.1.Final</version>
</dependency>
<dependency>
<groupId>com.github.victools</groupId>
<artifactId>jsonschema-generator</artifactId>
<version>${jsonschemagenerator.version}</version>
</dependency>
<dependency>
<groupId>com.github.imifou</groupId>
<artifactId>jsonschema-module-addon</artifactId>
<version>1.2.1</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
@ -389,16 +407,19 @@
<groupId>javax.persistence</groupId>
<artifactId>javax.persistence-api</artifactId>
</dependency>
<dependency>
<groupId>javax.validation</groupId>
<artifactId>validation-api</artifactId>
</dependency>
<dependency>
<groupId>com.github.victools</groupId>
<artifactId>jsonschema-generator</artifactId>
<version>${jsonschemagenerator.version}</version>
<!-- <scope>test</scope>-->
</dependency>
<dependency>
<groupId>com.github.imifou</groupId>
<artifactId>jsonschema-module-addon</artifactId>
<version>1.2.1</version>
</dependency>
</dependencies>

View File

@ -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() {

View File

@ -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<StructuredProperty> pid;

View File

@ -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> dataInfo;
public String getId() {

View File

@ -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() {

View File

@ -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<T> implements Serializable {
@NotBlank
private T value;
private DataInfo dataInfo;

View File

@ -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<String> license;
@NotNull
private AccessRight accessright;
@NotNull
private Qualifier instancetype;
@NotNull
private KeyValue hostedby;
@NotNull
private List<String> url;
// other research products specifc
private String distributionlocation;
@NotNull
private KeyValue collectedfrom;
private List<StructuredProperty> pid;
@ -35,6 +42,7 @@ public class Instance implements Serializable {
// typed results
private Field<String> processingchargecurrency;
@NotNull
private Qualifier refereed; // peer-review status
private List<Measure> measures;

View File

@ -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;

View File

@ -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<KeyValue> collectedfrom;
@NotNull
private DataInfo dataInfo;
private Long lastupdatetimestamp;

View File

@ -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<String> originalId;
private List<StructuredProperty> pid;
@NotBlank
private String dateofcollection;
private String dateoftransformation;

View File

@ -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() {

View File

@ -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;
/**

View File

@ -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> 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> externalReference;
@NotNull
private List<Instance> instance;
public List<Measure> getMeasures() {

View File

@ -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;