relation-from-odf #251

Merged
claudio.atzori merged 6 commits from relation-from-odf into beta 2022-09-27 15:08:28 +02:00
3 changed files with 630 additions and 603 deletions
Showing only changes of commit c5eb722170 - Show all commits

View File

@ -15,6 +15,7 @@ import java.net.URL;
import java.util.*; import java.util.*;
import java.util.stream.Collectors; import java.util.stream.Collectors;
import eu.dnetlib.dhp.schema.oaf.utils.PidType;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
import org.apache.commons.validator.routines.UrlValidator; import org.apache.commons.validator.routines.UrlValidator;
import org.dom4j.*; import org.dom4j.*;
@ -68,6 +69,15 @@ public abstract class AbstractMdRecordToOafMapper {
nsContext.put("datacite", DATACITE_SCHEMA_KERNEL_3); nsContext.put("datacite", DATACITE_SCHEMA_KERNEL_3);
} }
protected static final Set<String> pidTypeWithAuthority = new HashSet<>();
static {
pidTypeWithAuthority.addAll(IdentifierFactory.PID_AUTHORITY.keySet().stream()
.map(PidType::toString)
.map(String::toLowerCase)
.collect(Collectors.toCollection(HashSet::new)));
}
protected AbstractMdRecordToOafMapper(final VocabularyGroup vocs, final boolean invisible, protected AbstractMdRecordToOafMapper(final VocabularyGroup vocs, final boolean invisible,
final boolean shouldHashId, final boolean forceOriginalId) { final boolean shouldHashId, final boolean forceOriginalId) {
this.vocs = vocs; this.vocs = vocs;

View File

@ -457,10 +457,12 @@ public class OdfToOafMapper extends AbstractMdRecordToOafMapper {
protected String guessRelatedIdentifier(final String idType, final String value) { protected String guessRelatedIdentifier(final String idType, final String value) {
if (StringUtils.isBlank(idType) || StringUtils.isBlank(value)) if (StringUtils.isBlank(idType) || StringUtils.isBlank(value))
return null; return null;
if (idType.equalsIgnoreCase("OPENAIRE")) { if (idType.equalsIgnoreCase("OPENAIRE")) return createOpenaireId(50, value, false);
return createOpenaireId(50, value, false); if(pidTypeWithAuthority.contains(idType.toLowerCase())){
} else return IdentifierFactory.idFromPid("50", idType, value, true);
}
return null; return null;
} }
@Override @Override

View File

@ -933,7 +933,7 @@ class MappersTest {
System.out.println("***************"); System.out.println("***************");
System.out.println(new ObjectMapper().writeValueAsString(list)); System.out.println(new ObjectMapper().writeValueAsString(list));
System.out.println("***************"); System.out.println("***************");
assertEquals(3, list.size()); assertEquals(7, list.size());
final OtherResearchProduct p = (OtherResearchProduct) list.get(0); final OtherResearchProduct p = (OtherResearchProduct) list.get(0);
assertValidId(p.getId()); assertValidId(p.getId());
assertValidId(p.getCollectedfrom().get(0).getKey()); assertValidId(p.getCollectedfrom().get(0).getKey());
@ -941,6 +941,21 @@ class MappersTest {
assertTrue(StringUtils.isNotBlank(p.getTitle().get(0).getValue())); assertTrue(StringUtils.isNotBlank(p.getTitle().get(0).getValue()));
assertEquals("w3id", (p.getPid().get(0).getQualifier().getClassid())); assertEquals("w3id", (p.getPid().get(0).getQualifier().getClassid()));
assertEquals("https://w3id.org/ro-id/0ab171a7-45c5-4194-82d4-850955504bca", (p.getPid().get(0).getValue())); assertEquals("https://w3id.org/ro-id/0ab171a7-45c5-4194-82d4-850955504bca", (p.getPid().get(0).getValue()));
assertEquals(1, list.stream().filter(o -> o instanceof OtherResearchProduct).count());
assertEquals(6, list.stream().filter(o -> o instanceof Relation).count());
for(Oaf oaf : list){
if(oaf instanceof Relation){
String source = ((Relation) oaf).getSource();
String target = ((Relation) oaf).getTarget();
assertNotEquals(source, target);
assertTrue(source.equals(p.getId()) || target.equals(p.getId()));
assertNotNull(((Relation) oaf).getSubRelType());
assertNotNull( ((Relation) oaf).getRelClass());
assertNotNull(((Relation) oaf).getRelType());
}
}
} }
@Test @Test