lib/browser/GraphBrowser/Console.java
author blanchet
Wed, 04 Aug 2010 23:27:27 +0200
changeset 38195 a8cef06e0480
parent 33686 8e33ca8832b1
child 50473 ca4088bf8365
permissions -rw-r--r--
Cycle breaking in the bounds takes care of singly recursive datatypes, so we don't need to do it again; the effect of removing the constraint varies on problem to problem, but it tends to be overwhelmingly negative in conjuction with the new datatype sym breaking stuff at high cardinalities
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
13968
689868b99bde eliminated dependencies on AWT for batch mode
kleing
parents:
diff changeset
     1
/***************************************************************************
689868b99bde eliminated dependencies on AWT for batch mode
kleing
parents:
diff changeset
     2
  Title:      GraphBrowser/Console.java
13970
4aef7117817b cleanup, comments
kleing
parents: 13968
diff changeset
     3
  Author:     Gerwin Klein, TU Muenchen
13968
689868b99bde eliminated dependencies on AWT for batch mode
kleing
parents:
diff changeset
     4
689868b99bde eliminated dependencies on AWT for batch mode
kleing
parents:
diff changeset
     5
  This is the graph browser's main class when run as a console application.
13972
fac2aa7618ed fixed uncollapsed dirs (should be collapsed by default)
kleing
parents: 13970
diff changeset
     6
  It duplicates some logic from GraphBrowser and GraphView.
fac2aa7618ed fixed uncollapsed dirs (should be collapsed by default)
kleing
parents: 13970
diff changeset
     7
  It does so to remove dependency on AWT.
13968
689868b99bde eliminated dependencies on AWT for batch mode
kleing
parents:
diff changeset
     8
689868b99bde eliminated dependencies on AWT for batch mode
kleing
parents:
diff changeset
     9
***************************************************************************/
689868b99bde eliminated dependencies on AWT for batch mode
kleing
parents:
diff changeset
    10
689868b99bde eliminated dependencies on AWT for batch mode
kleing
parents:
diff changeset
    11
package GraphBrowser;
689868b99bde eliminated dependencies on AWT for batch mode
kleing
parents:
diff changeset
    12
689868b99bde eliminated dependencies on AWT for batch mode
kleing
parents:
diff changeset
    13
import java.io.*;
689868b99bde eliminated dependencies on AWT for batch mode
kleing
parents:
diff changeset
    14
import java.util.*;
689868b99bde eliminated dependencies on AWT for batch mode
kleing
parents:
diff changeset
    15
689868b99bde eliminated dependencies on AWT for batch mode
kleing
parents:
diff changeset
    16
public class Console {
689868b99bde eliminated dependencies on AWT for batch mode
kleing
parents:
diff changeset
    17
	Graph g;
13972
fac2aa7618ed fixed uncollapsed dirs (should be collapsed by default)
kleing
parents: 13970
diff changeset
    18
	String gfname;  
13968
689868b99bde eliminated dependencies on AWT for batch mode
kleing
parents:
diff changeset
    19
689868b99bde eliminated dependencies on AWT for batch mode
kleing
parents:
diff changeset
    20
  public Console(String name) {
689868b99bde eliminated dependencies on AWT for batch mode
kleing
parents:
diff changeset
    21
    gfname = name;
689868b99bde eliminated dependencies on AWT for batch mode
kleing
parents:
diff changeset
    22
  }
689868b99bde eliminated dependencies on AWT for batch mode
kleing
parents:
diff changeset
    23
13970
4aef7117817b cleanup, comments
kleing
parents: 13968
diff changeset
    24
	public void PS(String fname, boolean printable) throws IOException {
13968
689868b99bde eliminated dependencies on AWT for batch mode
kleing
parents:
diff changeset
    25
    g.layout(null);
689868b99bde eliminated dependencies on AWT for batch mode
kleing
parents:
diff changeset
    26
		g.PS(fname,printable);
689868b99bde eliminated dependencies on AWT for batch mode
kleing
parents:
diff changeset
    27
	}
689868b99bde eliminated dependencies on AWT for batch mode
kleing
parents:
diff changeset
    28
13972
fac2aa7618ed fixed uncollapsed dirs (should be collapsed by default)
kleing
parents: 13970
diff changeset
    29
fac2aa7618ed fixed uncollapsed dirs (should be collapsed by default)
kleing
parents: 13970
diff changeset
    30
	public void collapseNodes(Vector collapsedDir) { 
fac2aa7618ed fixed uncollapsed dirs (should be collapsed by default)
kleing
parents: 13970
diff changeset
    31
		Enumeration e1=collapsedDir.elements();
fac2aa7618ed fixed uncollapsed dirs (should be collapsed by default)
kleing
parents: 13970
diff changeset
    32
		Graph gra=(Graph)(g.clone());
fac2aa7618ed fixed uncollapsed dirs (should be collapsed by default)
kleing
parents: 13970
diff changeset
    33
fac2aa7618ed fixed uncollapsed dirs (should be collapsed by default)
kleing
parents: 13970
diff changeset
    34
		while (e1.hasMoreElements()) {
fac2aa7618ed fixed uncollapsed dirs (should be collapsed by default)
kleing
parents: 13970
diff changeset
    35
			Directory d=(Directory)(e1.nextElement());
fac2aa7618ed fixed uncollapsed dirs (should be collapsed by default)
kleing
parents: 13970
diff changeset
    36
			Vector v=gra.decode(d.getCollapsed());
fac2aa7618ed fixed uncollapsed dirs (should be collapsed by default)
kleing
parents: 13970
diff changeset
    37
			if (!v.isEmpty())
fac2aa7618ed fixed uncollapsed dirs (should be collapsed by default)
kleing
parents: 13970
diff changeset
    38
				gra.collapse(v,"["+d.getName()+"]",d.getCollapsed());
fac2aa7618ed fixed uncollapsed dirs (should be collapsed by default)
kleing
parents: 13970
diff changeset
    39
		}
fac2aa7618ed fixed uncollapsed dirs (should be collapsed by default)
kleing
parents: 13970
diff changeset
    40
    
fac2aa7618ed fixed uncollapsed dirs (should be collapsed by default)
kleing
parents: 13970
diff changeset
    41
    g = gra;
fac2aa7618ed fixed uncollapsed dirs (should be collapsed by default)
kleing
parents: 13970
diff changeset
    42
	}
fac2aa7618ed fixed uncollapsed dirs (should be collapsed by default)
kleing
parents: 13970
diff changeset
    43
fac2aa7618ed fixed uncollapsed dirs (should be collapsed by default)
kleing
parents: 13970
diff changeset
    44
13968
689868b99bde eliminated dependencies on AWT for batch mode
kleing
parents:
diff changeset
    45
	public void initBrowser(InputStream is) {
689868b99bde eliminated dependencies on AWT for batch mode
kleing
parents:
diff changeset
    46
		try {
689868b99bde eliminated dependencies on AWT for batch mode
kleing
parents:
diff changeset
    47
			TreeNode tn = new TreeNode("Root", "", -1, true);
689868b99bde eliminated dependencies on AWT for batch mode
kleing
parents:
diff changeset
    48
      g = new Graph(is, tn);
13972
fac2aa7618ed fixed uncollapsed dirs (should be collapsed by default)
kleing
parents: 13970
diff changeset
    49
			Vector v = new Vector(10,10);
fac2aa7618ed fixed uncollapsed dirs (should be collapsed by default)
kleing
parents: 13970
diff changeset
    50
			tn.collapsedDirectories(v);      
fac2aa7618ed fixed uncollapsed dirs (should be collapsed by default)
kleing
parents: 13970
diff changeset
    51
      collapseNodes(v);
13968
689868b99bde eliminated dependencies on AWT for batch mode
kleing
parents:
diff changeset
    52
		} catch (IOException exn) {
689868b99bde eliminated dependencies on AWT for batch mode
kleing
parents:
diff changeset
    53
			System.err.println("\nI/O error while reading graph file.");
689868b99bde eliminated dependencies on AWT for batch mode
kleing
parents:
diff changeset
    54
		} catch (ParseError exn) {
689868b99bde eliminated dependencies on AWT for batch mode
kleing
parents:
diff changeset
    55
			System.err.println("\nParse error in graph file:");
689868b99bde eliminated dependencies on AWT for batch mode
kleing
parents:
diff changeset
    56
			System.err.println(exn.getMessage());
13970
4aef7117817b cleanup, comments
kleing
parents: 13968
diff changeset
    57
			System.err.println("\nSyntax:\n<vertexname> <vertexID> <dirname> [ + ] <path> "+
4aef7117817b cleanup, comments
kleing
parents: 13968
diff changeset
    58
                         "[ < | > ] [ <vertexID> [ ... [ <vertexID> ] ... ] ] ;");
13968
689868b99bde eliminated dependencies on AWT for batch mode
kleing
parents:
diff changeset
    59
		}
689868b99bde eliminated dependencies on AWT for batch mode
kleing
parents:
diff changeset
    60
	}
689868b99bde eliminated dependencies on AWT for batch mode
kleing
parents:
diff changeset
    61
689868b99bde eliminated dependencies on AWT for batch mode
kleing
parents:
diff changeset
    62
	public static void main(String[] args) {
689868b99bde eliminated dependencies on AWT for batch mode
kleing
parents:
diff changeset
    63
		try {
689868b99bde eliminated dependencies on AWT for batch mode
kleing
parents:
diff changeset
    64
      if (args.length <= 1) {
13970
4aef7117817b cleanup, comments
kleing
parents: 13968
diff changeset
    65
        System.err.println("Graph and output file expected.");
13968
689868b99bde eliminated dependencies on AWT for batch mode
kleing
parents:
diff changeset
    66
        return;
689868b99bde eliminated dependencies on AWT for batch mode
kleing
parents:
diff changeset
    67
      }
13970
4aef7117817b cleanup, comments
kleing
parents: 13968
diff changeset
    68
13968
689868b99bde eliminated dependencies on AWT for batch mode
kleing
parents:
diff changeset
    69
			Console console=new Console(args[0]);
689868b99bde eliminated dependencies on AWT for batch mode
kleing
parents:
diff changeset
    70
      InputStream is=new FileInputStream(args[0]);
689868b99bde eliminated dependencies on AWT for batch mode
kleing
parents:
diff changeset
    71
      console.initBrowser(is);
689868b99bde eliminated dependencies on AWT for batch mode
kleing
parents:
diff changeset
    72
      is.close();      
689868b99bde eliminated dependencies on AWT for batch mode
kleing
parents:
diff changeset
    73
    
689868b99bde eliminated dependencies on AWT for batch mode
kleing
parents:
diff changeset
    74
      try {
689868b99bde eliminated dependencies on AWT for batch mode
kleing
parents:
diff changeset
    75
        if (args[1].endsWith(".ps"))
689868b99bde eliminated dependencies on AWT for batch mode
kleing
parents:
diff changeset
    76
          console.PS(args[1], true);
689868b99bde eliminated dependencies on AWT for batch mode
kleing
parents:
diff changeset
    77
        else if (args[1].endsWith(".eps"))
689868b99bde eliminated dependencies on AWT for batch mode
kleing
parents:
diff changeset
    78
          console.PS(args[1], false);
689868b99bde eliminated dependencies on AWT for batch mode
kleing
parents:
diff changeset
    79
        else
689868b99bde eliminated dependencies on AWT for batch mode
kleing
parents:
diff changeset
    80
          System.err.println("Unknown file type: " + args[1]);
689868b99bde eliminated dependencies on AWT for batch mode
kleing
parents:
diff changeset
    81
      } catch (IOException exn) {
689868b99bde eliminated dependencies on AWT for batch mode
kleing
parents:
diff changeset
    82
        System.err.println("Unable to write file " + args[1]);
689868b99bde eliminated dependencies on AWT for batch mode
kleing
parents:
diff changeset
    83
      }
689868b99bde eliminated dependencies on AWT for batch mode
kleing
parents:
diff changeset
    84
		} catch (IOException exn) {
689868b99bde eliminated dependencies on AWT for batch mode
kleing
parents:
diff changeset
    85
			System.err.println("Can't open graph file "+args[0]);
689868b99bde eliminated dependencies on AWT for batch mode
kleing
parents:
diff changeset
    86
		}
689868b99bde eliminated dependencies on AWT for batch mode
kleing
parents:
diff changeset
    87
	}
689868b99bde eliminated dependencies on AWT for batch mode
kleing
parents:
diff changeset
    88
}