Writer.java 2.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879
  1. package graph.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 graph.LayeredGraphEdge;
  10. import graph.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.toString() );
  59. if( graph.isDummyNode() )
  60. node.put( "dummy", "true" );
  61. return node;
  62. }
  63. private JSONObject parseEdge( LayeredGraphEdge e ) throws JSONException
  64. {
  65. JSONObject edge = new JSONObject();
  66. edge.put( "source", e.getSources().get( 0 ).toString() );
  67. edge.put( "target", e.getTargets().get( 0 ).toString() );
  68. return edge;
  69. }
  70. }