argos/backend/core/src/main/java/org/opencdmp/model/mapper/publicapi/DescriptionFieldToDatasetFi...

48 lines
2.5 KiB
Java

package org.opencdmp.model.mapper.publicapi;
import org.opencdmp.commons.types.descriptiontemplate.ExternalIdentifierEntity;
import org.opencdmp.commons.types.descriptiontemplate.RuleEntity;
import org.opencdmp.model.publicapi.datasetwizard.DefaultValueEntity;
import org.opencdmp.model.publicapi.datasetwizard.Field;
import org.opencdmp.model.publicapi.datasetwizard.FieldDescriptionEntity;
import org.opencdmp.model.publicapi.datasetwizard.VisibilityEntity;
import org.springframework.stereotype.Component;
@Component
public class DescriptionFieldToDatasetFieldMapper {
public Field toPublicModel(org.opencdmp.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() != null ? field.getDefaultValue().getTextValue(): null); //TODO
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.setBooleanValue(x.getBooleanValue());
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;
}
}