package eu.eudat.model.persist.tenantconfig; import eu.eudat.commons.validation.BaseValidator; import gr.cite.tools.validation.specification.Specification; import eu.eudat.convention.ConventionService; import eu.eudat.errorcode.ErrorThesaurusProperties; 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; public class TenantSourcePersist { private String url; public static final String _url = "url"; private List codes; public static final String _codes = "codes"; private String issuerUrl; public static final String _issuerUrl = "issuerUrl"; private String clientId; public static final String _clientId = "clientId"; private String clientSecret; public static final String _clientSecret = "clientSecret"; private String scope; public static final String _scope = "scope"; public String getUrl() { return url; } public void setUrl(String url) { this.url = url; } public List getCodes() { return codes; } public void setCodes(List codes) { this.codes = codes; } public String getIssuerUrl() { return issuerUrl; } public void setIssuerUrl(String issuerUrl) { this.issuerUrl = issuerUrl; } public String getClientId() { return clientId; } public void setClientId(String clientId) { this.clientId = clientId; } public String getClientSecret() { return clientSecret; } public void setClientSecret(String clientSecret) { this.clientSecret = clientSecret; } public String getScope() { return scope; } public void setScope(String scope) { this.scope = scope; } @Component(TenantSourcePersistValidator.ValidatorName) @Scope(ConfigurableBeanFactory.SCOPE_PROTOTYPE) public static class TenantSourcePersistValidator extends BaseValidator { public static final String ValidatorName = "TenantSourcePersistValidator"; private final MessageSource messageSource; protected TenantSourcePersistValidator(ConventionService conventionService, ErrorThesaurusProperties errors, MessageSource messageSource) { super(conventionService, errors); this.messageSource = messageSource; } @Override protected Class modelClass() { return TenantSourcePersist.class; } @Override protected List specifications(TenantSourcePersist item) { return Arrays.asList( this.spec() .must(() -> !this.isEmpty(item.getUrl())) .failOn(TenantSourcePersist._url).failWith(messageSource.getMessage("Validation_Required", new Object[]{TenantSourcePersist._url}, LocaleContextHolder.getLocale())), this.spec() .must(() -> !this.isListNullOrEmpty(item.getCodes())) .failOn(TenantSourcePersist._codes).failWith(messageSource.getMessage("Validation_Required", new Object[]{TenantSourcePersist._codes}, LocaleContextHolder.getLocale())), this.spec() .must(() -> !this.isEmpty(item.getIssuerUrl())) .failOn(TenantSourcePersist._issuerUrl).failWith(messageSource.getMessage("Validation_Required", new Object[]{TenantSourcePersist._issuerUrl}, LocaleContextHolder.getLocale())), this.spec() .must(() -> !this.isEmpty(item.getClientId())) .failOn(TenantSourcePersist._clientId).failWith(messageSource.getMessage("Validation_Required", new Object[]{TenantSourcePersist._clientId}, LocaleContextHolder.getLocale())), this.spec() .must(() -> !this.isEmpty(item.getClientSecret())) .failOn(TenantSourcePersist._clientSecret).failWith(messageSource.getMessage("Validation_Required", new Object[]{TenantSourcePersist._clientSecret}, LocaleContextHolder.getLocale())), this.spec() .must(() -> !this.isEmpty(item.getScope())) .failOn(TenantSourcePersist._scope).failWith(messageSource.getMessage("Validation_Required", new Object[]{TenantSourcePersist._scope}, LocaleContextHolder.getLocale())) ); } } }