KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > XMLToGraph


1 // $Id: XMLToGraph.java,v 1.3 2005/06/10 13:06:45 mike Exp $
2

3 import org.faceless.graph2.*;
4 import org.xml.sax.*;
5 import java.io.*;
6 import java.awt.*;
7 import java.net.URL JavaDoc;
8
9 /**
10  * This simple example takes a list of filenames or URLs containing XML
11  * as arguments, and converts each one in turn to a PNG image containing
12  * the equivalent graph.
13  *
14  * Example Usage:
15  *
16  * java XMLToGraph xml/*.xml
17  * java XMLToGraph http://big.faceless.org/products/graph/text.xml
18  * java XMLToGraph --svg test.xml
19  *
20  */

21 public class XMLToGraph
22 {
23     private static String JavaDoc format="png";
24
25     public static void main(String JavaDoc[] args)
26     throws Exception JavaDoc
27     {
28         if (args.length==0) {
29             System.out.println("Usage: java XMLToGraph [ --svg | --png | <filename> ] ...\n");
30             System.exit(0);
31         }
32     for (int i=0;i<args.length;i++) {
33         if (args[i].equals("--svg")) {
34             format="svg";
35         } else if (args[i].equals("--png")) {
36             format="png";
37         } else {
38         URL JavaDoc url = getInput(args[i]);
39         InputSource input = new InputSource(url.openStream());
40         input.setSystemId(url.toString());
41         String JavaDoc outfile = getOutput(url);
42
43         System.out.println("--------------------------------\nParsing \""+url+"\"... ");
44         try {
45             XMLGraph xml = new XMLGraph();
46             xml.parse(input);
47             Graph graph = xml.getGraph();
48
49             OutputStream out = new FileOutputStream(outfile);
50             if (format=="svg") {
51             SVGOutput image = new SVGOutput(xml.getWidth(), xml.getHeight());
52             graph.draw(image);
53             image.writeSVG(new OutputStreamWriter(out), true);
54             } else if (format=="png") {
55             ImageOutput image = new ImageOutput(xml.getWidth(), xml.getHeight());
56             graph.draw(image);
57             image.writePNG(out, 0);
58             }
59             out.close();
60             System.out.println("Created \""+outfile+"\"");
61         } catch (Exception JavaDoc e) {
62             e.printStackTrace();
63         }
64         }
65     }
66     }
67
68     // Given a URL which may be relative to the current working directory,
69
// return a fully qualified URL.
70
//
71
private static final URL JavaDoc getInput(String JavaDoc arg)
72         throws IOException
73     {
74     URL JavaDoc url = new URL JavaDoc("file:"+System.getProperty("user.dir")+System.getProperty("file.separator"));
75     url = new URL JavaDoc(url, arg);
76     return url;
77     }
78
79     // Given a URL, return a filename to write the graph for that URL to.
80
//
81
private static final String JavaDoc getOutput(URL JavaDoc url)
82     {
83     String JavaDoc file;
84     if (url.getProtocol().equals("file")) {
85         file = url.getFile();
86         if (file.endsWith(".xml")) file = file.substring(0,file.length()-4);
87         file += "."+format;
88     } else {
89         file = "XMLGraph."+format;
90     }
91     return file;
92     }
93 }
94
Popular Tags