package com.fourinone; import java.util.ArrayList; import java.util.Properties; import java.text.DateFormat; import java.util.Date; import java.io.File; public class ConfigContext { private static MulBean mb = null; private static String QSXYSJ=null,YMMZ=null,RZDY=null,YCDYXY=null,DMY=null,AQCL=null,POLICY=null,LSML=null,SERVICEONWORKER=null; private static long TMOT=-1; static String configFile = new File("").getAbsolutePath()+File.separator+"config.xml"; private static ObjValue USERS = null; private static long KEYLENTH=-1,VALUELENGTH=-1,REGIONLENGTH=-1,LOADLENGTH=-1; private static int HASHCAPACITY=-1; private static String DATAROOT; static long getKEYLENTH(){ if(KEYLENTH==-1) KEYLENTH = new Long(getConfig("COOLHASH","KEYLENTH","B","256")); return KEYLENTH; } static long getVALUELENGTH(){ if(VALUELENGTH==-1) VALUELENGTH = new Long(getConfig("COOLHASH","VALUELENGTH","M","2")); return VALUELENGTH; } static long getREGIONLENGTH(){ if(REGIONLENGTH==-1) REGIONLENGTH = new Long(getConfig("COOLHASH","REGIONLENGTH","M","2")); return REGIONLENGTH; } static long getLOADLENGTH(){ if(LOADLENGTH==-1) LOADLENGTH = new Long(getConfig("COOLHASH","LOADLENGTH","M","64")); return LOADLENGTH; } static int getHASHCAPACITY(){ if(HASHCAPACITY==-1) HASHCAPACITY = new Integer(getConfig("COOLHASH","HASHCAPACITY",null,"1000000")); return HASHCAPACITY; } static String getDATAROOT(){ if(DATAROOT==null) DATAROOT = getConfig("COOLHASH","DATAROOT",null,"data"); return DATAROOT; } static MulBean getMulBean(){ return mb!=null?mb:new MulBean("ISO-8859-1"); } static String getQSXYSJ(){ if(QSXYSJ==null) QSXYSJ = getMulBean().getString("QSXYSJ"); return QSXYSJ; } static String getYMMZ(){ if(YMMZ==null) YMMZ = getMulBean().getString("YMMZ"); return YMMZ; } static String getRZDY(){ if(RZDY==null) RZDY = getMulBean().getString("RZDY"); return RZDY; } static String getYCDYXY(){ if(YCDYXY==null) YCDYXY = getMulBean().getString("YCDYXY"); return YCDYXY; } static String getDMY(){ if(DMY==null) DMY = getMulBean().getString("DMY"); return DMY; } static String getAQCL(){ if(AQCL==null) AQCL = getMulBean().getString("AQCL"); return AQCL; } static String getPOLICY(){ if(POLICY==null) POLICY = getMulBean().getString("POLICY"); return POLICY; } static String getLSML(){ if(LSML==null) LSML = getMulBean().getString("LSML"); return LSML; } static String getProp(String propstr){ return getMulBean().getString(propstr); } static String getProtocolInfo(String ym, int dk, String mc){ return getYCDYXY()+ym+":"+dk+"/"+mc; } static long getTMOT(){ if(TMOT==-1) TMOT = getSecTime(new Double(getConfig("WORKER","TIMEOUT","TRUE","0"))); return TMOT; } static boolean getServiceFlag(){ if(SERVICEONWORKER==null) SERVICEONWORKER = getConfig("WORKER","SERVICE", null, "false"); return Boolean.parseBoolean(SERVICEONWORKER); } static long getSecTime(Double hours) { Double t = hours*3600*1000; return t.longValue(); } static String[][] getParkConfig() { String servers = getConfig("PARK","SERVERS",null); return getServerFromStr(servers); } static String getParkService() { return getConfig("PARK","SERVICE",null); } static String[] getCtorService() { return getConfig("CTOR","CTORSERVERS",null).split(":"); } static String[] getFttpConfig() { return getConfig("FTTP","SERVERS",null).split(":"); } static String[] getInetConfig() { return getConfig("WEBAPP","SERVERS",null).split(":"); } static ObjValue getUsersConfig() { if(USERS==null){ String userstr = getConfig("WEBAPP","USERS",null); USERS = getObjFromStr(userstr); } return USERS; } static String getInetStrConfig(String wkjn) { String inetstr = "http://"+getConfig("WEBAPP","SERVERS",null)+"/res/"; return wkjn!=null?inetstr+wkjn:inetstr; } static String getPolicyConfig(){ String tdir = System.getProperty(getLSML()); File fl = new File(tdir, "a.pl"); if(!fl.exists()){ FileAdapter fa = new FileAdapter(fl.getPath()); fa.getWriter().write(getPOLICY().getBytes()); fa.close(); } return fl.getPath(); } static String[] getWorkerConfig() { return getConfig("WORKER","SERVERS",null).split(":"); } static String[][] getCacheConfig() { String servers = getConfig("CACHE","SERVERS",null); return getServerFromStr(servers); } static String getCacheService() { return getConfig("CACHE","SERVICE",null); } static String[] getCacheFacadeConfig() { return getConfig("CACHEFACADE","SERVERS",null).split(":"); } public static String getCacheFacadeService() { return getConfig("CACHEFACADE","SERVICE",null); } static int getInitServices() { int initnum = 10; try{ initnum = Integer.parseInt(getConfig("CTOR","INITSERVICES",null,"10")); }catch(Exception e){} return initnum; } static int getMaxServices() { int maxnum = 100; try{ maxnum = Integer.parseInt(getConfig("CTOR","MAXSERVICES",null,"100")); }catch(Exception e){} return maxnum; } static int getParallelPattern() { return Integer.parseInt(getConfig("COMPUTEMODE","MODE","DEFAULT")); } static String getConfig(String cfgname, String cfgprop, String cfgdesc) { return getConfig(cfgname, cfgprop, cfgdesc, null); } static String getConfig(String cfgname, String cfgprop, String cfgdesc, String defvalue) { XmlUtil xu = new XmlUtil(); ArrayList al = xu.getXmlObjectByFile(configFile,cfgname,cfgdesc); String v = null; if(al!=null&&al.size()>0) { ObjValue cfgProps = (ObjValue)al.get(0); v = cfgProps.getString(cfgprop); } if(v==null) v=defvalue; //LogUtil.fine("[ConfigContext]", "[getConfig]", v); return v; } static String getLogLevel(String deflevel) { XmlUtil xu = new XmlUtil(); ArrayList al = xu.getXmlPropsByFile(configFile,"LOG","LOGLEVEL"); Properties dbProps = (Properties)al.get(0); String levelName = dbProps.getProperty("LEVELNAME"); return levelName!=null?levelName:deflevel; } static ObjValue getCacheGroupConfig() { XmlUtil xu = new XmlUtil(); ArrayList al = xu.getXmlObjectByFile(configFile,"CACHEGROUP"); ObjValue groups = new ObjValue(); for(int i=0;i<al.size();i++) { ObjValue cacheProps = (ObjValue)al.get(i); ObjValue gp = new ObjValue(); String gpcfgstr = cacheProps.getString("GROUP"); for(String perstr:gpcfgstr.split(";")) { String[] perstrarr = perstr.split("@"); gp.setObj(perstrarr[0],new Long(getDateLong(perstrarr[1]))); } groups.put(gp, new Long(getDateLong(cacheProps.getString("STARTTIME")))); } LogUtil.fine("[ConfigContext]", "[getCacheConfig]", groups); return groups; } static String getDateLong(String dateStr) { if(dateStr!=null&&!dateStr.equals("")) { try { DateFormat dateFormat = DateFormat.getDateInstance(); Date d = dateFormat.parse(dateStr); dateStr = d.getTime()+""; if(dateStr.length()==12) dateStr = "0"+dateStr; }catch(Exception e){ System.out.println(e); } } return dateStr; } static String[][] getServerFromStr(String servers) { String[] serverarr = servers.split(","); String[][] sarr = new String[serverarr.length][]; for(int n=0;n<serverarr.length;n++) { String[] hostport=serverarr[n].split(":"); sarr[n]=hostport; } return sarr; } private static ObjValue getObjFromStr(String strs) { String[] strarr = strs.split(","); ObjValue ov = new ObjValue(); for(String thestr:strarr) { String[] str=thestr.split(":"); ov.setString(str[0],str[1]); } return ov; } static String getRequest(String requestUrl){ return getMulBean().getFileString(getMulBean().getString(requestUrl)); } public static void main(String args[]) { BeanContext.setConfigFile("D:\\demo\\comutil\\test\\config.xml"); System.out.println(getParkConfig()[0][0]); LogUtil.fine(getCacheConfig()); LogUtil.fine("getParallelPattern:"+getParallelPattern()); System.out.println(getConfig("CACHEFACADE","TRYKEYSNUM",null,"500")); } }