package graphtea.extensions.reports.boundcheck.forall; import graphtea.graph.graph.Edge; import graphtea.graph.graph.GraphModel; import graphtea.graph.graph.Vertex; import java.io.*; import java.util.Scanner; /** * Created by rostam on 30.09.15. * */ public class ShowG { public static FileWriter outG(String file) throws IOException { String cur = null; try { cur = new java.io.File(".").getCanonicalPath(); } catch (IOException e) { e.printStackTrace(); } if(System.getProperty("os.name").contains("Win")) { cur =cur + "\\graphs\\"; } else { cur = cur + "/graphs/"; } return new FileWriter(cur+file+".g6"); } public static Scanner inG(String file) throws IOException { String cur = null; try { cur = new java.io.File(".").getCanonicalPath(); } catch (IOException e) { e.printStackTrace(); } if(System.getProperty("os.name").contains("Win")) { cur =cur + "\\graphs\\"; } else { cur = cur + "/graphs/"; } return new Scanner(new File(cur+file+".g6")); } public static ProcessBuilder getShowGProcess(String file, int from, int to) { String cur = null; try { cur = new java.io.File(".").getCanonicalPath(); } catch (IOException e) { e.printStackTrace(); } ProcessBuilder process; String parameter1="-p"+from+":"+to; if(System.getProperty("os.name").contains("Win")) { cur =cur + "\\graphs\\"; String parameter2 = cur+file+".g6"; process = new ProcessBuilder(cur + "showg_win32.exe", parameter1,parameter2.trim()); } else { cur = cur + "/graphs/"; String parameter2 = cur+file+".g6"; process = new ProcessBuilder(cur + "showg.out", parameter1,parameter2.trim()); } return process; } public static ProcessBuilder getShowGProcess(String file) { String cur = null; try { cur = new java.io.File(".").getCanonicalPath(); } catch (IOException e) { e.printStackTrace(); } ProcessBuilder process; if(System.getProperty("os.name").contains("Win")) { cur =cur + "\\graphs\\"; process = new ProcessBuilder(cur + "showg_win32.exe", cur + file+".g6"); } else { cur = cur + "/graphs/"; process = new ProcessBuilder(cur + "showg.out", cur + file + ".g6"); } return process; } public static BufferedReader showG(String file, int from, int to) { try { ProcessBuilder process = getShowGProcess(file, from,to); Process p = process.start(); BufferedReader bri = new BufferedReader(new InputStreamReader(p.getInputStream())); return bri; } catch (IOException e) { e.printStackTrace(); } return null; } public static GraphModel parseGraph(Scanner sc) { GraphModel g = new GraphModel(); g.setDirected(false); //sc.nextLine(); String order = sc.nextLine(); order = order.substring(order.lastIndexOf("r") + 1, order.lastIndexOf(".")); order = order.trim(); int ord = Integer.parseInt(order); for (int i = 0; i < ord; i++) g.addVertex(new Vertex()); for (int i = 0; i < ord; i++) { String tmp = sc.nextLine(); int first = Integer.parseInt(tmp.substring(0,tmp.indexOf(":")-1).trim()); tmp = tmp.substring(tmp.indexOf(":") + 1); Scanner sc2 = new Scanner(tmp.trim()); while (sc2.hasNext()) { String num = sc2.next(); if (num.contains(";")) num = num.substring(0, num.indexOf(";")); int id = Integer.parseInt(num.trim()); if (!g.isEdge(g.getVertex(first), g.getVertex(id))) { g.addEdge(new Edge(g.getVertex(first), g.getVertex(id))); } } } return g; } }