*\r
*/\r
public class BasicEnv extends StoreImpl implements EnvJAXB, TransCreate<TransJAXB>{\r
- protected LogTarget fatal=LogTarget.SYSERR;\r
- protected LogTarget error=LogTarget.SYSERR;\r
- protected LogTarget audit=LogTarget.SYSOUT;\r
- protected LogTarget init=LogTarget.SYSOUT;\r
- protected LogTarget warn=LogTarget.SYSERR;\r
- protected LogTarget info=LogTarget.SYSOUT;\r
- protected LogTarget debug=LogTarget.NULL;\r
- protected LogTarget trace=LogTarget.NULL;\r
-// protected Map<String, String> props;\r
- \r
-// private boolean sysprops;\r
-\r
- public BasicEnv(String ... args) {\r
- super(null,args);\r
- }\r
-\r
- public BasicEnv(String tag, String[] args) {\r
- super(tag, args);\r
- }\r
- \r
-\r
- /**\r
- * Suitable for use in Applets... obtain all the values \r
- * listed for the variable String arg "tags"\r
- */\r
- public BasicEnv(Applet applet, String ... tags) {\r
- super(null, tags);\r
-// props = new HashMap<>();\r
-// String value;\r
-// for(int i=0;i<tags.length;++i) {\r
-// value = applet.getParameter(tags[i]);\r
-// if(value!=null) {\r
-// props.put(tags[i], value);\r
-// }\r
-// }\r
- }\r
-\r
- public BasicEnv(Properties props) {\r
- super(null, props);\r
- }\r
-\r
- public BasicEnv(String tag, Properties props) {\r
- super(tag, props);\r
- }\r
-\r
-\r
-\r
- // @Override\r
- public LogTarget fatal() {\r
- return fatal;\r
- }\r
-\r
- // @Override\r
- public LogTarget error() {\r
- return error;\r
- }\r
-\r
- \r
- // @Override\r
- public LogTarget audit() {\r
- return audit;\r
- }\r
-\r
- // @Override\r
- public LogTarget init() {\r
- return init;\r
- }\r
-\r
- // @Override\r
- public LogTarget warn() {\r
- return warn;\r
- }\r
-\r
- // @Override\r
- public LogTarget info() {\r
- return info;\r
- }\r
-\r
- // @Override\r
- public LogTarget debug() {\r
- return debug;\r
- }\r
-\r
- public void debug(LogTarget lt) {\r
- debug = lt;\r
- }\r
-\r
- // @Override\r
- public LogTarget trace() {\r
- return trace;\r
- }\r
-\r
- // @Override\r
- public TimeTaken start(String name, int flag) {\r
- return new TimeTaken(name, flag) {\r
- /**\r
- * Format to be printed when called upon\r
- */\r
- // @Override\r
- public void output(StringBuilder sb) {\r
- \r
- switch(flag) {\r
- case Env.XML: sb.append("XML "); break;\r
- case Env.JSON: sb.append("JSON "); break;\r
- case Env.REMOTE: sb.append("REMOTE "); break;\r
- }\r
- sb.append(name);\r
- if(flag != Env.CHECKPOINT) {\r
- sb.append(' ');\r
- sb.append((end-start)/1000000f);\r
- sb.append("ms");\r
- if(size>=0) {\r
- sb.append(" size: ");\r
- sb.append(Long.toString(size));\r
- }\r
- }\r
- }\r
- };\r
- }\r
-\r
- // @Override\r
- public String getProperty(String key) {\r
- return get(staticSlot(key),null);\r
- }\r
- \r
- public Properties getProperties(String ... filter) {\r
- Properties props = new Properties();\r
- boolean yes;\r
- for(String key : existingStaticSlotNames()) {\r
- if(filter.length>0) {\r
- yes = false;\r
- for(String f : filter) {\r
- if(key.startsWith(f)) {\r
- yes = true;\r
- break;\r
- }\r
- }\r
- } else {\r
- yes = true;\r
- }\r
- if(yes) {\r
- String value = getProperty(key);\r
- if(value!=null) {\r
- props.put(key, value);\r
- }\r
- }\r
- }\r
- return props;\r
- }\r
- \r
- // @Override\r
- public String getProperty(String key, String defaultValue) {\r
- return get(staticSlot(key),defaultValue);\r
- }\r
-\r
- // @Override\r
- public String setProperty(String key, String value) {\r
- put(staticSlot(key),value==null?null:value.trim());\r
- return value;\r
- }\r
- \r
- protected Decryptor decryptor = Decryptor.NULL;\r
- protected Encryptor encryptor = Encryptor.NULL;\r
-\r
- \r
- public Decryptor decryptor() {\r
- return decryptor; \r
- }\r
- \r
- public void set(Decryptor newDecryptor) {\r
- decryptor = newDecryptor;\r
- }\r
- \r
- public Encryptor encryptor() {\r
- return encryptor; \r
- }\r
- \r
- public void set(Encryptor newEncryptor) {\r
- encryptor = newEncryptor;\r
- }\r
-\r
- \r
-// @SuppressWarnings("unchecked")\r
- // @Override\r
- public <T> DataFactory<T> newDataFactory(Class<?>... classes) throws APIException {\r
-// if(String.class.isAssignableFrom(classes[0])) \r
-// return (DataFactory<T>) new StringDF(this);\r
- return new JAXBDF<T>(this,classes);\r
- }\r
-\r
-// @SuppressWarnings("unchecked")\r
- // @Override\r
- public <T> DataFactory<T> newDataFactory(Schema schema, Class<?>... classes) throws APIException {\r
-// if(String.class.isAssignableFrom(classes[0])) \r
-// return (DataFactory<T>) new StringDF(this);\r
- return new JAXBDF<T>(this, schema, classes);\r
- }\r
-\r
-// @SuppressWarnings("unchecked")\r
- // @Override\r
- public<T> DataFactory<T> newDataFactory(QName qName, Class<?> ... classes) throws APIException {\r
-// if(String.class.isAssignableFrom(classes[0])) \r
-// return (DataFactory<T>) new StringDF(this);\r
- return new JAXBDF<T>(this, qName, classes);\r
- }\r
-\r
- // @Override\r
- public<T> DataFactory<T> newDataFactory(Schema schema, QName qName, Class<?> ... classes) throws APIException {\r
- return new JAXBDF<T>(this, schema, qName, classes);\r
- }\r
-\r
- // @Override\r
- public BasicTrans newTrans() {\r
- return new BasicTrans(this);\r
- }\r
-\r
- public void loadFromSystemPropsStartsWith(String ... str) {\r
- for(String name : System.getProperties().stringPropertyNames()) {\r
- for(String s : str) {\r
- if(name.startsWith(s)) {\r
- setProperty(name, System.getProperty(name));\r
- }\r
- }\r
- }\r
- }\r
-\r
- /**\r
- * \r
- * \r
- */\r
- public void loadToSystemPropsStartsWith(String ... str) {\r
- String value;\r
- for(String name : existingStaticSlotNames()) {\r
- for(String s : str) {\r
- if(name.startsWith(s)) {\r
- if((value = getProperty(name))!=null)\r
- System.setProperty(name,value);\r
- }\r
- }\r
- }\r
- }\r
- \r
- public void loadPropFiles(String tag, ClassLoader classloader) throws IOException {\r
- String propfiles = getProperty(tag);\r
- if(propfiles!=null) {\r
- for(String pf : Split.splitTrim(File.pathSeparatorChar, propfiles)) {\r
- InputStream is = classloader==null?null:classloader.getResourceAsStream(pf);\r
- if(is==null) {\r
- File f = new File(pf);\r
- if(f.exists()) {\r
- is = new FileInputStream(f);\r
- }\r
- }\r
- if(is!=null) {\r
- BufferedReader br = new BufferedReader(new InputStreamReader(is));\r
- try {\r
- String line;\r
- while((line=br.readLine())!=null) {\r
- line = line.trim();\r
- if(!line.startsWith("#")) {\r
- String[] tv = Split.splitTrim('=', line);\r
- if(tv.length==2) {\r
- setProperty(tv[0],tv[1]);\r
- }\r
- }\r
- }\r
- } finally {\r
- try {\r
- br.close();\r
- } catch (IOException e) {\r
- error().log(e);\r
- }\r
- }\r
- }\r
- }\r
- }\r
- }\r
- \r
- /**\r
- * Create a StaticSlot, and load it from existing Properties\r
- * \r
- * @param name\r
- * @param propName\r
- * @return\r
- */\r
- public synchronized StaticSlot staticSlot(String name, final String propName) {\r
- StaticSlot ss = staticSlot(name);\r
- put(ss,getProperty(propName));\r
- return ss;\r
- }\r
+ protected LogTarget fatal=LogTarget.SYSERR;\r
+ protected LogTarget error=LogTarget.SYSERR;\r
+ protected LogTarget audit=LogTarget.SYSOUT;\r
+ protected LogTarget init=LogTarget.SYSOUT;\r
+ protected LogTarget warn=LogTarget.SYSERR;\r
+ protected LogTarget info=LogTarget.SYSOUT;\r
+ protected LogTarget debug=LogTarget.NULL;\r
+ protected LogTarget trace=LogTarget.NULL;\r
+// protected Map<String, String> props;\r
+ \r
+// private boolean sysprops;\r
+\r
+ public BasicEnv(String ... args) {\r
+ super(null,args);\r
+ }\r
+\r
+ public BasicEnv(String tag, String[] args) {\r
+ super(tag, args);\r
+ }\r
+ \r
+\r
+ /**\r
+ * Suitable for use in Applets... obtain all the values \r
+ * listed for the variable String arg "tags"\r
+ */\r
+ public BasicEnv(Applet applet, String ... tags) {\r
+ super(null, tags);\r
+// props = new HashMap<>();\r
+// String value;\r
+// for (int i=0;i<tags.length;++i) {\r
+// value = applet.getParameter(tags[i]);\r
+// if (value!=null) {\r
+// props.put(tags[i], value);\r
+// }\r
+// }\r
+ }\r
+\r
+ public BasicEnv(Properties props) {\r
+ super(null, props);\r
+ }\r
+\r
+ public BasicEnv(String tag, Properties props) {\r
+ super(tag, props);\r
+ }\r
+\r
+\r
+\r
+ // @Override\r
+ public LogTarget fatal() {\r
+ return fatal;\r
+ }\r
+\r
+ // @Override\r
+ public LogTarget error() {\r
+ return error;\r
+ }\r
+\r
+ \r
+ // @Override\r
+ public LogTarget audit() {\r
+ return audit;\r
+ }\r
+\r
+ // @Override\r
+ public LogTarget init() {\r
+ return init;\r
+ }\r
+\r
+ // @Override\r
+ public LogTarget warn() {\r
+ return warn;\r
+ }\r
+\r
+ // @Override\r
+ public LogTarget info() {\r
+ return info;\r
+ }\r
+\r
+ // @Override\r
+ public LogTarget debug() {\r
+ return debug;\r
+ }\r
+\r
+ public void debug(LogTarget lt) {\r
+ debug = lt;\r
+ }\r
+\r
+ // @Override\r
+ public LogTarget trace() {\r
+ return trace;\r
+ }\r
+\r
+ // @Override\r
+ public TimeTaken start(String name, int flag) {\r
+ return new TimeTaken(name, flag) {\r
+ /**\r
+ * Format to be printed when called upon\r
+ */\r
+ // @Override\r
+ public void output(StringBuilder sb) {\r
+ \r
+ switch(flag) {\r
+ case Env.XML: sb.append("XML "); break;\r
+ case Env.JSON: sb.append("JSON "); break;\r
+ case Env.REMOTE: sb.append("REMOTE "); break;\r
+ }\r
+ sb.append(name);\r
+ if (flag != Env.CHECKPOINT) {\r
+ sb.append(' ');\r
+ sb.append((end-start)/1000000f);\r
+ sb.append("ms");\r
+ if (size>=0) {\r
+ sb.append(" size: ");\r
+ sb.append(Long.toString(size));\r
+ }\r
+ }\r
+ }\r
+ };\r
+ }\r
+\r
+ // @Override\r
+ public String getProperty(String key) {\r
+ return get(staticSlot(key),null);\r
+ }\r
+ \r
+ public Properties getProperties(String ... filter) {\r
+ Properties props = new Properties();\r
+ boolean yes;\r
+ for (String key : existingStaticSlotNames()) {\r
+ if (filter.length>0) {\r
+ yes = false;\r
+ for (String f : filter) {\r
+ if (key.startsWith(f)) {\r
+ yes = true;\r
+ break;\r
+ }\r
+ }\r
+ } else {\r
+ yes = true;\r
+ }\r
+ if (yes) {\r
+ String value = getProperty(key);\r
+ if (value!=null) {\r
+ props.put(key, value);\r
+ }\r
+ }\r
+ }\r
+ return props;\r
+ }\r
+ \r
+ // @Override\r
+ public String getProperty(String key, String defaultValue) {\r
+ return get(staticSlot(key),defaultValue);\r
+ }\r
+\r
+ // @Override\r
+ public String setProperty(String key, String value) {\r
+ put(staticSlot(key),value==null?null:value.trim());\r
+ return value;\r
+ }\r
+ \r
+ protected Decryptor decryptor = Decryptor.NULL;\r
+ protected Encryptor encryptor = Encryptor.NULL;\r
+\r
+ \r
+ public Decryptor decryptor() {\r
+ return decryptor; \r
+ }\r
+ \r
+ public void set(Decryptor newDecryptor) {\r
+ decryptor = newDecryptor;\r
+ }\r
+ \r
+ public Encryptor encryptor() {\r
+ return encryptor; \r
+ }\r
+ \r
+ public void set(Encryptor newEncryptor) {\r
+ encryptor = newEncryptor;\r
+ }\r
+\r
+ \r
+// @SuppressWarnings("unchecked")\r
+ // @Override\r
+ public <T> DataFactory<T> newDataFactory(Class<?>... classes) throws APIException {\r
+// if (String.class.isAssignableFrom(classes[0])) \r
+// return (DataFactory<T>) new StringDF(this);\r
+ return new JAXBDF<T>(this,classes);\r
+ }\r
+\r
+// @SuppressWarnings("unchecked")\r
+ // @Override\r
+ public <T> DataFactory<T> newDataFactory(Schema schema, Class<?>... classes) throws APIException {\r
+// if (String.class.isAssignableFrom(classes[0])) \r
+// return (DataFactory<T>) new StringDF(this);\r
+ return new JAXBDF<T>(this, schema, classes);\r
+ }\r
+\r
+// @SuppressWarnings("unchecked")\r
+ // @Override\r
+ public<T> DataFactory<T> newDataFactory(QName qName, Class<?> ... classes) throws APIException {\r
+// if (String.class.isAssignableFrom(classes[0])) \r
+// return (DataFactory<T>) new StringDF(this);\r
+ return new JAXBDF<T>(this, qName, classes);\r
+ }\r
+\r
+ // @Override\r
+ public<T> DataFactory<T> newDataFactory(Schema schema, QName qName, Class<?> ... classes) throws APIException {\r
+ return new JAXBDF<T>(this, schema, qName, classes);\r
+ }\r
+\r
+ // @Override\r
+ public BasicTrans newTrans() {\r
+ return new BasicTrans(this);\r
+ }\r
+\r
+ public void loadFromSystemPropsStartsWith(String ... str) {\r
+ for (String name : System.getProperties().stringPropertyNames()) {\r
+ for (String s : str) {\r
+ if (name.startsWith(s)) {\r
+ setProperty(name, System.getProperty(name));\r
+ }\r
+ }\r
+ }\r
+ }\r
+\r
+ /**\r
+ * \r
+ * \r
+ */\r
+ public void loadToSystemPropsStartsWith(String ... str) {\r
+ String value;\r
+ for (String name : existingStaticSlotNames()) {\r
+ for (String s : str) {\r
+ if (name.startsWith(s)) {\r
+ if ((value = getProperty(name))!=null)\r
+ System.setProperty(name,value);\r
+ }\r
+ }\r
+ }\r
+ }\r
+ \r
+ public void loadPropFiles(String tag, ClassLoader classloader) throws IOException {\r
+ String propfiles = getProperty(tag);\r
+ if (propfiles!=null) {\r
+ for (String pf : Split.splitTrim(File.pathSeparatorChar, propfiles)) {\r
+ InputStream is = classloader==null?null:classloader.getResourceAsStream(pf);\r
+ if (is==null) {\r
+ File f = new File(pf);\r
+ if (f.exists()) {\r
+ is = new FileInputStream(f);\r
+ }\r
+ }\r
+ if (is!=null) {\r
+ BufferedReader br = new BufferedReader(new InputStreamReader(is));\r
+ try {\r
+ String line;\r
+ while ((line=br.readLine())!=null) {\r
+ line = line.trim();\r
+ if (!line.startsWith("#")) {\r
+ String[] tv = Split.splitTrim('=', line);\r
+ if (tv.length==2) {\r
+ setProperty(tv[0],tv[1]);\r
+ }\r
+ }\r
+ }\r
+ } finally {\r
+ try {\r
+ br.close();\r
+ } catch (IOException e) {\r
+ error().log(e);\r
+ }\r
+ }\r
+ }\r
+ }\r
+ }\r
+ }\r
+ \r
+ /**\r
+ * Create a StaticSlot, and load it from existing Properties\r
+ * \r
+ * @param name\r
+ * @param propName\r
+ * @return\r
+ */\r
+ public synchronized StaticSlot staticSlot(String name, final String propName) {\r
+ StaticSlot ss = staticSlot(name);\r
+ put(ss,getProperty(propName));\r
+ return ss;\r
+ }\r
\r
\r
}\r