LoadController.java 6.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200
  1. package ui.controller;
  2. import java.awt.Point;
  3. import java.io.FileReader;
  4. import java.io.IOException;
  5. import java.util.ArrayList;
  6. import java.util.Iterator;
  7. import org.json.simple.JSONArray;
  8. import org.json.simple.JSONObject;
  9. import org.json.simple.parser.JSONParser;
  10. import org.json.simple.parser.ParseException;
  11. import classes.CpsEdge;
  12. import classes.CpsNode;
  13. import classes.CpsObject;
  14. import classes.HolonElement;
  15. import classes.HolonObject;
  16. import classes.HolonSwitch;
  17. import classes.HolonTransformer;
  18. import ui.model.Model;
  19. import ui.model.idCounter;
  20. public class LoadController {
  21. private Model MODEL;
  22. private CategoryController cgC;
  23. private CanvasController cvsC;
  24. private ObjectController objC;
  25. public LoadController(Model model, CategoryController cg, CanvasController cvs, ObjectController obj) {
  26. this.MODEL = model;
  27. this.cgC = cg;
  28. this.cvsC = cvs;
  29. this.objC = obj;
  30. }
  31. /**
  32. *
  33. * @param path
  34. * @throws IOException
  35. */
  36. public void readJSON(String path) throws IOException {
  37. JSONParser parser = new JSONParser();
  38. MODEL.setCategories(new ArrayList<>());
  39. MODEL.setObjectsOnCanvas(new ArrayList<>());
  40. ArrayList<String> obj = new ArrayList<>();
  41. ArrayList<String> ele = new ArrayList<>();
  42. ArrayList<String> edge = new ArrayList<>();
  43. ArrayList<String> gp = new ArrayList<>();
  44. try {
  45. JSONObject json = (JSONObject) parser.parse(new FileReader(path));
  46. for (Object key : json.keySet()) {
  47. if (key.equals("CG"))
  48. readCategory((JSONArray) json.get(key));
  49. else if (key.toString().contains("CGO") || key.toString().contains("CVSO"))
  50. obj.add(key.toString());
  51. else if (key.toString().contains("CGE") || key.toString().contains("CVSE"))
  52. ele.add(key.toString());
  53. else if (key.toString().contains("EDGE"))
  54. edge.add(key.toString());
  55. else if (key.toString().contains("CGGP") || key.toString().contains("CVSGP"))
  56. gp.add(key.toString());
  57. else
  58. idCounter.setCounter(Integer.parseInt(json.get(key.toString()).toString()));
  59. }
  60. System.out.println(gp.get(0));
  61. dispatch(obj, json);
  62. dispatch(ele, json);
  63. dispatch(edge, json);
  64. dispatch(gp, json);
  65. } catch (ParseException e) {
  66. // TODO Auto-generated catch block
  67. e.printStackTrace();
  68. }
  69. }
  70. public void dispatch(ArrayList<String> input, JSONObject json) {
  71. for (String str : input) {
  72. if (str.contains("CGO")) {
  73. readCategoryObject((JSONArray) json.get(str));
  74. } else if (str.contains("CVSO")) {
  75. readCanvasObject((JSONArray) json.get(str));
  76. } else if (str.contains("CGE") || str.contains("CVSE")) {
  77. readElement((JSONArray) json.get(str));
  78. } else if (str.contains("EDGE")) {
  79. readEdge((JSONArray) json.get(str));
  80. } else if (str.contains("CGGP") || str.contains("CVSGP")) {
  81. readElementGraph((JSONArray) json.get(str));
  82. }
  83. }
  84. }
  85. public void readCategory(JSONArray arr) {
  86. Iterator<Object> i = arr.iterator();
  87. while (i.hasNext()) {
  88. cgC.addNewCategory(i.next().toString());
  89. }
  90. }
  91. public void readCategoryObject(JSONArray arr) {
  92. Iterator<Object> i = arr.iterator();
  93. String type = i.next().toString();
  94. if (type.equals("HolonObject")) {
  95. cgC.addNewHolonObject(cgC.searchCatNode(i.next().toString()), i.next().toString(), new ArrayList<>(),
  96. i.next().toString());
  97. } else if (type.equals("HolonTransformer")) {
  98. cgC.addNewHolonTransformer(cgC.searchCatNode(i.next().toString()), i.next().toString(),
  99. i.next().toString());
  100. } else if (type.equals("HolonSwitch")) {
  101. cgC.addNewHolonSwitch(cgC.searchCatNode(i.next().toString()), i.next().toString(), i.next().toString());
  102. }
  103. }
  104. public void readCanvasObject(JSONArray arr) {
  105. Iterator<Object> i = arr.iterator();
  106. CpsObject cps = null;
  107. String type = i.next().toString();
  108. if (type.equals("HolonObject")) {
  109. cps = new HolonObject(i.next().toString());
  110. } else if (type.equals("HolonTransformer")) {
  111. cps = new HolonTransformer(i.next().toString());
  112. } else if (type.equals("HolonSwitch")) {
  113. cps = new HolonSwitch(i.next().toString());
  114. } else if (type.equals("CpsNode")) {
  115. cps = new CpsNode(i.next().toString());
  116. }
  117. cps.setName(i.next().toString());
  118. cps.setID(Integer.parseInt(i.next().toString()));
  119. cps.setImage(i.next().toString());
  120. cps.setPosition(Integer.parseInt(i.next().toString()), Integer.parseInt(i.next().toString()));
  121. cvsC.addObjectIntoCanvas(cps);
  122. }
  123. public void readElement(JSONArray arr) {
  124. Iterator<Object> i = arr.iterator();
  125. String sav = i.next().toString();
  126. if (sav.equals("Canvas")) {
  127. objC.addNewElementIntoCanvasObject(Integer.parseInt(i.next().toString()), i.next().toString(),
  128. Integer.parseInt(i.next().toString()), Float.parseFloat(i.next().toString()));
  129. } else
  130. objC.addNewElementIntoCategoryObject(sav, i.next().toString(), i.next().toString(),
  131. Integer.parseInt(i.next().toString()), Float.parseFloat(i.next().toString()));
  132. }
  133. public void readEdge(JSONArray arr) {
  134. Iterator<Object> i = arr.iterator();
  135. CpsEdge edge = new CpsEdge(objC.searchByID(Integer.parseInt(i.next().toString())),
  136. objC.searchByID(Integer.parseInt(i.next().toString())));
  137. edge.setCapacity(Float.parseFloat(i.next().toString()));
  138. edge.setFlow(Float.parseFloat(i.next().toString()));
  139. cvsC.addEdgeOnCanvas(edge);
  140. }
  141. public void readElementGraph(JSONArray arr) {
  142. Iterator<Object> i = arr.iterator();
  143. String sav = i.next().toString();
  144. HolonElement ele;
  145. if (sav.equals("Canvas")) {
  146. ele = objC.searchHolonElement((HolonObject) objC.searchByID(Integer.parseInt(i.next().toString())),
  147. i.next().toString());
  148. while (i.hasNext())
  149. ele.getGraphPoints()
  150. .add(new Point(Integer.parseInt(i.next().toString()), Integer.parseInt(i.next().toString())));
  151. System.out.println(ele.getGraphPoints().size());
  152. } else {
  153. ele = objC.searchHolonElement(objC.searchHolonObject(i.next().toString(),
  154. objC.searchCategory(sav, MODEL.getCategories()).getObjects()), i.next().toString());
  155. while (i.hasNext())
  156. ele.getGraphPoints()
  157. .add(new Point(Integer.parseInt(i.next().toString()), Integer.parseInt(i.next().toString())));
  158. }
  159. }
  160. }