Explorar o código

Change JSON output format

Fabio Battaglia %!s(int64=4) %!d(string=hai) anos
pai
achega
f7e5558e25

+ 13 - 9
src/main/java/info/hkzlab/dupal/analyzer/palanalisys/formatter/JSONFormatter.java

@@ -8,7 +8,7 @@ import info.hkzlab.dupal.analyzer.palanalisys.graph.*;
 import info.hkzlab.dupal.analyzer.palanalisys.simple.SimpleState;
 
 public class JSONFormatter {
-    public static final int JSON_FORMAT_REVISION = 1;
+    public static final int JSON_FORMAT_REVISION = 2;
 
     private JSONFormatter() {};
    
@@ -32,6 +32,7 @@ public class JSONFormatter {
         JSONObject rootObject = new JSONObject();
         JSONArray osLinks = new JSONArray();
         JSONArray regLinks = new JSONArray();
+        JSONArray osStates = new JSONArray();
 
         // Fill in the header and insert it into the root object
         rootObject.put("header", buildHeader(pSpecs, ioAsOutMask));
@@ -42,8 +43,10 @@ public class JSONFormatter {
 
             for(OutLink ol : oLinks) osLinks.put(buildObjectFromOutLink(ol));
             for(RegLink rl : rLinks) regLinks.put(buildObjectFromRegLink(rl));
+            osStates.put(buildObjectFromPINs(os.pins));
         }
 
+        rootObject.put("states", osStates);
         rootObject.put("oLinks", osLinks);
         rootObject.put("rLinks", regLinks);
 
@@ -72,8 +75,8 @@ public class JSONFormatter {
     private static JSONObject buildObjectFromSimpleState(SimpleState ss) {
         JSONObject ssObject = new JSONObject();
 
-        ssObject.put("inputs", ss.input);
-        ssObject.put("outputs", ss.output);
+        ssObject.put("in", ss.input);
+        ssObject.put("out", ss.output);
         ssObject.put("hiz", ss.hiz);
 
         return ssObject;
@@ -82,8 +85,9 @@ public class JSONFormatter {
     private static JSONObject buildObjectFromPINs(OutStatePins pins) {
         JSONObject pinsObject = new JSONObject();
 
-        pinsObject.put("outputs", pins.out);
+        pinsObject.put("out", pins.out);
         pinsObject.put("hiz", pins.hiz);
+        pinsObject.put("hash", pins.hashCode());
 
         return pinsObject;
     }
@@ -92,8 +96,8 @@ public class JSONFormatter {
         JSONObject linkObject = new JSONObject();
 
         linkObject.put("inputs", ol.getLinkInputs());
-        linkObject.put("source", buildObjectFromPINs(ol.src.pins));
-        linkObject.put("destination", buildObjectFromPINs(ol.dest.pins));
+        linkObject.put("src", ol.src.pins.hashCode());
+        linkObject.put("dst", ol.dest.pins.hashCode());
 
         return linkObject;
     }
@@ -102,9 +106,9 @@ public class JSONFormatter {
         JSONObject linkObject = new JSONObject();
 
         linkObject.put("inputs", rl.getLinkInputs());
-        linkObject.put("source", buildObjectFromPINs(rl.src.pins));
-        linkObject.put("middle", buildObjectFromPINs(rl.middle.pins));
-        linkObject.put("destination", buildObjectFromPINs(rl.dest.pins));
+        linkObject.put("src", rl.src.pins.hashCode());
+        linkObject.put("mid", rl.middle.pins.hashCode());
+        linkObject.put("dst", rl.dest.pins.hashCode());
 
         return linkObject;
     }

+ 1 - 1
src/test/java/info/hkzlab/dupal/analyzer/JSONFormatterTest.java

@@ -43,7 +43,7 @@ public class JSONFormatterTest {
 
         OutState[] oStates = new OutState[] {os_a, os_b, os_c, os_d, os_e};
 
-        String expectedJson = "{\"oLinks\":[{\"inputs\":16,\"destination\":{\"outputs\":0,\"hiz\":0},\"source\":{\"outputs\":0,\"hiz\":0}},{\"inputs\":32,\"destination\":{\"outputs\":1,\"hiz\":0},\"source\":{\"outputs\":0,\"hiz\":0}},{\"inputs\":48,\"destination\":{\"outputs\":2,\"hiz\":0},\"source\":{\"outputs\":0,\"hiz\":0}},{\"inputs\":16,\"destination\":{\"outputs\":0,\"hiz\":0},\"source\":{\"outputs\":1,\"hiz\":0}},{\"inputs\":32,\"destination\":{\"outputs\":4,\"hiz\":0},\"source\":{\"outputs\":1,\"hiz\":0}},{\"inputs\":48,\"destination\":{\"outputs\":3,\"hiz\":0},\"source\":{\"outputs\":1,\"hiz\":0}},{\"inputs\":16,\"destination\":{\"outputs\":0,\"hiz\":0},\"source\":{\"outputs\":2,\"hiz\":0}},{\"inputs\":32,\"destination\":{\"outputs\":1,\"hiz\":0},\"source\":{\"outputs\":2,\"hiz\":0}},{\"inputs\":48,\"destination\":{\"outputs\":3,\"hiz\":0},\"source\":{\"outputs\":2,\"hiz\":0}},{\"inputs\":16,\"destination\":{\"outputs\":2,\"hiz\":0},\"source\":{\"outputs\":3,\"hiz\":0}},{\"inputs\":32,\"destination\":{\"outputs\":1,\"hiz\":0},\"source\":{\"outputs\":3,\"hiz\":0}},{\"inputs\":48,\"destination\":{\"outputs\":4,\"hiz\":0},\"source\":{\"outputs\":3,\"hiz\":0}},{\"inputs\":16,\"destination\":{\"outputs\":0,\"hiz\":0},\"source\":{\"outputs\":4,\"hiz\":0}},{\"inputs\":32,\"destination\":{\"outputs\":3,\"hiz\":0},\"source\":{\"outputs\":4,\"hiz\":0}},{\"inputs\":32,\"destination\":{\"outputs\":4,\"hiz\":0},\"source\":{\"outputs\":4,\"hiz\":0}}],\"header\":{\"analyzerProgram\":\"DuPAL Analyzer\",\"PAL\":{\"IOsAsOUT\":63,\"type\":\"PAL16L8\"},\"revision\":1},\"rLinks\":[]}";
+        String expectedJson = "{\"oLinks\":[{\"dst\":6727,\"src\":6727,\"inputs\":16},{\"dst\":6758,\"src\":6727,\"inputs\":32},{\"dst\":6789,\"src\":6727,\"inputs\":48},{\"dst\":6727,\"src\":6758,\"inputs\":16},{\"dst\":6851,\"src\":6758,\"inputs\":32},{\"dst\":6820,\"src\":6758,\"inputs\":48},{\"dst\":6727,\"src\":6789,\"inputs\":16},{\"dst\":6758,\"src\":6789,\"inputs\":32},{\"dst\":6820,\"src\":6789,\"inputs\":48},{\"dst\":6789,\"src\":6820,\"inputs\":16},{\"dst\":6758,\"src\":6820,\"inputs\":32},{\"dst\":6851,\"src\":6820,\"inputs\":48},{\"dst\":6727,\"src\":6851,\"inputs\":16},{\"dst\":6820,\"src\":6851,\"inputs\":32},{\"dst\":6851,\"src\":6851,\"inputs\":32}],\"header\":{\"analyzerProgram\":\"DuPAL Analyzer\",\"PAL\":{\"IOsAsOUT\":63,\"type\":\"PAL16L8\"},\"revision\":2},\"states\":[{\"hiz\":0,\"hash\":6727,\"out\":0},{\"hiz\":0,\"hash\":6758,\"out\":1},{\"hiz\":0,\"hash\":6789,\"out\":2},{\"hiz\":0,\"hash\":6820,\"out\":3},{\"hiz\":0,\"hash\":6851,\"out\":4}],\"rLinks\":[]}";
         JSONObject jobj = JSONFormatter.formatJSON(new PAL16L8Specs(), 0x3F, oStates);
         StringWriter strw = new StringWriter();
         jobj.write(strw);