package com.constellio.app.services.systemSetup;
import java.util.Map;
import com.constellio.data.dao.managers.StatefulService;
import com.constellio.data.dao.managers.config.ConfigManager;
import com.constellio.data.dao.managers.config.PropertiesAlteration;
public class SystemGlobalConfigsManager implements StatefulService {
final static String SYSTEM_GLOBAL_PROPERTIES = "/globalProperties";
final static String MARKED_FOR_REINDEXING = "markedForReindexing";
final static String REINDEXING_REQUIRED = "reindexingRequired";
final static String RESTART_REQUIRED = "restartRequired";
final static String LAST_REINDEXING_FAILED = "lastReindexingFailed";
final static String MAIN_DATA_LANGUAGE = "mainLanguage";
final static String TOKEN_DURATION = "tokenDuration";
final static String NOTIFICATION_MINUTES = "notificationMinutes";
final static int TOKEN_DURATION_VALUE = 30;
final static int NOTIFICATION_MINUTES_VALUE = 60;
private final ConfigManager configManager;
public SystemGlobalConfigsManager(ConfigManager configManager) {
this.configManager = configManager;
}
@Override
public void initialize() {
configManager.createPropertiesDocumentIfInexistent(SYSTEM_GLOBAL_PROPERTIES, ConfigManager.EMPTY_PROPERTY_ALTERATION);
configManager.updateProperties(SYSTEM_GLOBAL_PROPERTIES, new PropertiesAlteration() {
@Override
public void alter(Map<String, String> properties) {
properties.put(TOKEN_DURATION, Integer.toString(TOKEN_DURATION_VALUE));
properties.put(NOTIFICATION_MINUTES, Integer.toString(NOTIFICATION_MINUTES_VALUE));
}
});
}
public String getMainDataLanguage() {
return getGlobalProperties().get(MAIN_DATA_LANGUAGE);
}
public int getTokenDuration() {
return Integer.parseInt(getGlobalProperties().get(TOKEN_DURATION));
}
public int getDelayBeforeSendingNotificationEmailsInMinutes() {
return Integer.parseInt(getGlobalProperties().get(NOTIFICATION_MINUTES));
}
public boolean isMarkedForReindexing() {
return "true".equals(getGlobalProperties().get(MARKED_FOR_REINDEXING));
}
public void setMarkedForReindexing(boolean value) {
setProperty(MARKED_FOR_REINDEXING, value ? "true" : "false");
}
public boolean isReindexingRequired() {
return "true".equals(getGlobalProperties().get(REINDEXING_REQUIRED));
}
public void setReindexingRequired(boolean value) {
setProperty(REINDEXING_REQUIRED, value ? "true" : "false");
}
public boolean isRestartRequired() {
return "true".equals(getGlobalProperties().get(RESTART_REQUIRED));
}
public void setRestartRequired(boolean value) {
setProperty(RESTART_REQUIRED, value ? "true" : "false");
}
public boolean hasLastReindexingFailed() {
return "true".equals(getGlobalProperties().get(LAST_REINDEXING_FAILED));
}
public void setLastReindexingFailed(boolean value) {
setProperty(LAST_REINDEXING_FAILED, value ? "true" : "false");
}
private Map<String, String> getGlobalProperties() {
Map<String, String> p = configManager.getProperties(SYSTEM_GLOBAL_PROPERTIES).getProperties();
return p;
}
public void setProperty(final String key, final String value) {
configManager.updateProperties(SystemGlobalConfigsManager.SYSTEM_GLOBAL_PROPERTIES, new PropertiesAlteration() {
@Override
public void alter(Map<String, String> properties) {
properties.put(key, value);
}
});
}
@Override
public void close() {
}
}