Advertisement
gewur33

Graph.java

Dec 1st, 2014
609
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 2.85 KB | None | 0 0
  1. package graphen;
  2.  
  3. import java.io.BufferedReader;
  4. import java.io.File;
  5. import java.io.FileNotFoundException;
  6. import java.io.FileReader;
  7. import java.io.IOException;
  8. import java.util.LinkedList;
  9.  
  10. public class Graph {
  11.  
  12.     public AdjacencyStructure graphStruct;
  13.  
  14.     public Graph createGraph(File f, String adjStruct) {
  15.  
  16.         FileReader fr;
  17.        
  18.         String s = null;
  19.         // Read file into String
  20.         try {
  21.             fr = new FileReader(f);
  22.             fr.read();
  23.             s = fr.toString();
  24.             fr.close();
  25.         } catch (FileNotFoundException e) {
  26.             return null;
  27.         } catch (IOException e) {
  28.             e.printStackTrace();
  29.         }
  30.         // return null for empty file
  31.         if (s == null) {
  32.             return null;
  33.         }
  34.        
  35.         s.toString();
  36.         // V={1,2,3}
  37.         // E={[1,2,10],[2,1,10],[2,3,30],[3,1,50]}
  38.         System.out.println(s);
  39.        
  40.        
  41.         //TODO WHY THE BUGSSSS??!!!
  42.         String[] edgesAndVertices = new String[3];
  43.         edgesAndVertices = s.split("\n");
  44.         edgesAndVertices[0].replace("V=", "");
  45.         System.out.println(edgesAndVertices[0]);
  46.         edgesAndVertices[1].replace("E=", "");
  47.         System.out.println(edgesAndVertices[1]);
  48.  
  49.  
  50.         LinkedList<Edge> edges = parseEdges(edgesAndVertices[0]);
  51.         LinkedList<Vertice> vertices = parseVertices(edgesAndVertices[1]);
  52.  
  53.         // fill in => AdjacencyMatrix
  54.  
  55.         AdjacencyMatrix matrix = new AdjacencyMatrix(vertices, edges);
  56.         AdjacencyList list = new AdjacencyList(edges, vertices);
  57.  
  58.         Graph resultGraph = new Graph();
  59.  
  60.         if (adjStruct == "matrix") {
  61.             resultGraph.setGraphStruct(matrix);
  62.             return resultGraph;
  63.         }
  64.         if (adjStruct == "list") {
  65.             resultGraph.setGraphStruct(list);
  66.         }
  67.  
  68.         return resultGraph;
  69.     }
  70.  
  71.     // parsing
  72.     public LinkedList<Edge> parseEdges(String eString) {
  73.         LinkedList<Edge> res = new LinkedList<Edge>();
  74.         boolean newEdge = false;
  75.  
  76.         eString.replace("{", "").replace("}", "");
  77.         char[] eChar = eString.toCharArray();
  78.  
  79.         for (int i = 0; i < eChar.length; i++) {
  80.  
  81.             if (eChar[i] == '[') {
  82.                 newEdge = true;
  83.                 i++;
  84.             }
  85.  
  86.             if (eChar[i] == ']') {
  87.                 newEdge = false;
  88.                 i++;
  89.             }
  90.  
  91.             if (newEdge) {
  92.                 Edge e = new Edge(Integer.parseInt(Character
  93.                         .toString(eChar[i + 1])), Integer.parseInt(Character
  94.                         .toString(eChar[i + 3])), Integer.parseInt(Character
  95.                         .toString(eChar[i + 5])));
  96.  
  97.                 res.add(e);
  98.                 newEdge = false;
  99.             }
  100.         }
  101.  
  102.         return res;
  103.     }
  104.  
  105.     // parsing..
  106.     public LinkedList<Vertice> parseVertices(String vString) {
  107.         LinkedList<Vertice> res = new LinkedList<Vertice>();
  108.  
  109.         vString.replace("{", "").replace("}", "");
  110.         String[] list = vString.split(",");
  111.  
  112.         for (String s : list) {
  113.             Vertice v = new Vertice(Integer.parseInt(s));
  114.             res.add(v);
  115.         }
  116.         return res;
  117.     }
  118.  
  119.     public AdjacencyStructure getGraphStruct() {
  120.         return graphStruct;
  121.     }
  122.  
  123.     public void setGraphStruct(AdjacencyStructure graphStruct) {
  124.         this.graphStruct = graphStruct;
  125.     }
  126.  
  127.     public void print() {
  128.         graphStruct.print();
  129.     }
  130.  
  131. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement