package teamcity.crowd.plugin.utils;
import com.atlassian.crowd.service.client.ClientProperties;
import jetbrains.buildServer.web.openapi.PluginException;
import java.io.File;
import java.io.FileReader;
import java.io.IOException;
import java.util.Properties;
public class CrowdPluginConfiguration {
public static final String SHOULD_CREATE_GROUPS = "tc.crowd.plugin.createGroups";
public static final String DO_NOT_REMOVE_INTERNAL_GROUPS = "tc.crowd.plugin.doNotRemoveIntGroups";
private LoggerFactory loggerFactory;
private String configDir;
private String configurationFileName;
private ClientProperties clientProperties;
private boolean shouldCreateGroups = false;
private boolean doNotRemoveInternalGroups = false;
public CrowdPluginConfiguration(String configDir, String configurationFileName, ClientProperties clientProperties, LoggerFactory loggerFactory) {
this.configDir = configDir;
this.configurationFileName = configurationFileName;
this.clientProperties = clientProperties;
this.loggerFactory = loggerFactory;
initPropertiesFromFile();
}
public ClientProperties getClientProperties() {
return clientProperties;
}
private void initPropertiesFromFile() {
final File configurationFile = new File(configDir, configurationFileName);
final Properties teamCityPluginProperties = new Properties();
FileReader reader = null;
try {
reader = new FileReader(configurationFile);
teamCityPluginProperties.load(reader);
shouldCreateGroups = Boolean.parseBoolean(teamCityPluginProperties.getProperty(SHOULD_CREATE_GROUPS, "false"));
doNotRemoveInternalGroups = Boolean.parseBoolean(teamCityPluginProperties.getProperty(DO_NOT_REMOVE_INTERNAL_GROUPS, "false"));
clientProperties.updateProperties(teamCityPluginProperties);
} catch (IOException e) {
loggerFactory.getServerLogger().error("Seems that configuration file is not valid", e);
throw new PluginException("Can't initialize the configuration properties for TeamCity Crowd Plugin. Make sure configuration file teamcity-crowd-plugin.properties is in the TeamCity Data Folder/config", e);
} finally {
if (reader != null) {
try {
reader.close();
} catch (IOException e) {
loggerFactory.getServerLogger().debug("Ignoring stupid exception", e);
}
}
}
}
public boolean shouldCreateGroups() {
return shouldCreateGroups;
}
public boolean doNotRemoveInternalGroups() {
return doNotRemoveInternalGroups;
}
}