package com.performizeit.mjprof.monads; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.IOException; import java.util.Arrays; import java.util.Collections; import java.util.Comparator; import java.util.Properties; public class Macros { private Properties defaultProps = null; private static Macros instance = new Macros(); private String reason = ""; private String macroFile; public static Macros getInstance() { return instance; } private Macros() { macroFile = System.getProperty("macros.configFile"); if (macroFile == null) { macroFile = "macros.properties"; } try { initProp(macroFile); } catch (IOException e) { reason = "No macros Unable to read macro file '" + macroFile + "'"; } } public void initProp(String propFile) throws IOException { defaultProps = new Properties(); FileInputStream in = new FileInputStream(propFile); defaultProps.load(in); in.close(); } public Properties getProps() { return defaultProps; } public String getProperty(String name) { return (String) defaultProps.get(name); } public static void main(String[] args) { Macros ins = getInstance(); for (String name : ins.getProps().keySet().toArray(new String[ins.getProps().size()])) { System.out.println(name + ":" + ins.getProperty(name)); } } public void getSynopsisContent(StringBuilder sb) { if (defaultProps == null) { sb.append(reason).append("\n"); return; } if (defaultProps.size() == 0) { sb.append("No macros defined in file '" + macroFile + "' \n"); } String[] names = getProps().keySet().toArray(new String[getProps().size()]); Arrays.sort(names, new Comparator<String>() { @Override public int compare(String o1, String o2) { if (o1.startsWith("-")) o1 = o1.substring(1) + "-"; if (o2.startsWith("-")) o2 = o2.substring(1) + "-"; return o1.compareTo(o2); } }); for (String name : names) { String ln = " " + name; sb.append(ln); for (int j = 0; j < (70 - ln.length()); j++) { sb.append(" "); } sb.append("- "); sb.append(getProperty(name)); sb.append("\n"); } } }