📄 rtkey.java
字号:
public static boolean hasDefault(String key) { return (RTKey.getRuntimeEntry(key) != null); } public static Object getDefaultProperty(String key, Object dft) { Entry rtKey = RTKey.getRuntimeEntry(key); return (rtKey != null)? rtKey.getDefault() : dft; } public static void setDefaultProperty(String key, Object val) { Entry rtKey = RTKey.getRuntimeEntry(key); if (rtKey != null) { rtKey.setDefault(val); } else { RTKey.addRuntimeEntry(new Entry(key,val)); } } public static RTProperties getDefaultProperties() { if (defaultProperties == null) { RTProperties rtp = new RTProperties(); rtp.setCheckEnvProperties(true); for (Iterator<Entry> v = RTKey.getRuntimeEntryMap().values().iterator(); v.hasNext();) { Entry rtk = (Entry)v.next(); if (!rtk.isHelp()) { String key = rtk.getKey(); Object val = rtk.getDefault(); rtp.setProperty(key, val); } } defaultProperties = rtp; } return defaultProperties; } // ------------------------------------------------------------------------ public static class Entry { private String key = null; private Object dft = null; private String hlp = null; private int ref = 0; // cyclical reference test public Entry(String key, Object dft, String help) { this.key = key; this.dft = dft; this.hlp = help; } public Entry(String key, Object dft) { this(key, dft, null); } public Entry(String help) { this(null, null, help); } public Entry(String key, int dft, String help) { this(key, new Integer(dft), help); } public Entry(String key, int dft) { this(key, dft, null); } public Entry(String key, long dft, String help) { this(key, new Long(dft), help); } public Entry(String key, long dft) { this(key, dft, null); } public Entry(String key, double dft, String help) { this(key, new Double(dft), help); } public Entry(String key, double dft) { this(key, dft, null); } public Entry(String key, float dft, String help) { this(key, new Float(dft), help); } public Entry(String key, float dft) { this(key, dft, null); } public Entry(String key, boolean dft, String help) { this(key, new Boolean(dft), help); } public Entry(String key, boolean dft) { this(key, dft, null); } public Entry getRealEntry() { if (this.dft instanceof EntryReference) { Entry entry = null; if (this.ref > 0) { Print.logStackTrace("Cyclical EntryReference: " + this.getKey()); entry = NullEntry; } else { this.ref++; try { EntryReference entryRef = (EntryReference)this.dft; Entry nextEntry = entryRef.getReferencedEntry(); // <-- will display error, if not found entry = (nextEntry != null)? nextEntry.getRealEntry() : NullEntry; } finally { this.ref--; } } return entry; } else { return this; } } public boolean isReference() { return (this.dft instanceof EntryReference); } public String getKey() { return this.key; } public Object getDefault() { return this.isReference()? this.getRealEntry().getDefault() : this.dft; } public void setDefault(Object val) { this.dft = val; } public boolean isHelp() { return (this.key == null); } public String getHelp() { return (this.hlp != null)? this.hlp : ""; } public String toString(Object v) { StringBuffer sb = new StringBuffer(); if (this.isHelp()) { sb.append("# --- ").append(this.getHelp()); } else { sb.append(this.getKey()).append("="); sb.append((v != null)? v : NULL_VALUE); } return sb.toString(); } public String toString() { return this.toString(this.getDefault()); } } public static class EntryReference { private String refKey = null; public EntryReference(String key) { this.refKey = key; } public String getKey() { return this.refKey; } public Entry getReferencedEntry() { Entry entry = getRuntimeEntry(this.getKey()); if (entry == null) { Print.logStackTrace("Entry reference not found: " + this.getKey()); } return entry; } public String toString() { String k = this.getKey(); return (k != null)? k : ""; } public boolean equals(Object other) { if (other instanceof EntryReference) { return this.toString().equals(other.toString()); } else { return false; } } } // ------------------------------------------------------------------------ public static void printDefaults(PrintStream out) { /* print standard runtime entries */ Set<String> keyList = new OrderedSet<String>(); String keyGrp = null; for (Iterator<Entry> v = RTKey.getRuntimeEntryMap().values().iterator(); v.hasNext();) { Entry rtk = (Entry)v.next(); if (rtk.isHelp()) { out.println(""); out.println("# ===== " + rtk.getHelp()); } else { Object dft = rtk.getDefault(); out.println("# --- " + rtk.getHelp()); out.println("# " + rtk.toString(dft)); String key = rtk.getKey(); keyList.add(key); if (!key.equals(CONFIG_FILE) && RTConfig.hasProperty(key)) { String val = RTConfig.getString(key, null); //if ((val != null) && ((dft == null) || !val.equals(dft.toString()))) { out.println(rtk.toString(val)); //} } } } /* orphaned entries */ RTProperties cmdLineProps = RTConfig.getConfigFileProperties(); if (cmdLineProps != null) { boolean orphanHeader = false; for (Iterator i = cmdLineProps.keyIterator(); i.hasNext();) { Object k = i.next(); if (!k.equals(COMMAND_LINE_CONF) && !keyList.contains(k)) { if (!orphanHeader) { out.println(""); out.println("# ===== Other entries"); orphanHeader = true; } Object v = cmdLineProps.getProperty(k, null); out.println(k + "=" + ((v != null)? v : NULL_VALUE)); } } } /* final blank line */ out.println(""); } // ------------------------------------------------------------------------ // ------------------------------------------------------------------------ public static void main(String argv[]) { RTConfig.setCommandLineArgs(argv); printDefaults(System.out); } // ------------------------------------------------------------------------}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -