74 lines
2.5 KiB
Java
74 lines
2.5 KiB
Java
package eu.eudat.file.transformer.model.rda.mapper;
|
|
|
|
import eu.eudat.commonmodels.models.reference.ReferenceDefinitionModel;
|
|
import eu.eudat.commonmodels.models.reference.ReferenceFieldModel;
|
|
import eu.eudat.commonmodels.models.reference.ReferenceModel;
|
|
import eu.eudat.file.transformer.model.FundingModel;
|
|
import eu.eudat.file.transformer.model.rda.Contributor;
|
|
import eu.eudat.file.transformer.model.rda.Funding;
|
|
import org.springframework.stereotype.Component;
|
|
|
|
import java.util.ArrayList;
|
|
import java.util.List;
|
|
import java.util.Map;
|
|
|
|
@Component
|
|
public class ReferenceContributorRDAMapper{
|
|
private final ContributorIdRDAMapper contributorIdRDAMapper;
|
|
|
|
public ReferenceContributorRDAMapper(ContributorIdRDAMapper contributorIdRDAMapper) {
|
|
this.contributorIdRDAMapper = contributorIdRDAMapper;
|
|
}
|
|
|
|
|
|
public Contributor toRDA(ReferenceModel researcher) {
|
|
if (researcher == null) return null;
|
|
|
|
Contributor rda = new Contributor();
|
|
rda.setContributorId(contributorIdRDAMapper.toRDA(researcher.getReference()));
|
|
rda.setName(researcher.getLabel());
|
|
if (researcher.getDefinition() != null && researcher.getDefinition().getFields() != null) {
|
|
ReferenceFieldModel emailField = researcher.getDefinition().getFields().stream().filter(field -> field.getCode().equals("primaryEmail")).findFirst().orElse(null);
|
|
if (emailField != null) {
|
|
rda.setMbox(emailField.getValue());
|
|
}
|
|
}
|
|
return rda;
|
|
}
|
|
|
|
public List<Contributor> toRDAs(List<ReferenceModel> researchers) {
|
|
if (researchers == null) return null;
|
|
List<Contributor> items = new ArrayList<>();
|
|
for (ReferenceModel researcher : researchers){
|
|
Contributor item = this.toRDA(researcher);
|
|
if (item != null) items.add(item);
|
|
}
|
|
return items;
|
|
}
|
|
|
|
public ReferenceModel toEntity(Contributor rda) {
|
|
if (rda == null || rda.getContributorId() == null) return null;
|
|
|
|
ReferenceModel reference = new ReferenceModel();
|
|
reference.setReference(contributorIdRDAMapper.toEntity(rda.getContributorId()));
|
|
reference.setLabel(rda.getName());
|
|
ReferenceFieldModel field = new ReferenceFieldModel();
|
|
field.setCode("primaryEmail");
|
|
field.setValue(rda.getMbox());
|
|
reference.setDefinition(new ReferenceDefinitionModel());
|
|
reference.getDefinition().setFields(List.of(field));
|
|
|
|
return reference;
|
|
}
|
|
|
|
public List<ReferenceModel> toEntities(List<Contributor> rdas) {
|
|
if (rdas == null) return null;
|
|
List<ReferenceModel> items = new ArrayList<>();
|
|
for (Contributor rda : rdas){
|
|
ReferenceModel item = this.toEntity(rda);
|
|
if (item != null) items.add(item);
|
|
}
|
|
return items;
|
|
}
|
|
}
|