package com.projity.preference; import java.io.File; import java.io.FileInputStream; import java.util.Locale; import java.util.Properties; import java.util.StringTokenizer; public class ConfigurationFile { private static final String[] OPENPROJ_CONF_DIRS={".projectlibre","ProjectLibre"}; private static File confFile; public static File getConfDir(){ if (confFile==null){ String home=System.getProperty("user.home"); if (home!=null){ File f; for (int i=0;i<OPENPROJ_CONF_DIRS.length;i++){ f=new File(home+File.separator+OPENPROJ_CONF_DIRS[i]); if (f.isDirectory()){ System.out.println("Conf file "+f.getPath()+" found"); confFile=f; return f; } } } } return confFile; } private static final String OPENPROJ_CONF_FILE="projectlibre.conf"; private static Properties confProps; public static String getProperty(String key){ if (confProps==null){ File confDir=getConfDir(); if (confDir==null) return null; File f=new File(confDir,OPENPROJ_CONF_FILE); if (!f.exists()) return null; confProps=new Properties(); try { FileInputStream in=new FileInputStream(f); confProps.load(in); in.close(); } catch (Exception e) {} } return confProps.getProperty(key); } private static Locale locale=null; public static Locale getLocale(){ if (locale==null){ String l=getProperty("locale"); if (l==null) locale=Locale.getDefault(); else{ String language=null; String country=null; String variant=null; StringTokenizer st=new StringTokenizer(l,"_-"); if (!st.hasMoreTokens()) locale=Locale.getDefault(); else{ language=st.nextToken(); if (!st.hasMoreTokens()) locale=new Locale(language); else{ country=st.nextToken(); if (!st.hasMoreTokens()) locale=new Locale(language,country); else{ variant=st.nextToken(); locale=new Locale(language,country,variant); } } } } } return locale; } private static final String OPENPROJ_RUN_CONF_FILE="run.conf"; private static Properties runProps; public static String getRunProperty(String key){ if (runProps==null){ File confDir=getConfDir(); if (confDir==null) return null; File f=new File(confDir,OPENPROJ_RUN_CONF_FILE); if (!f.exists()) return null; runProps=new Properties(); try { FileInputStream in=new FileInputStream(f); runProps.load(in); in.close(); } catch (Exception e) {} } return runProps.getProperty(key); } }