001// EventDemo.java: demonstration application showing Æfred's event stream.
002// NO WARRANTY! See README, and copyright below.
003// Modified 11/8/98 to add package statement.
004package com.microstar.xml.demo;
005
006/**
007 * Demonstration application showing Æfred's event stream.
008 * <p>Usage: <code>java EventDemo &lt;url&gt;</code>
009 * <p>Or, use it as an applet, supplying the URL as the <code>url</code>
010 * parameter.
011 * @author Copyright (c) 1997, 1998 by Microstar Software Ltd.;
012 * @author written by David Megginson &lt;dmeggins@microstar.com&gt;
013 * @version 1.1
014 * @since Ptolemy II 0.2
015 * @see com.microstar.xml.XmlParser
016 * @see com.microstar.xml.XmlHandler
017 * @see XmlApp
018 */
019public class EventDemo extends XmlApp {
020    /**
021     * Entry point for an application.
022     * @param args The arguments.  The first argument should be the uri
023     * @exception Exception If the parse fails
024     */
025    public static void main(String[] args) throws Exception {
026        EventDemo demo = new EventDemo();
027
028        if (args.length != 1) {
029            System.err.println("java EventDemo <uri>");
030            System.exit(1);
031        } else {
032            demo.doParse(args[0]);
033        }
034    }
035
036    /**
037     * Resolve an entity and print an event.
038     * @see com.microstar.xml.XmlHandler#resolveEntity
039     */
040    @Override
041    public Object resolveEntity(String publicId, String systemId) {
042        displayText(
043                "Resolving entity: pubid=" + publicId + ", sysid=" + systemId);
044        return null;
045    }
046
047    @Override
048    public void startExternalEntity(String systemId) {
049        displayText("Starting external entity:  " + systemId);
050    }
051
052    @Override
053    public void endExternalEntity(String systemId) {
054        displayText("Ending external entity:  " + systemId);
055    }
056
057    /**
058     * Handle the start of the document by printing an event.
059     * @see com.microstar.xml.XmlHandler#startDocument
060     */
061    @Override
062    public void startDocument() {
063        displayText("Start document");
064    }
065
066    /**
067     * Handle the end of the document by printing an event.
068     * @see com.microstar.xml.XmlHandler#endDocument
069     */
070    @Override
071    public void endDocument() {
072        displayText("End document");
073    }
074
075    /**
076     * Handle a DOCTYPE declaration by printing an event.
077     * @see com.microstar.xml.XmlHandler#doctypeDecl
078     */
079    @Override
080    public void doctypeDecl(String name, String pubid, String sysid) {
081        displayText("Doctype declaration:  " + name + ", pubid=" + pubid
082                + ", sysid=" + sysid);
083    }
084
085    /**
086     * Handle an attribute value assignment by printing an event.
087     * @see com.microstar.xml.XmlHandler#attribute
088     */
089    @Override
090    public void attribute(String name, String value, boolean isSpecified) {
091        String s;
092
093        if (isSpecified) {
094            s = " (specified)";
095        } else {
096            s = " (defaulted)";
097        }
098
099        displayText("Attribute:  name=" + name + ", value=" + value + s);
100    }
101
102    /**
103     * Handle the start of an element by printing an event.
104     * @see com.microstar.xml.XmlHandler#startElement
105     */
106    @Override
107    public void startElement(String name) {
108        displayText("Start element:  name=" + name);
109    }
110
111    /**
112     * Handle the end of an element by printing an event.
113     * @see com.microstar.xml.XmlHandler#endElement
114     */
115    @Override
116    public void endElement(String name) {
117        displayText("End element:  " + name);
118    }
119
120    /**
121     * Handle character data by printing an event.
122     * @see com.microstar.xml.XmlHandler#charData
123     */
124    @Override
125    public void charData(char[] ch, int start, int length) {
126        displayText("Character data:  \"" + escape(ch, length) + '"');
127    }
128
129    /**
130     * Handle ignorable whitespace by printing an event.
131     * @see com.microstar.xml.XmlHandler#ignorableWhitespace
132     */
133    @Override
134    public void ignorableWhitespace(char[] ch, int start, int length) {
135        displayText("Ignorable whitespace:  \"" + escape(ch, length) + '"');
136    }
137
138    /**
139     * Handle a processing instruction by printing an event.
140     * @see com.microstar.xml.XmlHandler#processingInstruction
141     */
142    @Override
143    public void processingInstruction(String target, String data) {
144        displayText("Processing Instruction:  " + target + ' '
145                + escape(data.toCharArray(), data.length()));
146    }
147}
148
149// end of EventDemo.java