71 lines
2.3 KiB
Java
71 lines
2.3 KiB
Java
package eu.eudat.models.rda.mapper;
|
|
|
|
import com.fasterxml.jackson.databind.ObjectMapper;
|
|
import eu.eudat.data.entities.Researcher;
|
|
import eu.eudat.data.entities.UserDMP;
|
|
import eu.eudat.models.rda.Contributor;
|
|
import eu.eudat.models.rda.ContributorId;
|
|
import org.slf4j.Logger;
|
|
import org.slf4j.LoggerFactory;
|
|
|
|
import java.io.IOException;
|
|
import java.util.*;
|
|
|
|
public class ContributorRDAMapper {
|
|
private static final Logger logger = LoggerFactory.getLogger(ContributorRDAMapper.class);
|
|
|
|
public static Contributor toRDA(UserDMP userDMP) {
|
|
Contributor rda = new Contributor();
|
|
rda.setContributorId(ContributorIdRDAMapper.toRDA(userDMP.getUser().getId()));
|
|
rda.setName(userDMP.getUser().getName());
|
|
rda.setMbox(userDMP.getUser().getEmail());
|
|
rda.setRole(new HashSet<>(Arrays.asList(UserDMP.UserDMPRoles.fromInteger(userDMP.getRole()).name())));
|
|
return rda;
|
|
}
|
|
|
|
public static Contributor toRDA(Researcher researcher) {
|
|
Contributor rda = new Contributor();
|
|
rda.setContributorId(ContributorIdRDAMapper.toRDA(researcher.getReference()));
|
|
rda.setName(researcher.getLabel());
|
|
rda.setMbox(researcher.getPrimaryEmail());
|
|
// rda.setRole(new HashSet<>(Arrays.asList(UserDMP.UserDMPRoles.fromInteger(userDMP.getRole()).name())));
|
|
return rda;
|
|
}
|
|
|
|
public static Contributor toRDA(String value) {
|
|
ObjectMapper mapper = new ObjectMapper();
|
|
try {
|
|
eu.eudat.models.data.dmp.Researcher researcher = mapper.readValue(value, eu.eudat.models.data.dmp.Researcher.class);
|
|
return toRDA(researcher.toDataModel());
|
|
} catch (IOException e) {
|
|
logger.error(e.getMessage(), e);
|
|
}
|
|
return null;
|
|
}
|
|
|
|
public static Researcher toEntity(Contributor rda) {
|
|
Researcher entity = new Researcher();
|
|
String reference;
|
|
if (rda.getContributorId() != null) {
|
|
if (rda.getContributorId().getType() == ContributorId.Type.ORCID) {
|
|
String id = rda.getContributorId().getIdentifier().replace("http://orcid.org/", "");
|
|
reference = "orcid:" + id;
|
|
} else {
|
|
String idParts[] = rda.getContributorId().getIdentifier().split(":");
|
|
if (idParts.length == 1) {
|
|
reference = "dmp:" + rda.getContributorId().getIdentifier();
|
|
} else {
|
|
reference = rda.getContributorId().getIdentifier();
|
|
}
|
|
}
|
|
entity.setReference(reference);
|
|
entity.setLabel(rda.getName());
|
|
entity.setPrimaryEmail(rda.getMbox());
|
|
} else {
|
|
return null;
|
|
}
|
|
|
|
return entity;
|
|
}
|
|
}
|