/** * */ package org.topicquests.topicmap.json.model; import java.util.Iterator; //import org.json.simple.JSONObject; //import org.json.simple.parser.JSONParser; import org.topicquests.util.TextFileHandler; import net.minidev.json.JSONObject; import net.minidev.json.parser.JSONParser; /** * @author park * */ public class StatisticsUtility { private JSONObject data; private final String TOPIC_NODES = "Topic Nodes", FILE_NAME = "TopicMapStatistics.json"; /** * */ public StatisticsUtility() { loadStats(); } public void setValue(String key, Long value) { synchronized(data) { data.put(key, value); } } public void addTopicNode() { addToKey(TOPIC_NODES); } /** * General purpose: any routine can choose a key * and add to it, avoiding the reserved keys defined here * @param key */ public void addToKey(String key) { synchronized(data) { Long v = (Long)data.get(key); if (v == null) v = new Long(1); else v += 1; data.put(key, v); } } public String getStats() { System.out.println("GETSTATS "+data); synchronized(data) { StringBuffer buf = new StringBuffer(); Long x = null; String key; Iterator<String>itr = data.keySet().iterator(); while (itr.hasNext()) { key = itr.next(); x = (Long)data.get(key); if (x != null) { buf = buf.append(key).append(": ").append(x.toString()).append("\n"); } } return buf.toString(); } } public String toJSON() { synchronized(data) { return data.toJSONString(); } } private void loadStats() { TextFileHandler h = new TextFileHandler(); java.io.File f = new java.io.File(FILE_NAME); if (f.exists()) { String json = h.readFile(FILE_NAME); if (json == null) data = new JSONObject(); else { try { data = (JSONObject)new JSONParser(JSONParser.MODE_JSON_SIMPLE).parse(json); } catch (Exception e) { e.printStackTrace(); } } } else data = new JSONObject(); } public void saveStats() { TextFileHandler h = new TextFileHandler(); h.writeFile(FILE_NAME, data.toJSONString()); } }