package com.constellio.app.conf; import java.io.File; import java.util.HashMap; import java.util.Map; import com.constellio.data.conf.PropertiesConfiguration; import com.constellio.data.utils.Factory; import com.constellio.model.conf.FoldersLocator; import com.constellio.model.conf.ModelLayerConfiguration; import com.constellio.model.conf.PropertiesModelLayerConfiguration; import com.constellio.model.services.encrypt.EncryptionServices; public class PropertiesAppLayerConfiguration extends PropertiesConfiguration implements AppLayerConfiguration { private FoldersLocator foldersLocator; private final ModelLayerConfiguration modelLayerConfiguration; public PropertiesAppLayerConfiguration(Map<String, String> configs, ModelLayerConfiguration modelLayerConfiguration, FoldersLocator foldersLocator, File constellioProperties) { super(configs, constellioProperties); this.modelLayerConfiguration = modelLayerConfiguration; this.foldersLocator = foldersLocator; } public static class InMemoryAppLayerConfiguration extends PropertiesAppLayerConfiguration { private Factory<EncryptionServices> encryptionServicesFactory; public InMemoryAppLayerConfiguration(PropertiesAppLayerConfiguration nested) { super(new HashMap<String, String>(nested.configs), nested.modelLayerConfiguration, nested.foldersLocator, new File("")); } @Override public void writeProperty(String key, String value) { configs.put(key, value); } public void setSetupProperties(File value) { setFile("setupProperties.file", value); } public void setPluginsFolder(File value) { setFile("plugins.folder", value); } public void setPluginsManagementOnStartupFile(File value) { setFile("pluginsToMoveOnStartup.file", value); } public void setFastMigrationsEnabled(boolean value) { setBoolean("fastMigrations.enabled", value); } } public static PropertiesAppLayerConfiguration newVolatileConfiguration(PropertiesAppLayerConfiguration config) { return new PropertiesAppLayerConfiguration(new HashMap<>(config.configs), config.modelLayerConfiguration, config.foldersLocator, config.propertyFile) { @Override public void writeProperty(String key, String value) { configs.put(key, value); } }; } @Override public void validate() { } @Override public File getTempFolder() { return modelLayerConfiguration.getTempFolder(); } @Override public File getPluginsFolder() { return getFile("plugins.folder", new FoldersLocator().getPluginsJarsFolder()); } @Override public File getPluginsManagementOnStartupFile() { return getFile("pluginsToMoveOnStartup.file", new FoldersLocator().getPluginsToMoveOnStartupFile()); } @Override public File getSetupProperties() { return getFile("setupProperties.file", foldersLocator.getConstellioSetupProperties()); } @Override public boolean isFastMigrationsEnabled() { return getBoolean("fastMigrations.enabled", true); } }