2021-04-23 12:15:36 +02:00
|
|
|
|
|
|
|
package eu.dnetlib.dhp.schema.oaf;
|
|
|
|
|
|
|
|
import static org.junit.jupiter.api.Assertions.*;
|
|
|
|
|
2022-01-13 14:50:18 +01:00
|
|
|
import java.io.IOException;
|
|
|
|
import java.io.InputStream;
|
2021-04-23 13:20:53 +02:00
|
|
|
import java.time.format.DateTimeParseException;
|
2021-04-23 12:15:36 +02:00
|
|
|
import java.util.Arrays;
|
|
|
|
import java.util.List;
|
2022-01-13 14:50:18 +01:00
|
|
|
import java.util.Objects;
|
|
|
|
import java.util.stream.Collectors;
|
|
|
|
|
|
|
|
import org.apache.commons.io.IOUtils;
|
2022-02-04 12:52:12 +01:00
|
|
|
import org.apache.commons.lang3.StringUtils;
|
2021-04-23 12:15:36 +02:00
|
|
|
import org.junit.jupiter.api.BeforeEach;
|
|
|
|
import org.junit.jupiter.api.Test;
|
|
|
|
|
2022-01-14 10:06:49 +01:00
|
|
|
import com.fasterxml.jackson.databind.ObjectMapper;
|
|
|
|
|
2022-01-13 14:50:18 +01:00
|
|
|
/**
|
|
|
|
* The type Merge test.
|
|
|
|
*/
|
2021-08-10 09:36:37 +02:00
|
|
|
class MergeTest {
|
2021-04-23 12:15:36 +02:00
|
|
|
|
2022-01-13 14:50:18 +01:00
|
|
|
/**
|
|
|
|
* The Oaf.
|
|
|
|
*/
|
2021-04-23 12:15:36 +02:00
|
|
|
OafEntity oaf;
|
|
|
|
|
2022-01-13 14:50:18 +01:00
|
|
|
/**
|
|
|
|
* Sets up.
|
|
|
|
*/
|
2021-04-23 12:15:36 +02:00
|
|
|
@BeforeEach
|
|
|
|
public void setUp() {
|
|
|
|
oaf = new Publication();
|
|
|
|
}
|
|
|
|
|
2022-01-13 14:50:18 +01:00
|
|
|
/**
|
|
|
|
* Merge lists test.
|
|
|
|
*/
|
2021-04-23 12:15:36 +02:00
|
|
|
@Test
|
2021-08-10 09:36:37 +02:00
|
|
|
@SuppressWarnings("unchecked")
|
|
|
|
void mergeListsTest() {
|
2021-04-23 12:15:36 +02:00
|
|
|
|
|
|
|
// string list merge test
|
|
|
|
List<String> a = Arrays.asList("a", "b", "c", "e");
|
|
|
|
List<String> b = Arrays.asList("a", "b", "c", "d");
|
|
|
|
List<String> c = null;
|
|
|
|
|
|
|
|
System.out.println("merge result 1 = " + oaf.mergeLists(a, b));
|
|
|
|
|
|
|
|
System.out.println("merge result 2 = " + oaf.mergeLists(a, c));
|
|
|
|
|
|
|
|
System.out.println("merge result 3 = " + oaf.mergeLists(c, c));
|
|
|
|
}
|
|
|
|
|
2022-01-13 14:50:18 +01:00
|
|
|
/**
|
|
|
|
* Merge publication collected from test.
|
|
|
|
*/
|
2021-04-23 12:15:36 +02:00
|
|
|
@Test
|
2021-08-10 09:36:37 +02:00
|
|
|
void mergePublicationCollectedFromTest() {
|
2021-04-23 12:15:36 +02:00
|
|
|
|
2021-06-18 09:58:30 +02:00
|
|
|
Publication a = publication();
|
|
|
|
Publication b = publication();
|
2021-04-23 12:15:36 +02:00
|
|
|
|
|
|
|
a.setCollectedfrom(Arrays.asList(setKV("a", "open"), setKV("b", "closed")));
|
|
|
|
b.setCollectedfrom(Arrays.asList(setKV("A", "open"), setKV("b", "Open")));
|
|
|
|
|
|
|
|
a.mergeFrom(b);
|
|
|
|
|
|
|
|
assertNotNull(a.getCollectedfrom());
|
|
|
|
assertEquals(3, a.getCollectedfrom().size());
|
|
|
|
}
|
|
|
|
|
2022-01-13 14:50:18 +01:00
|
|
|
/**
|
|
|
|
* Load resource result list.
|
|
|
|
*
|
|
|
|
* @param <T> the type parameter
|
|
|
|
* @param path the path
|
|
|
|
* @param clazz the clazz
|
|
|
|
* @return the list
|
|
|
|
* @throws Exception the exception
|
|
|
|
*/
|
|
|
|
private <T extends Result> List<Result> 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
|
|
|
|
return IOUtils.readLines(str).stream().map(s -> {
|
|
|
|
try {
|
|
|
|
return mapper.readValue(s, clazz);
|
|
|
|
} catch (IOException e) {
|
|
|
|
return null;
|
|
|
|
}
|
|
|
|
}).filter(Objects::nonNull).collect(Collectors.toList());
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Apply to any test list result the same pid of the enrichment instance
|
|
|
|
*
|
|
|
|
* @param source the source
|
|
|
|
* @param enrichment the enrichment
|
|
|
|
* @param overrideAlternateIdentifier the override alternate identifier
|
|
|
|
*/
|
|
|
|
private void updatePidIntoPublicationInstance(final List<Result> source, final List<Result>enrichment, final boolean overrideAlternateIdentifier) {
|
|
|
|
for(int i = 0 ; i< source.size(); i++) {
|
|
|
|
final Result currentPub = source.get(i);
|
|
|
|
final Result currentEnrichment = enrichment.get(i);
|
|
|
|
final Instance currentInstance = Objects.requireNonNull(currentPub.getInstance()).get(0);
|
|
|
|
if (overrideAlternateIdentifier)
|
|
|
|
currentInstance.setAlternateIdentifier(Objects.requireNonNull(currentEnrichment.getInstance()).get(0).getPid());
|
|
|
|
else
|
|
|
|
currentInstance.setPid(Objects.requireNonNull(currentEnrichment.getInstance()).get(0).getPid());
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
private void applyAndVerifyEnrichment(final List<Result> l1, final List<Result> 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);
|
|
|
|
assertNotNull(currentInstance.getMeasures());
|
|
|
|
assertNotNull(currentPub.getTitle());
|
|
|
|
assertFalse(Result.isAnEnrichment(currentPub));
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
|
2022-02-04 12:52:12 +01:00
|
|
|
/**
|
|
|
|
* Test the merge of the APC at the level of the result and the instance.
|
|
|
|
*
|
|
|
|
* @throws Exception the exception
|
|
|
|
*/
|
|
|
|
|
|
|
|
@Test
|
|
|
|
void testAPCMerge() throws Exception {
|
|
|
|
List<Result> 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 ));
|
|
|
|
publications.forEach(p -> assertTrue(p.getProcessingchargecurrency() != null ));
|
|
|
|
publications.forEach(p -> assertTrue(StringUtils.isNotBlank(p.getProcessingchargeamount().getValue() )));
|
|
|
|
publications.forEach(p -> assertTrue(StringUtils.isNotBlank(p.getProcessingchargecurrency().getValue() )));
|
|
|
|
|
|
|
|
publications.forEach(p -> p.getInstance().stream()
|
|
|
|
.forEach(i -> assertTrue(i.getProcessingchargeamount() != null)));
|
|
|
|
publications.forEach(p -> p.getInstance().stream()
|
|
|
|
.forEach(i -> assertTrue(i.getProcessingchargecurrency() != null)));
|
|
|
|
|
|
|
|
publications.forEach(p -> p.getInstance().stream()
|
|
|
|
.forEach(i -> assertTrue(StringUtils.isNotBlank(i.getProcessingchargeamount().getValue()))));
|
|
|
|
publications.forEach(p -> p.getInstance().stream()
|
|
|
|
.forEach(i -> assertTrue(StringUtils.isNotBlank(i.getProcessingchargecurrency().getValue()))));
|
|
|
|
|
|
|
|
Result p1 = publications.get(0);
|
|
|
|
Result p2 = publications.get(1);
|
|
|
|
|
|
|
|
p1.mergeFrom(p2);
|
|
|
|
|
2022-02-04 13:18:46 +01:00
|
|
|
assertEquals("1721.47", p1.getProcessingchargeamount().getValue());
|
|
|
|
assertEquals("EUR", p1.getProcessingchargecurrency().getValue());
|
|
|
|
|
2022-02-04 12:52:12 +01:00
|
|
|
assertEquals(2 , p1.getInstance().size());
|
2022-02-04 13:18:46 +01:00
|
|
|
|
2022-02-04 12:52:12 +01:00
|
|
|
p1.getInstance().stream().forEach(i -> assertTrue(i.getProcessingchargeamount() != null));
|
|
|
|
p1.getInstance().stream().forEach(i -> assertTrue(i.getProcessingchargecurrency() != null));
|
|
|
|
|
|
|
|
p1.getInstance().stream().anyMatch(i -> i.getProcessingchargeamount().getValue().equals("2000.47"));
|
|
|
|
p1.getInstance().stream().anyMatch(i -> i.getProcessingchargeamount().getValue().equals("1721.47"));
|
|
|
|
|
|
|
|
p1.getInstance().stream().anyMatch(i -> i.getProcessingchargecurrency().getValue().equals("EUR"));
|
|
|
|
p1.getInstance().stream().anyMatch(i -> i.getProcessingchargecurrency().getValue().equals("USD"));
|
|
|
|
System.out.println(new ObjectMapper().writeValueAsString(p1));
|
|
|
|
}
|
2022-02-04 13:18:46 +01:00
|
|
|
@Test
|
|
|
|
void testAPCMerge2() throws Exception {
|
|
|
|
List<Result> 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 );
|
|
|
|
assertTrue(publications.get(0).getProcessingchargecurrency() != null );
|
|
|
|
assertTrue(publications.get(1).getProcessingchargeamount() == null );
|
|
|
|
|
|
|
|
Result p1 = publications.get(1);
|
|
|
|
Result p2 = publications.get(0);
|
|
|
|
|
|
|
|
p1.mergeFrom(p2);
|
2022-01-13 14:50:18 +01:00
|
|
|
|
2022-02-04 13:18:46 +01:00
|
|
|
assertEquals("1721.47", p1.getProcessingchargeamount().getValue());
|
|
|
|
assertEquals("EUR", p1.getProcessingchargecurrency().getValue());
|
|
|
|
|
|
|
|
assertEquals(2 , p1.getInstance().size());
|
|
|
|
p1.getInstance().stream().anyMatch(i -> i.getProcessingchargeamount() != null);
|
|
|
|
|
|
|
|
p1.getInstance().stream().anyMatch(i -> i.getProcessingchargecurrency() != null);
|
|
|
|
|
|
|
|
assertEquals("1721.47", p1.getInstance().stream().filter(i -> i.getProcessingchargeamount() != null)
|
|
|
|
.collect(Collectors.toList()).get(0).getProcessingchargeamount().getValue());
|
|
|
|
|
|
|
|
assertEquals("EUR", p1.getInstance().stream().filter(i -> i.getProcessingchargeamount() != null)
|
|
|
|
.collect(Collectors.toList()).get(0).getProcessingchargecurrency().getValue());
|
|
|
|
System.out.println(new ObjectMapper().writeValueAsString(p1));
|
|
|
|
}
|
2022-01-13 14:50:18 +01:00
|
|
|
|
|
|
|
/**
|
|
|
|
* Test enrichment function.
|
|
|
|
*
|
|
|
|
* @throws Exception the exception
|
|
|
|
*/
|
|
|
|
@Test
|
|
|
|
void testEnrichment() throws Exception {
|
|
|
|
|
|
|
|
|
|
|
|
// 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);
|
|
|
|
// 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());
|
|
|
|
final Instance currentInstance = Objects.requireNonNull(p.getInstance()).get(0);
|
|
|
|
assertNull(currentInstance.getMeasures());
|
|
|
|
});
|
|
|
|
|
|
|
|
// LOAD test enrichments
|
|
|
|
List<Result> enrichment = loadResourceResult("/eu/dnetlib/dhp/schema/oaf/utils/enrichment.json", Result.class);
|
|
|
|
|
|
|
|
updatePidIntoPublicationInstance(publications, enrichment, false);
|
|
|
|
applyAndVerifyEnrichment(publications, enrichment);
|
|
|
|
|
|
|
|
|
|
|
|
// 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);
|
|
|
|
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);
|
|
|
|
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);
|
|
|
|
updatePidIntoPublicationInstance(publications, enrichment, true);
|
|
|
|
applyAndVerifyEnrichment( enrichment, publications);
|
|
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Merge publication date of acceptance test both present.
|
|
|
|
*/
|
2021-06-18 09:58:30 +02:00
|
|
|
@Test
|
2021-08-10 09:36:37 +02:00
|
|
|
void mergePublicationDateOfAcceptanceTest_bothPresent() {
|
2021-06-18 09:58:30 +02:00
|
|
|
|
|
|
|
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());
|
|
|
|
}
|
|
|
|
|
2022-01-13 14:50:18 +01:00
|
|
|
/**
|
|
|
|
* Merge publication date of acceptance test both present 1.
|
|
|
|
*/
|
2021-06-18 09:58:30 +02:00
|
|
|
@Test
|
2021-08-10 09:36:37 +02:00
|
|
|
void mergePublicationDateOfAcceptanceTest_bothPresent_1() {
|
2021-06-18 09:58:30 +02:00
|
|
|
|
|
|
|
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());
|
|
|
|
}
|
|
|
|
|
2022-01-13 14:50:18 +01:00
|
|
|
/**
|
|
|
|
* Merge publication date of acceptance test both present 2.
|
|
|
|
*/
|
2021-06-18 09:58:30 +02:00
|
|
|
@Test
|
2021-08-10 09:36:37 +02:00
|
|
|
void mergePublicationDateOfAcceptanceTest_bothPresent_2() {
|
2021-06-18 09:58:30 +02:00
|
|
|
|
|
|
|
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());
|
|
|
|
}
|
|
|
|
|
2022-01-13 14:50:18 +01:00
|
|
|
/**
|
|
|
|
* Merge publication date of acceptance test left missing.
|
|
|
|
*/
|
2021-06-18 09:58:30 +02:00
|
|
|
@Test
|
2021-08-10 09:36:37 +02:00
|
|
|
void mergePublicationDateOfAcceptanceTest_leftMissing() {
|
2021-06-18 09:58:30 +02:00
|
|
|
|
|
|
|
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());
|
|
|
|
}
|
|
|
|
|
2022-01-13 14:50:18 +01:00
|
|
|
/**
|
|
|
|
* Merge publication date of acceptance test left missing 1.
|
|
|
|
*/
|
2021-06-18 09:58:30 +02:00
|
|
|
@Test
|
2021-08-10 09:36:37 +02:00
|
|
|
void mergePublicationDateOfAcceptanceTest_leftMissing_1() {
|
2021-06-18 09:58:30 +02:00
|
|
|
|
|
|
|
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());
|
|
|
|
}
|
|
|
|
|
2022-01-13 14:50:18 +01:00
|
|
|
/**
|
|
|
|
* Merge publication date of acceptance test left missing 2.
|
|
|
|
*/
|
2021-06-18 09:58:30 +02:00
|
|
|
@Test
|
2021-08-10 09:36:37 +02:00
|
|
|
void mergePublicationDateOfAcceptanceTest_leftMissing_2() {
|
2021-06-18 09:58:30 +02:00
|
|
|
|
|
|
|
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());
|
|
|
|
}
|
|
|
|
|
2022-01-13 14:50:18 +01:00
|
|
|
/**
|
|
|
|
* Merge publication date of acceptance test right missing.
|
|
|
|
*/
|
2021-06-18 09:58:30 +02:00
|
|
|
@Test
|
2021-08-10 09:36:37 +02:00
|
|
|
void mergePublicationDateOfAcceptanceTest_rightMissing() {
|
2021-06-18 09:58:30 +02:00
|
|
|
|
|
|
|
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());
|
|
|
|
}
|
|
|
|
|
2022-01-13 14:50:18 +01:00
|
|
|
/**
|
|
|
|
* Merge publication date of acceptance test right missing 1.
|
|
|
|
*/
|
2021-06-18 09:58:30 +02:00
|
|
|
@Test
|
2021-08-10 09:36:37 +02:00
|
|
|
void mergePublicationDateOfAcceptanceTest_rightMissing_1() {
|
2021-06-18 09:58:30 +02:00
|
|
|
|
|
|
|
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());
|
|
|
|
}
|
|
|
|
|
2022-01-13 14:50:18 +01:00
|
|
|
/**
|
|
|
|
* Merge publication date of acceptance test right missing 2.
|
|
|
|
*/
|
2021-06-18 09:58:30 +02:00
|
|
|
@Test
|
2021-08-10 09:36:37 +02:00
|
|
|
void mergePublicationDateOfAcceptanceTest_rightMissing_2() {
|
2021-06-18 09:58:30 +02:00
|
|
|
|
|
|
|
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());
|
|
|
|
}
|
|
|
|
|
2022-01-13 14:50:18 +01:00
|
|
|
/**
|
|
|
|
* Merge publication subject test.
|
|
|
|
*/
|
2021-04-23 12:15:36 +02:00
|
|
|
@Test
|
2021-08-10 09:36:37 +02:00
|
|
|
void mergePublicationSubjectTest() {
|
2021-04-23 12:15:36 +02:00
|
|
|
|
2021-06-18 09:58:30 +02:00
|
|
|
Publication a = publication();
|
|
|
|
Publication b = publication();
|
2021-04-23 12:15:36 +02:00
|
|
|
|
|
|
|
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);
|
|
|
|
|
|
|
|
assertNotNull(a.getSubject());
|
|
|
|
assertEquals(3, a.getSubject().size());
|
|
|
|
}
|
|
|
|
|
2022-01-13 14:50:18 +01:00
|
|
|
/**
|
|
|
|
* Merge relation test.
|
|
|
|
*/
|
2021-04-23 12:15:36 +02:00
|
|
|
@Test
|
2021-08-10 09:36:37 +02:00
|
|
|
void mergeRelationTest() {
|
2021-04-23 12:15:36 +02:00
|
|
|
|
|
|
|
Relation a = createRel(null, null);
|
|
|
|
Relation b = createRel(null, null);
|
|
|
|
a.mergeFrom(b);
|
|
|
|
assertEquals(a, b);
|
|
|
|
|
|
|
|
a = createRel(true, null);
|
|
|
|
b = createRel(null, null);
|
|
|
|
a.mergeFrom(b);
|
|
|
|
assertEquals(true, a.getValidated());
|
|
|
|
|
|
|
|
a = createRel(true, null);
|
|
|
|
b = createRel(false, null);
|
|
|
|
a.mergeFrom(b);
|
|
|
|
assertEquals(true, a.getValidated());
|
|
|
|
|
|
|
|
a = createRel(true, null);
|
|
|
|
b = createRel(true, "2016-04-05T12:41:19.202Z");
|
|
|
|
a.mergeFrom(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);
|
|
|
|
assertEquals("2016-04-05T12:41:19.202Z", a.getValidationDate());
|
2021-05-27 14:58:39 +02:00
|
|
|
|
|
|
|
a = createRel(true, "2020-09-10 11:08:52");
|
|
|
|
b = createRel(true, "2021-09-10 11:08:52");
|
|
|
|
a.mergeFrom(b);
|
|
|
|
assertEquals("2020-09-10 11:08:52", a.getValidationDate());
|
|
|
|
|
2021-05-27 17:28:34 +02:00
|
|
|
a = createRel(true, "2021-03-16T10:32:42Z");
|
|
|
|
b = createRel(true, "2020-03-16T10:32:42Z");
|
|
|
|
a.mergeFrom(b);
|
|
|
|
assertEquals("2020-03-16T10:32:42Z", a.getValidationDate());
|
|
|
|
|
|
|
|
|
2021-04-23 12:15:36 +02:00
|
|
|
}
|
|
|
|
|
2022-01-13 14:50:18 +01:00
|
|
|
/**
|
|
|
|
* Merge relation test parse exception.
|
|
|
|
*/
|
2021-04-23 12:15:36 +02:00
|
|
|
@Test
|
2021-08-10 09:36:37 +02:00
|
|
|
void mergeRelationTestParseException() {
|
2021-04-23 13:20:53 +02:00
|
|
|
assertThrows(DateTimeParseException.class, () -> {
|
2021-06-09 12:29:24 +02:00
|
|
|
Relation a = createRel(true, "Once upon a time ...");
|
|
|
|
Relation b = createRel(true, "... in a far away land");
|
2021-04-23 12:15:36 +02:00
|
|
|
a.mergeFrom(b);
|
|
|
|
});
|
|
|
|
}
|
|
|
|
|
2022-01-13 14:50:18 +01:00
|
|
|
/**
|
|
|
|
* Create rel relation.
|
|
|
|
*
|
|
|
|
* @param validated the validated
|
|
|
|
* @param validationDate the validation date
|
|
|
|
* @return the relation
|
|
|
|
*/
|
2021-04-23 12:15:36 +02:00
|
|
|
private Relation createRel(Boolean validated, String validationDate) {
|
|
|
|
Relation rel = new Relation();
|
|
|
|
rel.setSource("1");
|
|
|
|
rel.setTarget("2");
|
|
|
|
rel.setRelType("reltype");
|
|
|
|
rel.setSubRelType("subreltype");
|
|
|
|
rel.setRelClass("relclass");
|
|
|
|
rel.setValidated(validated);
|
|
|
|
rel.setValidationDate(validationDate);
|
|
|
|
return rel;
|
|
|
|
}
|
|
|
|
|
2022-01-13 14:50:18 +01:00
|
|
|
/**
|
|
|
|
* Sets kv.
|
|
|
|
*
|
|
|
|
* @param key the key
|
|
|
|
* @param value the value
|
|
|
|
* @return the kv
|
|
|
|
*/
|
2021-04-23 12:15:36 +02:00
|
|
|
private KeyValue setKV(final String key, final String value) {
|
|
|
|
|
|
|
|
KeyValue k = new KeyValue();
|
|
|
|
|
|
|
|
k.setKey(key);
|
|
|
|
k.setValue(value);
|
|
|
|
|
|
|
|
return k;
|
|
|
|
}
|
|
|
|
|
2022-01-13 14:50:18 +01:00
|
|
|
/**
|
|
|
|
* Sets sp.
|
|
|
|
*
|
|
|
|
* @param value the value
|
|
|
|
* @param schema the schema
|
|
|
|
* @param classname the classname
|
|
|
|
* @return the sp
|
|
|
|
*/
|
2021-04-23 12:15:36 +02:00
|
|
|
private StructuredProperty setSP(
|
|
|
|
final String value, final String schema, final String classname) {
|
|
|
|
StructuredProperty s = new StructuredProperty();
|
|
|
|
s.setValue(value);
|
|
|
|
Qualifier q = new Qualifier();
|
|
|
|
q.setClassname(classname);
|
|
|
|
q.setClassid(classname);
|
|
|
|
q.setSchemename(schema);
|
|
|
|
q.setSchemeid(schema);
|
|
|
|
s.setQualifier(q);
|
|
|
|
return s;
|
|
|
|
}
|
2021-06-18 09:58:30 +02:00
|
|
|
|
2022-01-13 14:50:18 +01:00
|
|
|
/**
|
|
|
|
* Field field.
|
|
|
|
*
|
|
|
|
* @param <T> the type parameter
|
|
|
|
* @param value the value
|
|
|
|
* @return the field
|
|
|
|
*/
|
2021-06-18 09:58:30 +02:00
|
|
|
private <T> Field<T> field(T value) {
|
2021-08-10 09:36:37 +02:00
|
|
|
Field<T> f = new Field();
|
2021-06-18 09:58:30 +02:00
|
|
|
f.setValue(value);
|
|
|
|
return f;
|
|
|
|
}
|
|
|
|
|
2022-01-13 14:50:18 +01:00
|
|
|
/**
|
|
|
|
* Publication publication.
|
|
|
|
*
|
|
|
|
* @return the publication
|
|
|
|
*/
|
2021-06-18 09:58:30 +02:00
|
|
|
private Publication publication() {
|
|
|
|
Publication p = new Publication();
|
|
|
|
p.setDataInfo(df("0.9"));
|
|
|
|
return p;
|
|
|
|
}
|
|
|
|
|
2022-01-13 14:50:18 +01:00
|
|
|
/**
|
|
|
|
* Publication publication.
|
|
|
|
*
|
|
|
|
* @param trust the trust
|
|
|
|
* @return the publication
|
|
|
|
*/
|
2021-06-18 09:58:30 +02:00
|
|
|
private Publication publication(String trust) {
|
|
|
|
Publication p = new Publication();
|
|
|
|
p.setDataInfo(df(trust));
|
|
|
|
return p;
|
|
|
|
}
|
|
|
|
|
2022-01-13 14:50:18 +01:00
|
|
|
/**
|
|
|
|
* Df data info.
|
|
|
|
*
|
|
|
|
* @param trust the trust
|
|
|
|
* @return the data info
|
|
|
|
*/
|
2021-06-18 09:58:30 +02:00
|
|
|
private DataInfo df(String trust) {
|
|
|
|
DataInfo d = new DataInfo();
|
|
|
|
d.setTrust(trust);
|
|
|
|
return d;
|
|
|
|
}
|
2021-04-23 12:15:36 +02:00
|
|
|
}
|