68 lines
2.0 KiB
Java
68 lines
2.0 KiB
Java
package eu.eudat.file.transformer.model.rda.mapper;
|
|
|
|
import eu.eudat.commonmodels.models.descriptiotemplate.FieldModel;
|
|
import eu.eudat.file.transformer.model.rda.License;
|
|
import org.slf4j.Logger;
|
|
import org.slf4j.LoggerFactory;
|
|
import org.springframework.stereotype.Component;
|
|
|
|
import java.net.URI;
|
|
import java.util.List;
|
|
import java.util.Map;
|
|
|
|
@Component
|
|
public class LicenseRDAMapper {
|
|
private static final Logger logger = LoggerFactory.getLogger(LicenseRDAMapper.class);
|
|
|
|
|
|
public License toRDA(List<FieldModel> nodes, List<eu.eudat.commonmodels.models.description.FieldModel> valueFields) {
|
|
if (nodes == null) return null;
|
|
if (valueFields == null) throw new IllegalArgumentException("extraData is missing");
|
|
|
|
License rda = new License();
|
|
for (FieldModel node: nodes) {
|
|
String rdaProperty = node.getSchematics().stream().filter(schematic -> schematic.startsWith("rda.dataset.distribution.license")).findFirst().orElse("");
|
|
eu.eudat.commonmodels.models.description.FieldModel valueField = valueFields.stream().filter(x-> x.getId().equals(node.getId())).findFirst().orElse(null);
|
|
if(valueField == null || valueField.getTextValue() == null || valueField.getTextValue().isBlank()){
|
|
continue;
|
|
}
|
|
for (LicenceProperties licenceProperties: LicenceProperties.values()) {
|
|
if (rdaProperty.contains(licenceProperties.getName())) {
|
|
switch (licenceProperties) {
|
|
case LICENSE_REF:
|
|
try {
|
|
rda.setLicenseRef(URI.create(valueField.getTextValue()));
|
|
} catch (IllegalArgumentException e) {
|
|
logger.warn(e.getLocalizedMessage() + ". Skipping url parsing");
|
|
}
|
|
break;
|
|
case START_DATE:
|
|
rda.setStartDate(valueField.getTextValue());
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
if(rda.getLicenseRef() == null || rda.getStartDate() == null){
|
|
return null;
|
|
}
|
|
|
|
return rda;
|
|
}
|
|
public enum LicenceProperties {
|
|
LICENSE_REF("license_ref"),
|
|
START_DATE("start_date");
|
|
|
|
private String name;
|
|
|
|
LicenceProperties(String name) {
|
|
this.name = name;
|
|
}
|
|
|
|
public String getName() {
|
|
return name;
|
|
}
|
|
}
|
|
}
|