package eu.eudat.model.persist; import eu.eudat.commons.validation.BaseValidator; import gr.cite.tools.validation.specification.Specification; import eu.eudat.convention.ConventionService; import eu.eudat.errorcode.ErrorThesaurusProperties; import gr.cite.tools.fieldset.BaseFieldSet; import org.springframework.beans.factory.config.ConfigurableBeanFactory; import org.springframework.context.MessageSource; import org.springframework.context.annotation.Scope; import org.springframework.context.i18n.LocaleContextHolder; import org.springframework.stereotype.Component; import java.util.Arrays; import java.util.List; import java.util.Map; import java.util.UUID; public class DescriptionProfilingRequest { private Map data; public static final String _data = "data"; private String prefillId; public static final String _prefillId = "prefillId"; private UUID prefillingSourceId; public static final String _prefillingSourceId = "prefillingSourceId"; private UUID descriptionTemplateId; public static final String _descriptionTemplateId = "descriptionTemplateId"; private BaseFieldSet project; public static final String _project = "project"; public Map getData() { return data; } public void setData(Map data) { this.data = data; } public String getPrefillId() { return prefillId; } public void setPrefillId(String prefillId) { this.prefillId = prefillId; } public UUID getPrefillingSourceId() { return prefillingSourceId; } public void setPrefillingSourceId(UUID prefillingSourceId) { this.prefillingSourceId = prefillingSourceId; } public UUID getDescriptionTemplateId() { return descriptionTemplateId; } public void setDescriptionTemplateId(UUID descriptionTemplateId) { this.descriptionTemplateId = descriptionTemplateId; } public BaseFieldSet getProject() { return project; } public void setProject(BaseFieldSet project) { this.project = project; } @Component(DescriptionProfilingRequestValidator.ValidatorName) @Scope(ConfigurableBeanFactory.SCOPE_PROTOTYPE) public static class DescriptionProfilingRequestValidator extends BaseValidator { public static final String ValidatorName = "DescriptionProfilingRequestValidator"; private final MessageSource messageSource; protected DescriptionProfilingRequestValidator(ConventionService conventionService, ErrorThesaurusProperties errors, MessageSource messageSource) { super(conventionService, errors); this.messageSource = messageSource; } @Override protected Class modelClass() { return DescriptionProfilingRequest.class; } @Override protected List specifications(DescriptionProfilingRequest item) { return Arrays.asList( this.spec() .must(() -> this.isValidGuid(item.getDescriptionTemplateId())) .failOn(DescriptionProfilingRequest._descriptionTemplateId).failWith(messageSource.getMessage("Validation_Required", new Object[]{DescriptionProfilingRequest._descriptionTemplateId}, LocaleContextHolder.getLocale())), this.spec() .must(() -> this.isValidGuid(item.getPrefillingSourceId())) .failOn(DescriptionProfilingRequest._prefillingSourceId).failWith(messageSource.getMessage("Validation_Required", new Object[]{DescriptionProfilingRequest._prefillingSourceId}, LocaleContextHolder.getLocale())), this.spec() .must(() -> !this.isEmpty(item.getPrefillId())) .failOn(DescriptionProfilingRequest._prefillId).failWith(messageSource.getMessage("Validation_Required", new Object[]{DescriptionProfilingRequest._prefillId}, LocaleContextHolder.getLocale())) // this.spec() // .must(() -> item.getData() != null) // .failOn(DescriptionProfilingWithDataRequest._data).failWith(messageSource.getMessage("Validation_Required", new Object[]{DescriptionProfilingWithDataRequest._data}, LocaleContextHolder.getLocale())) // this.spec() // .must(() -> item.getProject() != null) // .failOn(DescriptionProfilingWithDataRequest._project).failWith(messageSource.getMessage("Validation_Required", new Object[]{DescriptionProfilingWithDataRequest._project}, LocaleContextHolder.getLocale())) ); } } }