argos/dmp-backend/core/src/main/java/eu/eudat/model/persist/tenantconfiguration/TenantConfigurationPersist....

209 lines
10 KiB
Java

package eu.eudat.model.persist.tenantconfiguration;
import eu.eudat.commons.enums.TenantConfigurationType;
import eu.eudat.commons.validation.BaseValidator;
import eu.eudat.convention.ConventionService;
import eu.eudat.errorcode.ErrorThesaurusProperties;
import gr.cite.tools.validation.ValidatorFactory;
import gr.cite.tools.validation.specification.Specification;
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.time.Instant;
import java.util.Arrays;
import java.util.List;
import java.util.UUID;
public class TenantConfigurationPersist {
private UUID id;
public static final String _id = "id";
private TenantConfigurationType type;
public static final String _type = "type";
private CssColorsTenantConfigurationPersist cssColors;
public static final String _cssColors = "cssColors";
private DefaultUserLocaleTenantConfigurationPersist defaultUserLocale;
public static final String _defaultUserLocale = "defaultUserLocale";
private DepositTenantConfigurationPersist depositPlugins;
public static final String _depositPlugins = "depositPlugins";
private FileTransformerTenantConfigurationPersist fileTransformerPlugins;
public static final String _fileTransformerPlugins = "fileTransformerPlugins";
private LogoTenantConfigurationPersist logo;
public static final String _logo = "logo";
private String hash;
public static final String _hash = "hash";
public UUID getId() {
return id;
}
public void setId(UUID id) {
this.id = id;
}
public CssColorsTenantConfigurationPersist getCssColors() {
return cssColors;
}
public void setCssColors(CssColorsTenantConfigurationPersist cssColors) {
this.cssColors = cssColors;
}
public DefaultUserLocaleTenantConfigurationPersist getDefaultUserLocale() {
return defaultUserLocale;
}
public void setDefaultUserLocale(DefaultUserLocaleTenantConfigurationPersist defaultUserLocale) {
this.defaultUserLocale = defaultUserLocale;
}
public DepositTenantConfigurationPersist getDepositPlugins() {
return depositPlugins;
}
public void setDepositPlugins(DepositTenantConfigurationPersist depositPlugins) {
this.depositPlugins = depositPlugins;
}
public FileTransformerTenantConfigurationPersist getFileTransformerPlugins() {
return fileTransformerPlugins;
}
public void setFileTransformerPlugins(FileTransformerTenantConfigurationPersist fileTransformerPlugins) {
this.fileTransformerPlugins = fileTransformerPlugins;
}
public LogoTenantConfigurationPersist getLogo() {
return logo;
}
public void setLogo(LogoTenantConfigurationPersist logo) {
this.logo = logo;
}
public String getHash() {
return hash;
}
public void setHash(String hash) {
this.hash = hash;
}
public TenantConfigurationType getType() {
return type;
}
public void setType(TenantConfigurationType type) {
this.type = type;
}
@Component(TenantConfigurationPersist.TenantConfigurationPersistValidator.ValidatorName)
@Scope(ConfigurableBeanFactory.SCOPE_PROTOTYPE)
public static class TenantConfigurationPersistValidator extends BaseValidator<TenantConfigurationPersist> {
public static final String ValidatorName = "TenantConfigurationPersistValidator";
private final MessageSource messageSource;
private final ValidatorFactory validatorFactory;
protected TenantConfigurationPersistValidator(ConventionService conventionService, ErrorThesaurusProperties errors, MessageSource messageSource, ValidatorFactory validatorFactory) {
super(conventionService, errors);
this.messageSource = messageSource;
this.validatorFactory = validatorFactory;
}
@Override
protected Class<TenantConfigurationPersist> modelClass() {
return TenantConfigurationPersist.class;
}
@Override
protected List<Specification> specifications(TenantConfigurationPersist item) {
return Arrays.asList(
this.spec()
.iff(() -> this.isValidGuid(item.getId()))
.must(() -> this.isValidHash(item.getHash()))
.failOn(TenantConfigurationPersist._hash).failWith(messageSource.getMessage("Validation_Required", new Object[]{TenantConfigurationPersist._hash}, LocaleContextHolder.getLocale())),
this.spec()
.iff(() -> !this.isValidGuid(item.getId()))
.must(() -> !this.isValidHash(item.getHash()))
.failOn(TenantConfigurationPersist._hash).failWith(messageSource.getMessage("Validation_OverPosting", new Object[]{}, LocaleContextHolder.getLocale())),
this.spec()
.must(() -> !this.isNull(item.getType()))
.failOn(TenantConfigurationPersist._type).failWith(messageSource.getMessage("Validation_Required", new Object[]{TenantConfigurationPersist._type}, LocaleContextHolder.getLocale())),
this.spec()
.iff(() -> !this.isNull(item.getType()) && TenantConfigurationType.CssColors.equals(item.getType()))
.must(() -> !this.isNull(item.getCssColors()))
.failOn(TenantConfigurationPersist._cssColors).failWith(messageSource.getMessage("Validation_Required", new Object[]{TenantConfigurationPersist._cssColors}, LocaleContextHolder.getLocale())),
this.spec()
.iff(() -> !this.isNull(item.getType()) && TenantConfigurationType.CssColors.equals(item.getType()))
.must(() -> !this.isNull(item.getDefaultUserLocale()))
.failOn(TenantConfigurationPersist._defaultUserLocale).failWith(messageSource.getMessage("Validation_Required", new Object[]{TenantConfigurationPersist._defaultUserLocale}, LocaleContextHolder.getLocale())),
this.spec()
.iff(() -> !this.isNull(item.getType()) && TenantConfigurationType.CssColors.equals(item.getType()))
.must(() -> !this.isNull(item.getDepositPlugins()))
.failOn(TenantConfigurationPersist._depositPlugins).failWith(messageSource.getMessage("Validation_Required", new Object[]{TenantConfigurationPersist._depositPlugins}, LocaleContextHolder.getLocale())),
this.spec()
.iff(() -> !this.isNull(item.getType()) && TenantConfigurationType.CssColors.equals(item.getType()))
.must(() -> !this.isNull(item.getFileTransformerPlugins()))
.failOn(TenantConfigurationPersist._fileTransformerPlugins).failWith(messageSource.getMessage("Validation_Required", new Object[]{TenantConfigurationPersist._fileTransformerPlugins}, LocaleContextHolder.getLocale())),
this.spec()
.iff(() -> !this.isNull(item.getType()) && TenantConfigurationType.CssColors.equals(item.getType()))
.must(() -> !this.isNull(item.getLogo()))
.failOn(TenantConfigurationPersist._logo).failWith(messageSource.getMessage("Validation_Required", new Object[]{TenantConfigurationPersist._logo}, LocaleContextHolder.getLocale())),
this.refSpec()
.iff(() -> !this.isNull(item.getCssColors()) && TenantConfigurationType.CssColors.equals(item.getType()))
.on(TenantConfigurationPersist._cssColors)
.over(item.getCssColors())
.using(() -> this.validatorFactory.validator(CssColorsTenantConfigurationPersist.CssColorsTenantConfigurationPersistValidator.class)),
this.refSpec()
.iff(() -> !this.isNull(item.getDefaultUserLocale()) && TenantConfigurationType.DefaultUserLocale.equals(item.getType()))
.on(TenantConfigurationPersist._defaultUserLocale)
.over(item.getDefaultUserLocale())
.using(() -> this.validatorFactory.validator(DefaultUserLocaleTenantConfigurationPersist.DefaultUserLocaleTenantConfigurationPersistValidator.class)),
this.refSpec()
.iff(() -> !this.isNull(item.getDepositPlugins()) && TenantConfigurationType.DepositPlugins.equals(item.getType()))
.on(TenantConfigurationPersist._depositPlugins)
.over(item.getDepositPlugins())
.using(() -> this.validatorFactory.validator(DepositTenantConfigurationPersist.DepositTenantConfigurationPersistValidator.class)),
this.refSpec()
.iff(() -> !this.isNull(item.getFileTransformerPlugins()) && TenantConfigurationType.FileTransformerPlugins.equals(item.getType()))
.on(TenantConfigurationPersist._fileTransformerPlugins)
.over(item.getFileTransformerPlugins())
.using(() -> this.validatorFactory.validator(FileTransformerTenantConfigurationPersist.FileTransformerTenantConfigurationPersistValidator.class)),
this.refSpec()
.iff(() -> !this.isNull(item.getLogo()) && TenantConfigurationType.Logo.equals(item.getType()))
.on(TenantConfigurationPersist._logo)
.over(item.getLogo())
.using(() -> this.validatorFactory.validator(LogoTenantConfigurationPersist.LogoTenantConfigurationPersistValidator.class))
);
}
}
}