package com.constellio.model.entities.configs; import com.constellio.data.utils.LangUtils; import com.constellio.model.entities.calculators.dependencies.ConfigDependency; public class SystemConfiguration { boolean hidden; SystemConfigurationType type; String module; String configGroupCode; String code; String propertyKey; Object defaultValue; boolean rebootRequired; boolean hiddenValue; boolean requireReIndexing; Class<? extends Enum<?>> enumClass; Class<? extends SystemConfigurationScript> scriptClass; SystemConfiguration(SystemConfigurationType type, String module, String configGroupCode, String code, Object defaultValue, Class<? extends Enum<?>> enumClass, Class<? extends SystemConfigurationScript> scriptClass, boolean hidden, boolean rebootRequired, boolean hiddenValue, boolean requireReIndexing) { this.type = type; this.configGroupCode = configGroupCode; this.code = code; this.module = module; this.defaultValue = defaultValue; this.enumClass = enumClass; this.scriptClass = scriptClass; this.hidden = hidden; this.rebootRequired = rebootRequired; this.hiddenValue = hiddenValue; this.propertyKey = configGroupCode + "_" + code; this.requireReIndexing = requireReIndexing; } public SystemConfigurationType getType() { return type; } public String getModule() { return module; } public String getConfigGroupCode() { return configGroupCode; } public String getCode() { return code; } public Object getDefaultValue() { return defaultValue; } public Class<? extends Enum<?>> getEnumClass() { return enumClass; } public Class<? extends SystemConfigurationScript> getScriptClass() { return scriptClass; } public SystemConfiguration withDefaultValue(Object value) { return new SystemConfiguration(type, module, configGroupCode, code, value, enumClass, scriptClass, hidden, rebootRequired, hiddenValue, requireReIndexing); } public SystemConfiguration scriptedBy(Class<? extends SystemConfigurationScript> scriptClass) { return new SystemConfiguration(type, module, configGroupCode, code, defaultValue, enumClass, scriptClass, hidden, rebootRequired, hiddenValue, requireReIndexing); } public <T> ConfigDependency<T> dependency() { return new ConfigDependency<>(this); } @Override public int hashCode() { return code.hashCode(); } @Override public boolean equals(Object obj) { if (obj instanceof SystemConfiguration) { return LangUtils.isEqual(code, ((SystemConfiguration) obj).getCode()); } else { return false; } } @Override public String toString() { return code; } public SystemConfiguration whichIsHidden() { return new SystemConfiguration(type, module, configGroupCode, code, defaultValue, enumClass, scriptClass, true, rebootRequired, hiddenValue, requireReIndexing); } public SystemConfiguration whichRequiresReboot() { return new SystemConfiguration(type, module, configGroupCode, code, defaultValue, enumClass, scriptClass, hidden, true, hiddenValue, requireReIndexing); } public SystemConfiguration whichHasHiddenValue() { return new SystemConfiguration(type, module, configGroupCode, code, defaultValue, enumClass, scriptClass, hidden, rebootRequired, true, requireReIndexing); } public SystemConfiguration withReIndexionRequired() { return new SystemConfiguration(type, module, configGroupCode, code, defaultValue, enumClass, scriptClass, hidden, rebootRequired, hiddenValue, true); } public boolean isHidden() { return hidden; } public boolean isHiddenValue() { return hiddenValue; } public boolean isRebootRequired() { return rebootRequired; } public String getPropertyKey() { return propertyKey; } public boolean isRequireReIndexing() { return requireReIndexing; } }