package hu.jokeman.xparser.gui.viewer;
import hu.jokeman.xparser.document.nodes.XMLDocument;
import hu.jokeman.xparser.impl.document.DocumentBuilderImpl;
import hu.jokeman.xparser.parser.XMLProcessor;
import hu.jokeman.xparser.parser.ProcessorException;
import hu.jokeman.xparser.gui.viewer.visitors.NodeCounter;
import hu.jokeman.xparser.gui.viewer.visitors.SyntaxHighlighter;
import hu.jokeman.xparser.gui.viewer.visitors.TreePrinter;
import hu.jokeman.xparser.gui.viewer.visitors.WhiteSpaceNormalizer;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
public class Viewer {
public static void main (String [] args) {
if (args.length < 1) {
System.err.println ("Haszn�lat:");
System.err.println ("\tViewer filenev.xml");
System.exit (1);
}
FileInputStream fis = null;
FileOutputStream fos = null;
try {
fis = new FileInputStream (args [0]);
fos = new FileOutputStream (args [0] + ".html");
DocumentBuilderImpl builder = new DocumentBuilderImpl ();
builder.createDocument ();
// input file feldologz�sa
XMLProcessor processor = new XMLProcessor (builder);
processor.process (fis);
// dokumentumgy�k�r elk�r�se
XMLDocument doc = builder.getDocument ();
// white space takar�t�s
WhiteSpaceNormalizer wsn = new WhiteSpaceNormalizer ();
doc.accept (wsn);
// fa-alak� kiirat�s
System.out.println ("Feldolgozott adatok kiiratva:");
System.out.println ();
TreePrinter tp = new TreePrinter (System.out);
doc.accept (tp);
// csom�pontok sz�ml�l�sa
NodeCounter nc = new NodeCounter ();
doc.accept (nc);
System.out.print (nc.getResults ());
// syntax highlight
SyntaxHighlighter shl = new SyntaxHighlighter (fos);
doc.accept (shl);
System.out.println ("Az XML alapj�n k�sz�lt szintaxis-szinezett " +
"HTML-dokumentum megtal�lhat� a(z) " + args [0] + ".html file-ban.");
} catch (IOException iox) {
iox.printStackTrace (System.err);
} catch (ProcessorException px) {
System.err.println ("Hiba a file feldolgoz�sa sor�n: " +
args [0] + "(" + px.getLineNumber () + ", " +
px.getColumnNumber () + "):");
System.err.println (px.getMessage ());
} finally {
try {
fis.close ();
} catch (IOException iox) {
}
try {
fos.close ();
} catch (IOException iox) {
}
}
}
}