package edu.illinois.lis.utils; import java.io.BufferedReader; import java.io.FileReader; import java.util.HashMap; import java.util.Iterator; import java.util.Map; import java.util.Map.Entry; import java.util.Set; import com.google.gson.JsonElement; import com.google.gson.JsonObject; import com.google.gson.JsonParser; /** * N.B. All params are stored as strings. It is the responsibility of calling classes to transform into * appropriate data types. * e.g. mu = Double.parseDouble(paramBroker.getParamValue("mu") * * @author Miles Efron * */ public class ParameterBroker { private static final JsonParser JSON_PARSER = new JsonParser(); private Map<String,String> params; /** * constructor where we initialize from a json file of structure: * { * "param1":"value1", * "param2":"value2" * } * * @param pathToJson */ public ParameterBroker(String pathToJson) { params = new HashMap<String,String>(); JsonObject json = null; try { json = (JsonObject) JSON_PARSER.parse(new BufferedReader(new FileReader(pathToJson))); } catch (Exception e) { System.err.println("died trying to parse json file: " + pathToJson); System.exit(-1); } Set<Entry<String, JsonElement>> jsonEntries = json.entrySet(); Iterator<Entry<String, JsonElement>> entryIterator = jsonEntries.iterator(); while(entryIterator.hasNext()) { Entry<String, JsonElement> entry = entryIterator.next(); params.put(entry.getKey(), entry.getValue().getAsString()); System.setProperty(entry.getKey(), entry.getValue().getAsString()); } } public String getParamValue(String paramName) { if(!params.containsKey(paramName)) return null; return params.get(paramName); } public void setParam(String name, String value) { params.put(name, value); } }