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; } }