From 4ec690e4cd7cf5a18ff0967d5283482d44dd7c71 Mon Sep 17 00:00:00 2001 From: Claudio Atzori Date: Fri, 18 Jun 2021 09:58:30 +0200 Subject: [PATCH] Result.mergeFrom handles dateOfAcceptance --- .../eu/dnetlib/dhp/schema/oaf/Result.java | 9 + .../eu/dnetlib/dhp/schema/oaf/MergeTest.java | 161 +++++++++++++++++- 2 files changed, 166 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 845c4c9..f182a03 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,7 @@ import java.io.Serializable; import java.util.ArrayList; import java.util.Comparator; import java.util.List; +import java.util.Objects; import java.util.stream.Collectors; import eu.dnetlib.dhp.schema.common.LicenseComparator; @@ -257,6 +258,14 @@ public class Result extends OafEntity implements Serializable { if (r.getLanguage() != null && compareTrust(this, r) < 0) language = r.getLanguage(); + if (Objects.nonNull(r.getDateofacceptance())) { + if (Objects.isNull(getDateofacceptance())) { + dateofacceptance = r.getDateofacceptance(); + } else if (compareTrust(this, r) < 0) { + dateofacceptance = r.getDateofacceptance(); + } + } + country = mergeLists(country, r.getCountry()); subject = mergeLists(subject, r.getSubject()); 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 98baa1e..eb9fd25 100644 --- a/src/test/java/eu/dnetlib/dhp/schema/oaf/MergeTest.java +++ b/src/test/java/eu/dnetlib/dhp/schema/oaf/MergeTest.java @@ -37,8 +37,8 @@ public class MergeTest { @Test public void mergePublicationCollectedFromTest() { - Publication a = new Publication(); - Publication b = new Publication(); + Publication a = publication(); + Publication b = publication(); a.setCollectedfrom(Arrays.asList(setKV("a", "open"), setKV("b", "closed"))); b.setCollectedfrom(Arrays.asList(setKV("A", "open"), setKV("b", "Open"))); @@ -49,11 +49,140 @@ public class MergeTest { assertEquals(3, a.getCollectedfrom().size()); } + @Test + public void mergePublicationDateOfAcceptanceTest_bothPresent() { + + Publication a = publication(); + Publication b = publication(); + + a.setDateofacceptance(field("2021-06-18")); + b.setDateofacceptance(field("2021-06-19")); + + a.mergeFrom(b); + + assertNotNull(a.getDateofacceptance()); + assertEquals("2021-06-18", a.getDateofacceptance().getValue()); + } + + @Test + public void mergePublicationDateOfAcceptanceTest_bothPresent_1() { + + Publication a = publication("0.8"); + Publication b = publication("0.9"); + + a.setDateofacceptance(field("2021-06-18")); + b.setDateofacceptance(field("2021-06-19")); + + a.mergeFrom(b); + + assertNotNull(a.getDateofacceptance()); + assertEquals("2021-06-19", a.getDateofacceptance().getValue()); + } + + @Test + public void mergePublicationDateOfAcceptanceTest_bothPresent_2() { + + Publication a = publication("0.9"); + Publication b = publication("0.8"); + + a.setDateofacceptance(field("2021-06-18")); + b.setDateofacceptance(field("2021-06-19")); + + a.mergeFrom(b); + + assertNotNull(a.getDateofacceptance()); + assertEquals("2021-06-18", a.getDateofacceptance().getValue()); + } + + @Test + public void mergePublicationDateOfAcceptanceTest_leftMissing() { + + Publication a = publication(); + Publication b = publication(); + + b.setDateofacceptance(field("2021-06-19")); + + a.mergeFrom(b); + + assertNotNull(a.getDateofacceptance()); + assertEquals("2021-06-19", a.getDateofacceptance().getValue()); + } + + @Test + public void mergePublicationDateOfAcceptanceTest_leftMissing_1() { + + Publication a = publication("0.9"); + Publication b = publication("0.8"); + + b.setDateofacceptance(field("2021-06-19")); + + a.mergeFrom(b); + + assertNotNull(a.getDateofacceptance()); + assertEquals("2021-06-19", a.getDateofacceptance().getValue()); + } + + @Test + public void mergePublicationDateOfAcceptanceTest_leftMissing_2() { + + Publication a = publication("0.8"); + Publication b = publication("0.9"); + + b.setDateofacceptance(field("2021-06-19")); + + a.mergeFrom(b); + + assertNotNull(a.getDateofacceptance()); + assertEquals("2021-06-19", a.getDateofacceptance().getValue()); + } + + @Test + public void mergePublicationDateOfAcceptanceTest_rightMissing() { + + Publication a = publication(); + Publication b = publication(); + + a.setDateofacceptance(field("2021-06-19")); + + a.mergeFrom(b); + + assertNotNull(a.getDateofacceptance()); + assertEquals("2021-06-19", a.getDateofacceptance().getValue()); + } + + @Test + public void mergePublicationDateOfAcceptanceTest_rightMissing_1() { + + Publication a = publication("0.8"); + Publication b = publication("0.9"); + + a.setDateofacceptance(field("2021-06-19")); + + a.mergeFrom(b); + + assertNotNull(a.getDateofacceptance()); + assertEquals("2021-06-19", a.getDateofacceptance().getValue()); + } + + @Test + public void mergePublicationDateOfAcceptanceTest_rightMissing_2() { + + Publication a = publication("0.9"); + Publication b = publication("0.8"); + + a.setDateofacceptance(field("2021-06-19")); + + a.mergeFrom(b); + + assertNotNull(a.getDateofacceptance()); + assertEquals("2021-06-19", a.getDateofacceptance().getValue()); + } + @Test public void mergePublicationSubjectTest() { - Publication a = new Publication(); - Publication b = new Publication(); + Publication a = publication(); + Publication b = publication(); a.setSubject(Arrays.asList(setSP("a", "open", "classe"), setSP("b", "open", "classe"))); b.setSubject(Arrays.asList(setSP("A", "open", "classe"), setSP("c", "open", "classe"))); @@ -136,4 +265,28 @@ public class MergeTest { s.setQualifier(q); return s; } + + private Field field(T value) { + Field f = new Field(); + f.setValue(value); + return f; + } + + private Publication publication() { + Publication p = new Publication(); + p.setDataInfo(df("0.9")); + return p; + } + + private Publication publication(String trust) { + Publication p = new Publication(); + p.setDataInfo(df(trust)); + return p; + } + + private DataInfo df(String trust) { + DataInfo d = new DataInfo(); + d.setTrust(trust); + return d; + } }