Added unit test to verify the generation in the OriginalID the old openaire Identifier generated by OAI
This commit is contained in:
parent
27fbc9b385
commit
c8ddb527b3
|
@ -26,26 +26,21 @@ public class OafMapperUtils {
|
|||
if (ModelSupport.isSubClass(left, OafEntity.class)) {
|
||||
return mergeEntities((OafEntity) left, (OafEntity) right);
|
||||
} else if (ModelSupport.isSubClass(left, Relation.class)) {
|
||||
((Relation) left).mergeFrom((Relation) right);
|
||||
return OafUtils.mergeOAF(left, right);
|
||||
} else {
|
||||
throw new IllegalArgumentException("invalid Oaf type:" + left.getClass().getCanonicalName());
|
||||
}
|
||||
return left;
|
||||
}
|
||||
|
||||
public static OafEntity mergeEntities(OafEntity left, OafEntity right) {
|
||||
if (ModelSupport.isSubClass(left, Result.class)) {
|
||||
return mergeResults((Result) left, (Result) right);
|
||||
} else if (ModelSupport.isSubClass(left, Datasource.class)) {
|
||||
left.mergeFrom(right);
|
||||
} else if (ModelSupport.isSubClass(left, Organization.class)) {
|
||||
left.mergeFrom(right);
|
||||
} else if (ModelSupport.isSubClass(left, Project.class)) {
|
||||
left.mergeFrom(right);
|
||||
} else if (ModelSupport.isSubClass(left, Datasource.class) || ModelSupport.isSubClass(left, Organization.class) || ModelSupport.isSubClass(left, Project.class))
|
||||
{
|
||||
return OafUtils.mergeOAF(left, right);
|
||||
} else {
|
||||
throw new IllegalArgumentException("invalid OafEntity subtype:" + left.getClass().getCanonicalName());
|
||||
}
|
||||
return left;
|
||||
}
|
||||
|
||||
public static Result mergeResults(Result left, Result right) {
|
||||
|
@ -59,13 +54,11 @@ public class OafMapperUtils {
|
|||
if (!leftFromDelegatedAuthority && rightFromDelegatedAuthority) {
|
||||
return right;
|
||||
}
|
||||
|
||||
if (new ResultTypeComparator().compare(left, right) < 0) {
|
||||
left.mergeFrom(right);
|
||||
return left;
|
||||
return OafUtils.mergeOAF(left, right);
|
||||
} else {
|
||||
right.mergeFrom(left);
|
||||
return right;
|
||||
return OafUtils.mergeOAF(right, left);
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -419,7 +412,7 @@ public class OafMapperUtils {
|
|||
public static Measure newMeasureInstance(String id, String value, String key, DataInfo dataInfo) {
|
||||
Measure m = new Measure();
|
||||
m.setId(id);
|
||||
m.setUnit(Arrays.asList(newKeyValueInstance(key, value, dataInfo)));
|
||||
m.setUnit(Collections.singletonList(newKeyValueInstance(key, value, dataInfo)));
|
||||
return m;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -240,7 +240,7 @@ public class OafUtils {
|
|||
* @param enrich second object
|
||||
* @return the merged object
|
||||
*/
|
||||
public static Oaf mergeOAF(Oaf original, Oaf enrich) {
|
||||
public static <T extends Oaf> T mergeOAF(T original, T enrich) {
|
||||
if (original == null)
|
||||
return enrich;
|
||||
if (enrich == null)
|
||||
|
@ -251,10 +251,7 @@ public class OafUtils {
|
|||
original.getClass().getCanonicalName(),
|
||||
enrich.getClass().getCanonicalName()));
|
||||
|
||||
Oaf result = null;
|
||||
|
||||
|
||||
|
||||
Oaf result ;
|
||||
|
||||
switch (original.getClass().getSimpleName().toLowerCase()) {
|
||||
case "relation":
|
||||
|
@ -278,12 +275,11 @@ public class OafUtils {
|
|||
case "organization":
|
||||
result = mergeOAFOrganization((Organization) original, (Organization)enrich);
|
||||
break;
|
||||
default:
|
||||
throw new RuntimeException("Trying to merge an unsupported class");
|
||||
|
||||
|
||||
}
|
||||
checkArgument(Objects.nonNull(result), "Undefined type on merge, " +
|
||||
"allowed: relation, publication,otherresearchproduct, software and dataset");
|
||||
|
||||
result.setCollectedfrom(
|
||||
Stream
|
||||
.concat(
|
||||
|
@ -304,7 +300,7 @@ public class OafUtils {
|
|||
Optional.ofNullable(original.getLastupdatetimestamp()).orElse(0L),
|
||||
Optional.ofNullable(enrich.getLastupdatetimestamp()).orElse(0L)));
|
||||
|
||||
return result;
|
||||
return (T) result;
|
||||
|
||||
}
|
||||
|
||||
|
@ -351,7 +347,7 @@ public class OafUtils {
|
|||
* @param titles the titles
|
||||
* @return the main title
|
||||
*/
|
||||
private static StructuredProperty getMainTitle(List<StructuredProperty> titles) {
|
||||
private static StructuredProperty getMainTitle(final List<StructuredProperty> titles) {
|
||||
// need to check if the list of titles contains more than 1 main title? (in that case, we should chose which
|
||||
// main title select in the list)
|
||||
for (StructuredProperty t : titles) {
|
||||
|
@ -363,7 +359,7 @@ public class OafUtils {
|
|||
}
|
||||
|
||||
|
||||
private static OafEntity mergeEntity(OafEntity original, OafEntity enrich) {
|
||||
private static OafEntity mergeEntity(final OafEntity original,final OafEntity enrich) {
|
||||
|
||||
final OafEntity mergedEntity = original;
|
||||
|
||||
|
@ -389,7 +385,7 @@ public class OafUtils {
|
|||
|
||||
}
|
||||
|
||||
private static Result mergeOAFResult(Result original, Result enrich) {
|
||||
private static Result mergeOAFResult(final Result original,final Result enrich) {
|
||||
|
||||
|
||||
final Result mergedResult = (Result) mergeEntity(original, enrich);
|
||||
|
@ -491,7 +487,7 @@ public class OafUtils {
|
|||
return mergedResult;
|
||||
}
|
||||
|
||||
private static OtherResearchProduct mergeOAFOtherResearchProduct(OtherResearchProduct original, OtherResearchProduct enrich) {
|
||||
private static OtherResearchProduct mergeOAFOtherResearchProduct(final OtherResearchProduct original,final OtherResearchProduct enrich) {
|
||||
final OtherResearchProduct mergedORP = (OtherResearchProduct) mergeOAFResult(original, enrich);
|
||||
|
||||
|
||||
|
@ -503,7 +499,7 @@ public class OafUtils {
|
|||
return mergedORP;
|
||||
}
|
||||
|
||||
private static Software mergeOAFSoftware(Software original, Software enrich) {
|
||||
private static Software mergeOAFSoftware(final Software original, final Software enrich) {
|
||||
final Software mergedSoftware = (Software) mergeOAFResult(original, enrich);
|
||||
|
||||
mergedSoftware.setDocumentationUrl(mergeLists(mergedSoftware.getDocumentationUrl(), enrich.getDocumentationUrl()));
|
||||
|
|
|
@ -67,7 +67,7 @@ class MergeTest {
|
|||
a.setCollectedfrom(Arrays.asList(setKV("a", "open"), setKV("b", "closed")));
|
||||
b.setCollectedfrom(Arrays.asList(setKV("A", "open"), setKV("b", "Open")));
|
||||
|
||||
a = (Publication) OafUtils.mergeOAF(a, b);
|
||||
a = OafUtils.mergeOAF(a, b);
|
||||
|
||||
|
||||
assertNotNull(a.getCollectedfrom());
|
||||
|
@ -83,7 +83,7 @@ class MergeTest {
|
|||
* @return the list
|
||||
* @throws Exception the exception
|
||||
*/
|
||||
private <T extends Result> List<Result> loadResourceResult(final String path, final Class<T> clazz ) throws Exception {
|
||||
private <T extends Result> List<T> loadResourceResult(final String path, final Class<T> clazz ) throws Exception {
|
||||
final ObjectMapper mapper = new ObjectMapper();
|
||||
final InputStream str = Objects.requireNonNull(getClass().getResourceAsStream(path));
|
||||
// LOAD test publications
|
||||
|
@ -104,7 +104,7 @@ class MergeTest {
|
|||
* @param enrichment the enrichment
|
||||
* @param overrideAlternateIdentifier the override alternate identifier
|
||||
*/
|
||||
private void updatePidIntoPublicationInstance(final List<Result> source, final List<Result>enrichment, final boolean overrideAlternateIdentifier) {
|
||||
private <T extends Result> void updatePidIntoPublicationInstance(final List<T> source, final List<T>enrichment, final boolean overrideAlternateIdentifier) {
|
||||
for(int i = 0 ; i< source.size(); i++) {
|
||||
final Result currentPub = source.get(i);
|
||||
final Result currentEnrichment = enrichment.get(i);
|
||||
|
@ -117,17 +117,17 @@ class MergeTest {
|
|||
}
|
||||
|
||||
|
||||
private void applyAndVerifyEnrichment(final List<Result> l1, final List<Result> l2) {
|
||||
private <T extends Result> void applyAndVerifyEnrichment(final List<T> l1, final List<T> l2) {
|
||||
// Apply Merge and verify that enrichments works
|
||||
for(int i = 0 ; i< l1.size(); i++) {
|
||||
final Result currentPub = l2.get(i);
|
||||
final Result currentEnrichment = l1.get(i);
|
||||
currentPub.mergeFrom(currentEnrichment);
|
||||
assertEquals(1, currentPub.getInstance().size());
|
||||
final Instance currentInstance = Objects.requireNonNull(currentPub.getInstance()).get(0);
|
||||
final Result result = OafUtils.mergeOAF(currentPub, currentEnrichment);
|
||||
assertEquals(1, result.getInstance().size());
|
||||
final Instance currentInstance = Objects.requireNonNull(result.getInstance()).get(0);
|
||||
assertNotNull(currentInstance.getMeasures());
|
||||
assertNotNull(currentPub.getTitle());
|
||||
assertFalse(Result.isAnEnrichment(currentPub));
|
||||
assertNotNull(result.getTitle());
|
||||
assertFalse(OafUtils.isAnEnrichment(result));
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -140,7 +140,7 @@ class MergeTest {
|
|||
|
||||
@Test
|
||||
void testAPCMerge() throws Exception {
|
||||
List<Result> publications = loadResourceResult("/eu/dnetlib/dhp/schema/oaf/utils/publication_apc.json", Publication.class);
|
||||
List<Publication> publications = loadResourceResult("/eu/dnetlib/dhp/schema/oaf/utils/publication_apc.json", Publication.class);
|
||||
System.out.println(publications.size());
|
||||
publications.forEach(p -> assertEquals(1, p.getInstance().size()));
|
||||
publications.forEach(p -> assertTrue(p.getProcessingchargeamount() != null ));
|
||||
|
@ -161,7 +161,7 @@ class MergeTest {
|
|||
Result p1 = publications.get(0);
|
||||
Result p2 = publications.get(1);
|
||||
|
||||
p1.mergeFrom(p2);
|
||||
p1 = OafUtils.mergeOAF(p1, p2);
|
||||
|
||||
assertEquals("1721.47", p1.getProcessingchargeamount().getValue());
|
||||
assertEquals("EUR", p1.getProcessingchargecurrency().getValue());
|
||||
|
@ -180,7 +180,7 @@ class MergeTest {
|
|||
}
|
||||
@Test
|
||||
void testAPCMerge2() throws Exception {
|
||||
List<Result> publications = loadResourceResult("/eu/dnetlib/dhp/schema/oaf/utils/publication_apc2.json", Publication.class);
|
||||
List<Publication> publications = loadResourceResult("/eu/dnetlib/dhp/schema/oaf/utils/publication_apc2.json", Publication.class);
|
||||
System.out.println(publications.size());
|
||||
publications.forEach(p -> assertEquals(1, p.getInstance().size()));
|
||||
assertTrue(publications.get(0).getProcessingchargeamount() != null );
|
||||
|
@ -242,7 +242,7 @@ class MergeTest {
|
|||
|
||||
// 1 TEST UPDATING PID INSTANCE AND MERGE CURRENT PUBLICATION WITH ENRICHMENT
|
||||
// LOAD test publications
|
||||
List<Result> publications = loadResourceResult("/eu/dnetlib/dhp/schema/oaf/utils/publications.json", Publication.class);
|
||||
List<Publication> publications = loadResourceResult("/eu/dnetlib/dhp/schema/oaf/utils/publications.json", Publication.class);
|
||||
// Assert that each publication has only one instance and inside that all the measure field is empty
|
||||
publications.forEach(p -> {
|
||||
assertEquals(1, p.getInstance().size());
|
||||
|
@ -251,7 +251,7 @@ class MergeTest {
|
|||
});
|
||||
|
||||
// LOAD test enrichments
|
||||
List<Result> enrichment = loadResourceResult("/eu/dnetlib/dhp/schema/oaf/utils/enrichment.json", Result.class);
|
||||
List<Publication> enrichment = loadResourceResult("/eu/dnetlib/dhp/schema/oaf/utils/enrichment.json", Publication.class);
|
||||
|
||||
updatePidIntoPublicationInstance(publications, enrichment, false);
|
||||
applyAndVerifyEnrichment(publications, enrichment);
|
||||
|
@ -259,20 +259,20 @@ class MergeTest {
|
|||
|
||||
// 2 TEST UPDATING ALTERNATE ID INSTANCE AND MERGE CURRENT PUBLICATION WITH ENRICHMENT
|
||||
publications = loadResourceResult("/eu/dnetlib/dhp/schema/oaf/utils/publications.json", Publication.class);
|
||||
enrichment = loadResourceResult("/eu/dnetlib/dhp/schema/oaf/utils/enrichment.json", Result.class);
|
||||
enrichment = loadResourceResult("/eu/dnetlib/dhp/schema/oaf/utils/enrichment.json", Publication.class);
|
||||
updatePidIntoPublicationInstance(publications, enrichment, true);
|
||||
applyAndVerifyEnrichment(publications, enrichment);
|
||||
|
||||
|
||||
// 3 TEST UPDATING PID INSTANCE AND MERGE ENRICHMENT WITH CURRENT PUBLICATION
|
||||
publications = loadResourceResult("/eu/dnetlib/dhp/schema/oaf/utils/publications.json", Publication.class);
|
||||
enrichment = loadResourceResult("/eu/dnetlib/dhp/schema/oaf/utils/enrichment.json", Result.class);
|
||||
enrichment = loadResourceResult("/eu/dnetlib/dhp/schema/oaf/utils/enrichment.json", Publication.class);
|
||||
updatePidIntoPublicationInstance(publications, enrichment, false);
|
||||
applyAndVerifyEnrichment( enrichment, publications);
|
||||
|
||||
// 4 TEST UPDATING ALTERNATE ID INSTANCE AND MERGE ENRICHMENT WITH CURRENT PUBLICATION
|
||||
publications = loadResourceResult("/eu/dnetlib/dhp/schema/oaf/utils/publications.json", Publication.class);
|
||||
enrichment = loadResourceResult("/eu/dnetlib/dhp/schema/oaf/utils/enrichment.json", Result.class);
|
||||
enrichment = loadResourceResult("/eu/dnetlib/dhp/schema/oaf/utils/enrichment.json", Publication.class);
|
||||
updatePidIntoPublicationInstance(publications, enrichment, true);
|
||||
applyAndVerifyEnrichment( enrichment, publications);
|
||||
|
||||
|
@ -292,7 +292,7 @@ class MergeTest {
|
|||
a.setDateofacceptance(field("2021-06-18"));
|
||||
b.setDateofacceptance(field("2021-06-19"));
|
||||
|
||||
a.mergeFrom(b);
|
||||
a = OafUtils.mergeOAF(a,b);
|
||||
|
||||
assertNotNull(a.getDateofacceptance());
|
||||
assertEquals("2021-06-18", a.getDateofacceptance().getValue());
|
||||
|
@ -310,7 +310,7 @@ class MergeTest {
|
|||
a.setDateofacceptance(field("2021-06-18"));
|
||||
b.setDateofacceptance(field("2021-06-19"));
|
||||
|
||||
a.mergeFrom(b);
|
||||
a = OafUtils.mergeOAF(a,b);
|
||||
|
||||
assertNotNull(a.getDateofacceptance());
|
||||
assertEquals("2021-06-19", a.getDateofacceptance().getValue());
|
||||
|
@ -328,7 +328,7 @@ class MergeTest {
|
|||
a.setDateofacceptance(field("2021-06-18"));
|
||||
b.setDateofacceptance(field("2021-06-19"));
|
||||
|
||||
a.mergeFrom(b);
|
||||
a = OafUtils.mergeOAF(a,b);
|
||||
|
||||
assertNotNull(a.getDateofacceptance());
|
||||
assertEquals("2021-06-18", a.getDateofacceptance().getValue());
|
||||
|
@ -345,7 +345,7 @@ class MergeTest {
|
|||
|
||||
b.setDateofacceptance(field("2021-06-19"));
|
||||
|
||||
a.mergeFrom(b);
|
||||
a = OafUtils.mergeOAF(a,b);
|
||||
|
||||
assertNotNull(a.getDateofacceptance());
|
||||
assertEquals("2021-06-19", a.getDateofacceptance().getValue());
|
||||
|
@ -362,7 +362,7 @@ class MergeTest {
|
|||
|
||||
b.setDateofacceptance(field("2021-06-19"));
|
||||
|
||||
a.mergeFrom(b);
|
||||
a = OafUtils.mergeOAF(a,b);
|
||||
|
||||
assertNotNull(a.getDateofacceptance());
|
||||
assertEquals("2021-06-19", a.getDateofacceptance().getValue());
|
||||
|
@ -379,7 +379,7 @@ class MergeTest {
|
|||
|
||||
b.setDateofacceptance(field("2021-06-19"));
|
||||
|
||||
a.mergeFrom(b);
|
||||
a = OafUtils.mergeOAF(a,b);
|
||||
|
||||
assertNotNull(a.getDateofacceptance());
|
||||
assertEquals("2021-06-19", a.getDateofacceptance().getValue());
|
||||
|
@ -396,7 +396,7 @@ class MergeTest {
|
|||
|
||||
a.setDateofacceptance(field("2021-06-19"));
|
||||
|
||||
a.mergeFrom(b);
|
||||
a = OafUtils.mergeOAF(a,b);
|
||||
|
||||
assertNotNull(a.getDateofacceptance());
|
||||
assertEquals("2021-06-19", a.getDateofacceptance().getValue());
|
||||
|
@ -413,7 +413,7 @@ class MergeTest {
|
|||
|
||||
a.setDateofacceptance(field("2021-06-19"));
|
||||
|
||||
a.mergeFrom(b);
|
||||
a = OafUtils.mergeOAF(a,b);
|
||||
|
||||
assertNotNull(a.getDateofacceptance());
|
||||
assertEquals("2021-06-19", a.getDateofacceptance().getValue());
|
||||
|
@ -430,7 +430,7 @@ class MergeTest {
|
|||
|
||||
a.setDateofacceptance(field("2021-06-19"));
|
||||
|
||||
a.mergeFrom(b);
|
||||
a = OafUtils.mergeOAF(a,b);
|
||||
|
||||
assertNotNull(a.getDateofacceptance());
|
||||
assertEquals("2021-06-19", a.getDateofacceptance().getValue());
|
||||
|
@ -448,7 +448,7 @@ class MergeTest {
|
|||
a.setSubject(Arrays.asList(setSP("a", "open", "classe"), setSP("b", "open", "classe")));
|
||||
b.setSubject(Arrays.asList(setSP("A", "open", "classe"), setSP("c", "open", "classe")));
|
||||
|
||||
a.mergeFrom(b);
|
||||
a = OafUtils.mergeOAF(a,b);
|
||||
|
||||
assertNotNull(a.getSubject());
|
||||
assertEquals(3, a.getSubject().size());
|
||||
|
@ -462,37 +462,37 @@ class MergeTest {
|
|||
|
||||
Relation a = createRel(null, null);
|
||||
Relation b = createRel(null, null);
|
||||
a.mergeFrom(b);
|
||||
a = OafUtils.mergeOAF(a,b);
|
||||
assertEquals(a, b);
|
||||
|
||||
a = createRel(true, null);
|
||||
b = createRel(null, null);
|
||||
a.mergeFrom(b);
|
||||
a = OafUtils.mergeOAF(a,b);
|
||||
assertEquals(true, a.getValidated());
|
||||
|
||||
a = createRel(true, null);
|
||||
b = createRel(false, null);
|
||||
a.mergeFrom(b);
|
||||
a = OafUtils.mergeOAF(a,b);
|
||||
assertEquals(true, a.getValidated());
|
||||
|
||||
a = createRel(true, null);
|
||||
b = createRel(true, "2016-04-05T12:41:19.202Z");
|
||||
a.mergeFrom(b);
|
||||
a = OafUtils.mergeOAF(a,b);
|
||||
assertEquals("2016-04-05T12:41:19.202Z", a.getValidationDate());
|
||||
|
||||
a = createRel(true, "2016-05-07T12:41:19.202Z");
|
||||
b = createRel(true, "2016-04-05T12:41:19.202Z");
|
||||
a.mergeFrom(b);
|
||||
a = OafUtils.mergeOAF(a,b);
|
||||
assertEquals("2016-04-05T12:41:19.202Z", a.getValidationDate());
|
||||
|
||||
a = createRel(true, "2020-09-10 11:08:52");
|
||||
b = createRel(true, "2021-09-10 11:08:52");
|
||||
a.mergeFrom(b);
|
||||
a = OafUtils.mergeOAF(a,b);
|
||||
assertEquals("2020-09-10 11:08:52", a.getValidationDate());
|
||||
|
||||
a = createRel(true, "2021-03-16T10:32:42Z");
|
||||
b = createRel(true, "2020-03-16T10:32:42Z");
|
||||
a.mergeFrom(b);
|
||||
a = OafUtils.mergeOAF(a,b);
|
||||
assertEquals("2020-03-16T10:32:42Z", a.getValidationDate());
|
||||
|
||||
|
||||
|
@ -506,7 +506,7 @@ class MergeTest {
|
|||
assertThrows(DateTimeParseException.class, () -> {
|
||||
Relation a = createRel(true, "Once upon a time ...");
|
||||
Relation b = createRel(true, "... in a far away land");
|
||||
a.mergeFrom(b);
|
||||
a = OafUtils.mergeOAF(a,b);
|
||||
});
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue