file-transformer-rda-json/core/src/main/java/eu/eudat/file/transformer/rda/mapper/FundingRDAMapper.java

49 lines
2.0 KiB
Java

package eu.eudat.file.transformer.rda.mapper;
import eu.eudat.file.transformer.enums.ReferenceType;
import eu.eudat.file.transformer.models.reference.ReferenceFileTransformerModel;
import eu.eudat.file.transformer.rda.Funding;
import java.util.ArrayList;
import java.util.List;
public class FundingRDAMapper {
public static Funding toRDA(ReferenceFileTransformerModel grant, ReferenceFileTransformerModel funder) {
Funding rda = new Funding();
String referencePrefix;
String shortReference;
Integer prefixLength = 0;
if (funder.getReference() != null) {
referencePrefix = funder.getReference().split(":")[0];
prefixLength = referencePrefix.length() == funder.getReference().length() ? referencePrefix.length() - 1 : referencePrefix.length();
shortReference = funder.getReference().substring(prefixLength + 1);
rda.setFunderId(FunderIdRDAMapper.toRDA(shortReference));
} else {
rda.setFunderId(FunderIdRDAMapper.toRDA(funder.getId()));
}
if (grant.getReference() != null) {
referencePrefix = grant.getReference().split(":")[0];
prefixLength = referencePrefix.length() == grant.getReference().length() ? referencePrefix.length() - 1 : referencePrefix.length();
shortReference = grant.getReference().substring(prefixLength + 1);
rda.setGrantId(GrantIdRDAMapper.toRDA(shortReference));
} else {
rda.setGrantId(GrantIdRDAMapper.toRDA(grant.getId().toString()));
}
return rda;
}
public static List<ReferenceFileTransformerModel> toEntity(Funding rda) {
List<ReferenceFileTransformerModel> references = new ArrayList<>();
ReferenceFileTransformerModel funder = new ReferenceFileTransformerModel();
funder.setType(ReferenceType.Funder);
funder.setReference(rda.getFunderId().getIdentifier());
references.add(funder);
ReferenceFileTransformerModel grant = new ReferenceFileTransformerModel();
grant.setType(ReferenceType.Grants);
grant.setReference(rda.getGrantId().getIdentifier());
references.add(grant);
return references;
}
}