package com.niklim.clicktrace.props;
import java.io.File;
import org.apache.log4j.FileAppender;
import org.apache.log4j.Level;
import org.apache.log4j.Logger;
import org.apache.log4j.PatternLayout;
import com.google.inject.Inject;
import com.google.inject.Singleton;
/**
* App specific properties. Very unlikely to be modified by the user. For
* Windows installation it stores path to user.properties and log file.
*/
@Singleton
public class AppProperties extends AbstractProperties {
private static final String LOG4J_FILE_APPENDER_NAME = "FA";
private static final String APP_PROPERTIES_PATH = "app.properties";
private static final String JIRA_REST_CLICKTRACE_IMPORT_PATH = "jira.rest.clicktrace.import.path";
private static final String USER_PROPERTIES_PATH = "user.properties.path";
private static final String LOG_FILE_PATH = "log.file.path";
private static final String JIRA_CLIENT_CONNECT_TIMEOUT = "jira.client.connect.timeout";
private static final String JIRA_CLIENT_READ_TIMEOUT = "jira.client.read.timeout";
@Inject
public void init() {
super.init();
initLog4j();
}
private void initLog4j() {
FileAppender fa = new FileAppender();
fa.setName(LOG4J_FILE_APPENDER_NAME);
fa.setFile(getLogPath());
fa.setLayout(new PatternLayout("%d{dd.MM.yyyy HH:mm:ss,SS} %-5p %C{1} - %m%n"));
fa.setThreshold(Level.DEBUG);
fa.setAppend(true);
fa.activateOptions();
Logger.getRootLogger().addAppender(fa);
}
static {
defaults.put(JIRA_REST_CLICKTRACE_IMPORT_PATH, "/rest/clicktrace/1.0/clicktrace/import");
defaults.put(USER_PROPERTIES_PATH, "user.properties");
defaults.put(LOG_FILE_PATH, "clicktrace.log");
defaults.put(JIRA_CLIENT_CONNECT_TIMEOUT, new Integer(180000));
defaults.put(JIRA_CLIENT_READ_TIMEOUT, new Integer(5000));
}
@Override
protected File getPropertiesFilePath() {
return new File(APP_PROPERTIES_PATH);
}
public String getJiraRestClicktraceImportPath() {
return props.getString(JIRA_REST_CLICKTRACE_IMPORT_PATH);
}
public void setJiraRestClicktraceImportPath(String jiraClicktraceImportPath) {
props.setProperty(JIRA_REST_CLICKTRACE_IMPORT_PATH, jiraClicktraceImportPath);
}
public String getUserPropertiesPath() {
return props.getString(USER_PROPERTIES_PATH);
}
public String getLogPath() {
return props.getString(LOG_FILE_PATH);
}
public int getJiraClientConnectTimeout() {
return props.getInt(JIRA_CLIENT_CONNECT_TIMEOUT);
}
public int getJiraClientReadTimeout() {
return props.getInt(JIRA_CLIENT_READ_TIMEOUT);
}
}