/*******************************************************************************
* LogDruid : Generate charts and reports using data gathered in log files
* Copyright (C) 2016 Frederic Valente (frederic.valente@gmail.com)
*
* This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License along with this program. If not, see http://www.gnu.org/licenses/.
*******************************************************************************/
package logdruid.data;
import java.io.File;
import java.util.HashMap;
import logdruid.util.Persister;
import org.apache.log4j.Logger;
public class Preferences {
private static Logger logger = Logger.getLogger(Preferences.class.getName());
static PreferenceData prefData;
public Preferences() {
logger.info("Preferences()");
//PreferenceData prefData= (PreferenceData) Persister.open(new File("Preference.xml"));
//getPreferences();
}
public static void load() {
prefData= (PreferenceData) Persister.open(new File("Preference.xml"));
if (prefData ==null || prefData.preferences==null) {
prefData= new PreferenceData();
logger.debug(prefData+";"+prefData.preferences);
Persister.save(new File("Preference.xml"), (PreferenceData) prefData);
logger.info("Created Preference.xml");
}
getPreferences();
}
public static HashMap<String, String> getPreferences() {
if (prefData.preferences == null) {
prefData.preferences = new HashMap<String, String>();
logger.info("new prefData.preferences");
}
if (!prefData.preferences.containsKey("timings")) {
prefData.preferences.put("timings", "false");
}
if (!prefData.preferences.containsKey("matches")) {
prefData.preferences.put("matches", "true");
}
if (!prefData.preferences.containsKey("stats")) {
logger.info("stats set to true");
prefData.preferences.put("stats", "true");
}
if (!prefData.preferences.containsKey("chartSize")) {
prefData.preferences.put("chartSize", "350");
}
if (!prefData.preferences.containsKey("lastPath")) {
prefData.preferences.put("lastPath", ".");
}
if (!prefData.preferences.containsKey("ThreadPool_SourceGroup")) {
prefData.preferences.put("ThreadPool_SourceGroup", "4");
}
if (!prefData.preferences.containsKey("ThreadPool_MineProcessor")) {
prefData.preferences.put("ThreadPool_MineProcessor", "8");
}
if (!prefData.preferences.containsKey("ThreadPool_ProcessorByGroup")) {
prefData.preferences.put("ThreadPool_ProcessorByGroup", "2");
}
if (!prefData.preferences.containsKey("editorCommand")) {
prefData.preferences.put("editorCommand", "gvim -R +$line \"$file\"");
}
if (!prefData.preferences.containsKey("gatherstats")) {
prefData.preferences.put("gatherstats", "true");
}
if (!prefData.preferences.containsKey("gatherevents")) {
prefData.preferences.put("gatherevents", "true");
}
if (!prefData.preferences.containsKey("gatherreports")) {
prefData.preferences.put("gatherreports", "true");
}
if (!prefData.preferences.containsKey("eventsAsDots")) {
prefData.preferences.put("eventsAsDots", "true");
}
if (!prefData.preferences.containsKey("MiningFileChunk")) {
prefData.preferences.put("MiningFileChunk", "1000");
}
if (!prefData.preferences.containsKey("ForceSourceDateFormat")) {
prefData.preferences.put("ForceSourceDateFormat", "false");
}
return prefData.preferences;
}
public static void setPreference(String key, String value) {
prefData.preferences.put(key, value);
logger.debug(prefData.preferences);
Persister.save(new File("Preference.xml"), (PreferenceData) prefData);
}
public static String getPreference(String key) {
return getPreferences().get(key);
}
public static boolean isStats() {
return Boolean.parseBoolean(getPreference("stats"));
}
public void setStats(boolean stats) {
setPreference("stats", Boolean.toString(stats));
}
public static boolean isTimings() {
return Boolean.parseBoolean(getPreference("timings"));
}
public void setTimings(boolean timings) {
setPreference("timings", Boolean.toString(timings));
}
public static boolean isMatches() {
return Boolean.parseBoolean(getPreference("matches"));
}
public void setMatches(boolean matches) {
setPreference("matches", Boolean.toString(matches));
}
public static boolean getBooleanPreference(String key){
// TBD : implement a cache
return Boolean.parseBoolean(getPreferences().get(key));
}
public static void persist() {
logger.debug(prefData);
Persister.save(new File("Preference.xml"), (PreferenceData) prefData);
// TODO Auto-generated method stub
}
}