package org.lysty.core; import java.io.File; import java.io.FileInputStream; import java.io.PrintWriter; import java.io.Writer; import java.util.Iterator; import java.util.Map; import java.util.Map.Entry; import java.util.Properties; import org.apache.log4j.Logger; public class AppSettingsManager { public static final String PLAY_NEXT_WHEN_LOAD_ON_CURRENT_PLAY = "play_next_when_load_on_current_play"; public static final String REM_UNPLAYED_AUTOGENS_ON_MANUAL_ADD = "rem_unplayed_autogens_on_manual_add"; public static final String LS_INFINI_PLAY = "ls_infini_play"; // last state // - infini // play public static final String INFINIPLAY_GENLIST_SIZE = "infiniplay_genlist_size"; public static final String INFINIPLAY_LAST_N_TO_CHECK = "infiniplay_last_n_to_check"; public static final String LS_PPL_SIZE = "ls_ppl_size"; // last created // partial playlist // size public static final String LS_FILL_STRATEGY = "ls_fill_strategy"; public static final String LS_IS_CIRC_PPL = "ls_is_circ_ppl"; // last // playlist // was // cirular // or not public static final String LS_VOLUME_LEVEL = "ls_volume_level"; public static final String LS_X = "ls_x"; public static final String LS_Y = "ls_y"; static Properties properties; private static File file; private static Logger logger = Logger.getLogger(AppSettingsManager.class); public static void loadProperties(File file) { AppSettingsManager.file = file; properties = new Properties(); try { properties.load(new FileInputStream(file)); } catch (Exception e) { logger.error("Error loading app settings", e); } } public static void setProperty(String key, String value) { properties.put(key, value); } public static String getProperty(String key) { return (String) properties.get(key); } public static String getProperty(String key, String defaultValue) { String ret = getProperty(key); if (ret != null) return ret; return defaultValue; } public static boolean getPropertyAsBoolean(String key) { return "true".equalsIgnoreCase((String) properties.get(key)); } public static void writeAppSettings() { Writer writer; try { writer = new PrintWriter(file); properties.store(writer, ""); writer.flush(); writer.close(); } catch (Exception e) { logger.error("Error writing app settins", e); } } public static void updateAppSettings(Map<String, String> settings) { Iterator<Entry<String, String>> it = settings.entrySet().iterator(); Entry<String, String> entry; while (it.hasNext()) { entry = it.next(); properties.put(entry.getKey(), entry.getValue()); } } }