Writer.java 2.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677
  1. package IO;
  2. import java.io.BufferedWriter;
  3. import java.io.FileWriter;
  4. import java.io.IOException;
  5. import java.util.ArrayList;
  6. import org.json.JSONArray;
  7. import org.json.JSONException;
  8. import org.json.JSONObject;
  9. import Model.LayeredGraphEdge;
  10. import Model.LayeredGraphNode;
  11. /**
  12. * Writes a {@link LayeredGraphNode} to a JSON file.
  13. * @author kolja
  14. *
  15. */
  16. public class Writer {
  17. private String file;
  18. public Writer( String outputFileName )
  19. {
  20. file = outputFileName;
  21. }
  22. /**
  23. * Writes the given {@link LayeredGraphNode} to a JSON file.
  24. * @param graph the graph that is to be saved.
  25. */
  26. public void writeOutputGraph( LayeredGraphNode graph )
  27. {
  28. try {
  29. BufferedWriter w = new BufferedWriter( new FileWriter( file ) );
  30. w.write( parseNode( graph ).toString() );
  31. w.close();
  32. } catch (IOException | JSONException e) {
  33. e.printStackTrace();
  34. }
  35. }
  36. private JSONObject parseNode( LayeredGraphNode graph ) throws JSONException
  37. {
  38. JSONObject node = new JSONObject();
  39. JSONArray layers = new JSONArray();
  40. int id = 0;
  41. for( ArrayList<LayeredGraphNode> l : graph.getContainedLayers() )
  42. {
  43. JSONArray layer = new JSONArray();
  44. for( LayeredGraphNode n : l )
  45. {
  46. n.setName( "" + (id++) );
  47. layer.put( parseNode( n ) );
  48. }
  49. layers.put( layer );
  50. }
  51. node.put( "layers", layers );
  52. JSONArray edges = new JSONArray();
  53. for( LayeredGraphEdge e : graph.getContainedEdges() )
  54. {
  55. edges.put( parseEdge( e ) );
  56. }
  57. node.put( "edges", edges );
  58. node.put( "name", graph.getName() );
  59. return node;
  60. }
  61. private JSONObject parseEdge( LayeredGraphEdge e ) throws JSONException
  62. {
  63. JSONObject edge = new JSONObject();
  64. edge.put( "source", e.getSources().get( 0 ).getName() );
  65. edge.put( "target", e.getTargets().get( 0 ).getName() );
  66. return edge;
  67. }
  68. }