argos/dmp-backend/core/src/main/java/eu/eudat/model/mapper/publicapi/DescriptionFieldToDatasetFi...

48 lines
2.4 KiB
Java

package eu.eudat.model.mapper.publicapi;
import eu.eudat.commons.types.descriptiontemplate.ExternalIdentifierEntity;
import eu.eudat.commons.types.descriptiontemplate.RuleEntity;
import eu.eudat.model.publicapi.datasetwizard.DefaultValueEntity;
import eu.eudat.model.publicapi.datasetwizard.FieldDescriptionEntity;
import eu.eudat.model.publicapi.datasetwizard.VisibilityEntity;
import eu.eudat.model.publicapi.datasetwizard.Field;
import org.springframework.stereotype.Component;
@Component
public class DescriptionFieldToDatasetFieldMapper {
public Field toPublicModel(eu.eudat.model.descriptiontemplatedefinition.Field field) {
Field model = new Field();
model.setId(field.getId());
model.setOrdinal(field.getOrdinal());
model.setData(field.getData());
model.setDatatype(field.getData().getFieldType().name());
DefaultValueEntity defaultValueEntity = new DefaultValueEntity();
defaultValueEntity.setType(field.getData().getFieldType().name());
defaultValueEntity.setValue(field.getDefaultValue());
model.setDefaultValue(defaultValueEntity);
model.setExport(field.getIncludeInExport());
model.setNumbering(field.getNumbering());
model.setSchematics(field.getSchematics());
model.setValidations(field.getValidations().stream().map(x -> (int) x.getValue()).toList());
VisibilityEntity visibilityEntity = new VisibilityEntity();
visibilityEntity.setRules(field.getVisibilityRules().stream().map(x -> {
RuleEntity ruleEntity = new RuleEntity();
ruleEntity.setDateValue(x.getDateValue());
ruleEntity.setTextValue(x.getTextValue());
ruleEntity.setTextListValue(x.getTextListValue());
if (x.getExternalIdentifier() != null){
ruleEntity.setExternalIdentifier(new ExternalIdentifierEntity());
ruleEntity.getExternalIdentifier().setIdentifier(x.getExternalIdentifier().getIdentifier());
ruleEntity.getExternalIdentifier().setType(x.getExternalIdentifier().getType());
}
ruleEntity.setTarget(x.getTarget());
return ruleEntity;
}).toList());
model.setVisible(visibilityEntity);
FieldDescriptionEntity fieldDescriptionEntity = new FieldDescriptionEntity();
model.setViewStyle(fieldDescriptionEntity);
return model;
}
}