diff --git a/build.gradle b/build.gradle index 5d18ad0..8b45a87 100644 --- a/build.gradle +++ b/build.gradle @@ -20,7 +20,9 @@ repositories { } dependencies { - api 'com.github.CST-Group:cst:0.6.1' + api 'com.github.CST-Group:cst:0.6.1' + implementation 'io.vacco.java-express:java-express:0.2.1' + implementation 'com.google.code.gson:gson:2.8.6' } task uberJar(type: Jar) { diff --git a/src/main/java/MindViewerTest/CodeletJson.java b/src/main/java/MindViewerTest/CodeletJson.java new file mode 100644 index 0000000..cc78e13 --- /dev/null +++ b/src/main/java/MindViewerTest/CodeletJson.java @@ -0,0 +1,30 @@ +package MindViewerTest; + +import br.unicamp.cst.core.entities.Codelet; + +import java.util.ArrayList; +import java.util.List; + +public class CodeletJson { + private double activation; + private long timestamp; + private String name; + private List broadcast = new ArrayList(); + private List inputs = new ArrayList(); + private List outputs = new ArrayList(); + + public CodeletJson(Codelet cod) { + this.activation = cod.getActivation(); + this.timestamp = System.currentTimeMillis(); + this.name = cod.getName(); + for (int i = 0; i < cod.getBroadcast().size(); i++) { + this.broadcast.add(new MemoryJson(cod.getBroadcast().get(i))); + } + for (int i = 0; i < cod.getInputs().size(); i++) { + this.inputs.add(new MemoryJson(cod.getInputs().get(i))); + } + for (int i = 0; i < cod.getOutputs().size(); i++) { + this.outputs.add(new MemoryJson(cod.getOutputs().get(i))); + } + } +} diff --git a/src/main/java/MindViewerTest/Main.java b/src/main/java/MindViewerTest/Main.java index a384173..82cfa6a 100644 --- a/src/main/java/MindViewerTest/Main.java +++ b/src/main/java/MindViewerTest/Main.java @@ -11,6 +11,11 @@ import br.unicamp.cst.core.entities.MemoryObject; import br.unicamp.cst.core.entities.Mind; import br.unicamp.cst.util.MindViewer; +import com.google.gson.Gson; +import express.Express; +import express.middleware.CorsOptions; +import express.middleware.Middleware; + import java.util.Timer; import java.util.TimerTask; @@ -158,7 +163,8 @@ private void createAndShowGUI(Mind m) { public Main() { Mind m = prepareMind(); - createAndShowGUI(m); + //Caso queira ver a interface, descomentar a linha abaixo + //createAndShowGUI(m); } public static void main(String[] args) { @@ -166,6 +172,17 @@ public static void main(String[] args) { mainApp.StartTimer(); //MindViewer ov = new MindViewer(m, "Mind", new ArrayList<>()); //ov.setVisible(true); + + Express app = new Express(); + Gson gson = new Gson(); + CorsOptions corsOptions = new CorsOptions(); + corsOptions.setOrigin("*"); + app.use(Middleware.cors(corsOptions)); + app.get("/", (req, res) -> { + MyJson myJson = new MyJson(mainApp.m.getRawMemory().getAllMemoryObjects(),mainApp.m.getCodeRack().getAllCodelets()); + res.send(gson.toJson(myJson)); + }); + app.listen(5000); } } diff --git a/src/main/java/MindViewerTest/MemoryJson.java b/src/main/java/MindViewerTest/MemoryJson.java new file mode 100644 index 0000000..01c0188 --- /dev/null +++ b/src/main/java/MindViewerTest/MemoryJson.java @@ -0,0 +1,30 @@ +package MindViewerTest; + +import br.unicamp.cst.core.entities.Memory; +import br.unicamp.cst.core.entities.MemoryContainer; + +import java.util.ArrayList; +import java.util.List; + +public class MemoryJson { + private Long timestamp; + private volatile Double evaluation; + private volatile Object I; + private String name; + private ArrayList memories = new ArrayList(); + + public MemoryJson(Memory memo) { + timestamp = memo.getTimestamp(); + evaluation = memo.getEvaluation(); + I = memo.getI(); + name = memo.getName(); + if (memo instanceof MemoryContainer) { + MemoryContainer memoAux = (MemoryContainer) memo; + List memoList = memoAux.getAllMemories(); + for (int i = 0; i < memoList.size(); i++) { + this.memories.add(new MemoryJson(memoList.get(i))); + } + } + + } +} diff --git a/src/main/java/MindViewerTest/MyJson.java b/src/main/java/MindViewerTest/MyJson.java new file mode 100644 index 0000000..edd6fbe --- /dev/null +++ b/src/main/java/MindViewerTest/MyJson.java @@ -0,0 +1,21 @@ +package MindViewerTest; + +import br.unicamp.cst.core.entities.Codelet; +import br.unicamp.cst.core.entities.Memory; + +import java.util.ArrayList; +import java.util.List; + +public class MyJson { + private List memories = new ArrayList(); + private List codelets = new ArrayList(); + + public MyJson(List memories, List cods) { + for (int i = 0; i < memories.size(); i++) { + this.memories.add(new MemoryJson(memories.get(i))); + } + for (int i = 0; i < cods.size(); i++) { + this.codelets.add(new CodeletJson(cods.get(i))); + } + } +}