From 6facd0ec18cc22af80559dbbcd151c21cad3092f Mon Sep 17 00:00:00 2001 From: Claudio Atzori Date: Tue, 12 Jul 2022 17:02:10 +0200 Subject: [PATCH 1/3] added field oafEntity.eoscifguidelines --- .../dhp/schema/oaf/EoscIfGuidelines.java | 96 +++++++++++++++++++ .../eu/dnetlib/dhp/schema/oaf/OafEntity.java | 12 +++ .../eu/dnetlib/dhp/schema/oaf/MergeTest.java | 56 +++++++++++ 3 files changed, 164 insertions(+) create mode 100644 src/main/java/eu/dnetlib/dhp/schema/oaf/EoscIfGuidelines.java diff --git a/src/main/java/eu/dnetlib/dhp/schema/oaf/EoscIfGuidelines.java b/src/main/java/eu/dnetlib/dhp/schema/oaf/EoscIfGuidelines.java new file mode 100644 index 0000000..1040a79 --- /dev/null +++ b/src/main/java/eu/dnetlib/dhp/schema/oaf/EoscIfGuidelines.java @@ -0,0 +1,96 @@ +package eu.dnetlib.dhp.schema.oaf; + +import java.io.Serializable; +import java.util.Optional; +import java.util.stream.Collectors; +import java.util.stream.Stream; + +import org.apache.commons.lang3.StringUtils; + +/** + * Describes a reference to the EOSC Interoperability Framework (IF) Guidelines + */ +public class EoscIfGuidelines implements Serializable { + + /** + * EOSC-IF code + */ + private String code; + + /** + * EOSC-IF label + */ + private String label; + + /** + * EOSC-IF url + */ + private String url; + + /** + * EOSC-IF semantic relation + */ + private String semanticRelation; + + public String getCode() { + return code; + } + + public void setCode(String code) { + this.code = code; + } + + public String getLabel() { + return label; + } + + public void setLabel(String label) { + this.label = label; + } + + public String getUrl() { + return url; + } + + public void setUrl(String url) { + this.url = url; + } + + public String getSemanticRelation() { + return semanticRelation; + } + + public void setSemanticRelation(String semanticRelation) { + this.semanticRelation = semanticRelation; + } + + private String toComparableString() { + return Stream + .of( + Optional.ofNullable(getCode()).orElse(""), + Optional.ofNullable(getLabel()).orElse(""), + Optional.ofNullable(getUrl()).orElse(""), + Optional.ofNullable(getSemanticRelation()).orElse("")) + .filter(StringUtils::isNotBlank) + .collect(Collectors.joining("||")); + } + + @Override + public int hashCode() { + return toComparableString().hashCode(); + } + + @Override + public boolean equals(Object obj) { + if (this == obj) + return true; + if (obj == null) + return false; + if (getClass() != obj.getClass()) + return false; + + EoscIfGuidelines other = (EoscIfGuidelines) obj; + + return toComparableString().equals(other.toComparableString()); + } +} 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..4dd3caa 100644 --- a/src/main/java/eu/dnetlib/dhp/schema/oaf/OafEntity.java +++ b/src/main/java/eu/dnetlib/dhp/schema/oaf/OafEntity.java @@ -21,6 +21,8 @@ public abstract class OafEntity extends Oaf implements Serializable { private OAIProvenance oaiprovenance; + private List eoscifguidelines; + public String getId() { return id; } @@ -77,6 +79,14 @@ public abstract class OafEntity extends Oaf implements Serializable { this.oaiprovenance = oaiprovenance; } + public List getEoscifguidelines() { + return eoscifguidelines; + } + + public void setEoscifguidelines(List eoscifguidelines) { + this.eoscifguidelines = eoscifguidelines; + } + public void mergeFrom(OafEntity e) { super.mergeFrom(e); @@ -84,6 +94,8 @@ public abstract class OafEntity extends Oaf implements Serializable { pid = mergeLists(pid, e.getPid()); + eoscifguidelines = mergeLists(eoscifguidelines, e.getEoscifguidelines()); + if (e.getDateofcollection() != null && compareTrust(this, e) < 0) dateofcollection = e.getDateofcollection(); diff --git a/src/test/java/eu/dnetlib/dhp/schema/oaf/MergeTest.java b/src/test/java/eu/dnetlib/dhp/schema/oaf/MergeTest.java index 1c66b11..db09974 100644 --- a/src/test/java/eu/dnetlib/dhp/schema/oaf/MergeTest.java +++ b/src/test/java/eu/dnetlib/dhp/schema/oaf/MergeTest.java @@ -17,6 +17,7 @@ import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; import com.fasterxml.jackson.databind.ObjectMapper; +import com.google.common.collect.Lists; /** * The type Merge test. @@ -451,6 +452,61 @@ class MergeTest { assertEquals(3, a.getSubject().size()); } + /** + * Merge publication EoscIfGuidelines test. + */ + @Test + void mergePublicationEoscIfGuidelinesTest() { + + Publication a = publication(); + Publication b = publication(); + + a.setEoscifguidelines(Lists.newArrayList(eoscifg("a", "label a", "https://aaa.aa", "semRelA"))); + b.setEoscifguidelines(Lists.newArrayList(eoscifg("a", "label a", "https://aaa.aa", "semRelA"))); + + a.mergeFrom(b); + + assertNotNull(a.getEoscifguidelines()); + assertEquals(1, a.getEoscifguidelines().size()); + + a.getEoscifguidelines().clear(); + b.getEoscifguidelines().clear(); + + a.setEoscifguidelines(Lists.newArrayList(eoscifg("a", "label a", "https://aaa.aa", "semRelA"))); + b.setEoscifguidelines(Lists.newArrayList(eoscifg("a", "label a", "https://aaa.aa", "semRelA"))); + + b.mergeFrom(a); + + assertNotNull(a.getEoscifguidelines()); + assertEquals(1, a.getEoscifguidelines().size()); + + EoscIfGuidelines e = b.getEoscifguidelines().get(0); + assertEquals("a", e.getCode()); + assertEquals("label a", e.getLabel()); + assertEquals("https://aaa.aa", e.getUrl()); + assertEquals("semRelA", e.getSemanticRelation()); + + a.getEoscifguidelines().clear(); + b.getEoscifguidelines().clear(); + + a.setEoscifguidelines(Lists.newArrayList(eoscifg("a", "label a", "https://aaa.aa", "semRelA"))); + b.setEoscifguidelines(Lists.newArrayList(eoscifg("b", "label b", "https://bbb.bb", "semRelB"))); + + a.mergeFrom(b); + + assertNotNull(a.getEoscifguidelines()); + assertEquals(2, a.getEoscifguidelines().size()); + } + + private EoscIfGuidelines eoscifg(String code, String label, String url, String semrel) { + EoscIfGuidelines e = new EoscIfGuidelines(); + e.setCode(code); + e.setLabel(label); + e.setUrl(url); + e.setSemanticRelation(semrel); + return e; + } + /** * Merge relation test. */ -- 2.17.1 From 931ffb9d42ab203459ce8341b79f34b8bbd0be0d Mon Sep 17 00:00:00 2001 From: Claudio Atzori Date: Wed, 13 Jul 2022 10:09:04 +0200 Subject: [PATCH 2/3] updated javadoc --- .../java/eu/dnetlib/dhp/schema/oaf/EoscIfGuidelines.java | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/main/java/eu/dnetlib/dhp/schema/oaf/EoscIfGuidelines.java b/src/main/java/eu/dnetlib/dhp/schema/oaf/EoscIfGuidelines.java index 1040a79..2e8a1b6 100644 --- a/src/main/java/eu/dnetlib/dhp/schema/oaf/EoscIfGuidelines.java +++ b/src/main/java/eu/dnetlib/dhp/schema/oaf/EoscIfGuidelines.java @@ -13,7 +13,8 @@ import org.apache.commons.lang3.StringUtils; public class EoscIfGuidelines implements Serializable { /** - * EOSC-IF code + * EOSC-IF local code. Later on it could be populated with a PID (e.g. DOI), but for the time being we stick to + * a more loose definition. */ private String code; @@ -28,7 +29,7 @@ public class EoscIfGuidelines implements Serializable { private String url; /** - * EOSC-IF semantic relation + * EOSC-IF semantic relation (e.g. compliesWith). Values shall be controlled by a dedicated vocabulary. */ private String semanticRelation; -- 2.17.1 From ce46df4f2a50d97226f374837ef95f53b0d0075f Mon Sep 17 00:00:00 2001 From: Claudio Atzori Date: Wed, 13 Jul 2022 11:11:22 +0200 Subject: [PATCH 3/3] moved EoscIfGuidelines field to Result and Datasource/Service --- .../java/eu/dnetlib/dhp/schema/oaf/Datasource.java | 13 +++++++++++++ .../java/eu/dnetlib/dhp/schema/oaf/OafEntity.java | 12 ------------ .../java/eu/dnetlib/dhp/schema/oaf/Result.java | 14 ++++++++++++++ 3 files changed, 27 insertions(+), 12 deletions(-) diff --git a/src/main/java/eu/dnetlib/dhp/schema/oaf/Datasource.java b/src/main/java/eu/dnetlib/dhp/schema/oaf/Datasource.java index 54cfc8a..5067ada 100644 --- a/src/main/java/eu/dnetlib/dhp/schema/oaf/Datasource.java +++ b/src/main/java/eu/dnetlib/dhp/schema/oaf/Datasource.java @@ -137,6 +137,11 @@ public class Datasource extends OafEntity implements Serializable { private String lastconsenttermsofusedate; + /** + * EOSC Interoperability Framework Guidelines + */ + private List eoscifguidelines; + public Qualifier getDatasourcetype() { return datasourcetype; } @@ -553,6 +558,14 @@ public class Datasource extends OafEntity implements Serializable { this.consenttermsofusedate = consenttermsofusedate; } + public List getEoscifguidelines() { + return eoscifguidelines; + } + + public void setEoscifguidelines(List eoscifguidelines) { + this.eoscifguidelines = eoscifguidelines; + } + @Override public void mergeFrom(final OafEntity e) { super.mergeFrom(e); 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 4dd3caa..0411821 100644 --- a/src/main/java/eu/dnetlib/dhp/schema/oaf/OafEntity.java +++ b/src/main/java/eu/dnetlib/dhp/schema/oaf/OafEntity.java @@ -21,8 +21,6 @@ public abstract class OafEntity extends Oaf implements Serializable { private OAIProvenance oaiprovenance; - private List eoscifguidelines; - public String getId() { return id; } @@ -79,14 +77,6 @@ public abstract class OafEntity extends Oaf implements Serializable { this.oaiprovenance = oaiprovenance; } - public List getEoscifguidelines() { - return eoscifguidelines; - } - - public void setEoscifguidelines(List eoscifguidelines) { - this.eoscifguidelines = eoscifguidelines; - } - public void mergeFrom(OafEntity e) { super.mergeFrom(e); @@ -94,8 +84,6 @@ public abstract class OafEntity extends Oaf implements Serializable { pid = mergeLists(pid, e.getPid()); - eoscifguidelines = mergeLists(eoscifguidelines, e.getEoscifguidelines()); - if (e.getDateofcollection() != null && compareTrust(this, e) < 0) dateofcollection = e.getDateofcollection(); 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 cd70b47..6386a19 100644 --- a/src/main/java/eu/dnetlib/dhp/schema/oaf/Result.java +++ b/src/main/java/eu/dnetlib/dhp/schema/oaf/Result.java @@ -142,6 +142,11 @@ public class Result extends OafEntity implements Serializable { */ private List instance; + /** + * EOSC Interoperability Framework Guidelines + */ + private List eoscifguidelines; + /** * Gets measures. * @@ -554,6 +559,13 @@ public class Result extends OafEntity implements Serializable { this.instance = instance; } + public List getEoscifguidelines() { + return eoscifguidelines; + } + + public void setEoscifguidelines(List eoscifguidelines) { + this.eoscifguidelines = eoscifguidelines; + } /** * Is an enrichment boolean. @@ -749,6 +761,8 @@ public class Result extends OafEntity implements Serializable { measures = mergeLists(measures, r.getMeasures()); + eoscifguidelines = mergeLists(eoscifguidelines, r.getEoscifguidelines()); + if( !isAnEnrichment(this) && !isAnEnrichment(e)) instance = mergeLists(instance, r.getInstance()); else { -- 2.17.1