[graph provision] person serialisation

This commit is contained in:
Claudio Atzori 2024-09-20 12:20:00 +02:00
parent 23e0ab3a7c
commit 5f86c93be6
4 changed files with 107 additions and 4 deletions

View File

@ -231,6 +231,14 @@ public class CreateRelatedEntitiesJob_phase1 {
if (!f.isEmpty()) {
re.setFundingtree(f.stream().map(Field::getValue).collect(Collectors.toList()));
}
break;
case person:
final Person person = (Person) entity;
re.setGivenName(person.getGivenName());
re.setFamilyName(person.getFamilyName());
re.setAlternativeNames(person.getAlternativeNames());
break;
}
return re;

View File

@ -5,7 +5,6 @@ import java.io.StringReader;
import java.util.*;
import java.util.stream.Collectors;
import eu.dnetlib.dhp.schema.solr.Person;
import org.apache.commons.lang3.StringUtils;
import org.dom4j.Document;
import org.dom4j.DocumentException;
@ -38,6 +37,8 @@ import eu.dnetlib.dhp.schema.solr.Measure;
import eu.dnetlib.dhp.schema.solr.OpenAccessColor;
import eu.dnetlib.dhp.schema.solr.OpenAccessRoute;
import eu.dnetlib.dhp.schema.solr.Organization;
import eu.dnetlib.dhp.schema.solr.Person;
import eu.dnetlib.dhp.schema.solr.PersonTopic;
import eu.dnetlib.dhp.schema.solr.Pid;
import eu.dnetlib.dhp.schema.solr.Project;
import eu.dnetlib.dhp.schema.solr.Result;
@ -193,6 +194,10 @@ public class ProvisionModelSupport {
ps.setFamilyName(p.getFamilyName());
ps.setGivenName(p.getGivenName());
ps.setAlternativeNames(p.getAlternativeNames());
ps.setBiography(p.getBiography());
ps.setConsent(p.getConsent());
// ps.setSubject(...));
return ps;
}

View File

@ -51,6 +51,11 @@ public class RelatedEntity implements Serializable {
private Qualifier contracttype;
private List<String> fundingtree;
// person
private String givenName;
private String familyName;
private List<String> alternativeNames;
public String getId() {
return id;
}
@ -251,6 +256,30 @@ public class RelatedEntity implements Serializable {
this.fundingtree = fundingtree;
}
public String getGivenName() {
return givenName;
}
public void setGivenName(String givenName) {
this.givenName = givenName;
}
public String getFamilyName() {
return familyName;
}
public void setFamilyName(String familyName) {
this.familyName = familyName;
}
public List<String> getAlternativeNames() {
return alternativeNames;
}
public void setAlternativeNames(List<String> alternativeNames) {
this.alternativeNames = alternativeNames;
}
@Override
public boolean equals(Object o) {
if (this == o)
@ -280,7 +309,10 @@ public class RelatedEntity implements Serializable {
&& Objects.equal(code, that.code)
&& Objects.equal(acronym, that.acronym)
&& Objects.equal(contracttype, that.contracttype)
&& Objects.equal(fundingtree, that.fundingtree);
&& Objects.equal(fundingtree, that.fundingtree)
&& Objects.equal(givenName, that.givenName)
&& Objects.equal(familyName, that.familyName)
&& Objects.equal(alternativeNames, that.alternativeNames);
}
@Override
@ -309,6 +341,9 @@ public class RelatedEntity implements Serializable {
code,
acronym,
contracttype,
fundingtree);
fundingtree,
familyName,
givenName,
alternativeNames);
}
}

View File

@ -20,7 +20,6 @@ import javax.xml.transform.*;
import javax.xml.transform.dom.DOMSource;
import javax.xml.transform.stream.StreamResult;
import eu.dnetlib.dhp.oa.provision.model.*;
import org.apache.commons.lang3.StringUtils;
import org.apache.commons.lang3.tuple.ImmutablePair;
import org.apache.commons.lang3.tuple.Pair;
@ -42,6 +41,7 @@ import com.google.common.collect.Sets;
import com.mycila.xmltool.XMLDoc;
import com.mycila.xmltool.XMLTag;
import eu.dnetlib.dhp.oa.provision.model.*;
import eu.dnetlib.dhp.schema.common.*;
import eu.dnetlib.dhp.schema.oaf.*;
import eu.dnetlib.dhp.schema.oaf.Result;
@ -1035,6 +1035,42 @@ public class XmlRecordFactory implements Serializable {
.collect(Collectors.toList()));
}
break;
case person:
final Person person = (Person) entity;
if (person.getGivenName() != null) {
metadata.add(XmlSerializationUtils.asXmlElement("givenname", person.getGivenName()));
}
if (person.getFamilyName() != null) {
metadata.add(XmlSerializationUtils.asXmlElement("familyname", person.getFamilyName()));
}
if (person.getAlternativeNames() != null) {
metadata.addAll(person.getAlternativeNames());
}
if (person.getBiography() != null) {
metadata.add(XmlSerializationUtils.asXmlElement("biography", person.getBiography()));
}
if (person.getSubject() != null) {
metadata
.addAll(
person
.getSubject()
.stream()
.map(pt -> {
List<Tuple2<String, String>> attrs = Lists.newArrayList();
attrs.add(new Tuple2<>("schema", pt.getSchema()));
attrs.add(new Tuple2<>("value", pt.getValue()));
attrs.add(new Tuple2<>("fromYear", String.valueOf(pt.getFromYear())));
attrs.add(new Tuple2<>("toYear", String.valueOf(pt.getToYear())));
return XmlSerializationUtils.asXmlElement("subject", attrs);
})
.collect(Collectors.toList()));
}
if (person.getConsent() != null) {
metadata.add(XmlSerializationUtils.asXmlElement("consent", String.valueOf(person.getConsent())));
}
break;
default:
throw new IllegalArgumentException("invalid entity type: " + type);
@ -1240,6 +1276,25 @@ public class XmlRecordFactory implements Serializable {
.collect(Collectors.toList()));
}
break;
case person:
if (isNotBlank(re.getGivenName())) {
metadata.add(XmlSerializationUtils.asXmlElement("givenname", re.getGivenName()));
}
if (isNotBlank(re.getFamilyName())) {
metadata.add(XmlSerializationUtils.asXmlElement("familyname", re.getFamilyName()));
}
if (re.getAlternativeNames() != null && !re.getAlternativeNames().isEmpty()) {
metadata
.addAll(
re
.getAlternativeNames()
.stream()
.map(name -> XmlSerializationUtils.asXmlElement("alternativename", name))
.collect(Collectors.toList()));
}
break;
default:
throw new IllegalArgumentException("invalid target type: " + targetType);
}