X-Git-Url: http://jaekl.net/gitweb/?a=blobdiff_plain;f=prod%2Fnet%2Fjaekl%2Fcfb%2Fxml%2FBugClass.java;h=99a561f9bb0a24e66ddff1ba48826f2deca938bf;hb=7ac6be132ecd6872971a1de56f033b4434d3173a;hp=34e02a242de215902d60fd284af1f4964e20caa6;hpb=08a530ef53cc4756f5e632b69c78830872ebd9f4;p=cfb.git diff --git a/prod/net/jaekl/cfb/xml/BugClass.java b/prod/net/jaekl/cfb/xml/BugClass.java index 34e02a2..99a561f 100644 --- a/prod/net/jaekl/cfb/xml/BugClass.java +++ b/prod/net/jaekl/cfb/xml/BugClass.java @@ -1,32 +1,70 @@ package net.jaekl.cfb.xml; +import java.io.PrintWriter; +import java.util.ArrayList; + import org.xml.sax.Attributes; +import net.jaekl.qd.xml.MissingAttributeException; import net.jaekl.qd.xml.ParseResult; import net.jaekl.qd.xml.XmlParseException; public class BugClass extends ParseResult { - static final String ROOT_TAG = "Class"; + static final String TAG = "Class"; static final String[] INTERNAL = { }; - static final Object[][] EXTERNAL = { { SourceLine.ROOT_TAG, SourceLine.class} }; + static final Object[][] EXTERNAL = { { SourceLine.TAG, SourceLine.class} }; + static final String CLASS_NAME = "classname"; + + String m_className; + ArrayList m_lines; + public BugClass() { - super(ROOT_TAG, INTERNAL, EXTERNAL); + super(TAG, INTERNAL, EXTERNAL); + m_className = ""; + m_lines = new ArrayList(); } - @Override - public void endContents(String uri, String localName, String qName, - String chars, Attributes attr) throws XmlParseException { - // TODO Auto-generated method stub + public String getClassName() { return m_className; } + public SourceLine[] getSourceLines() { return m_lines.toArray(new SourceLine[m_lines.size()]); } + @Override + public void handleMainAttributes(Attributes attr) throws MissingAttributeException + { + m_className = getRequiredAttr(TAG, attr, CLASS_NAME); } - + @Override - public void endExternal(String uri, String localName, String qName) - throws XmlParseException { - // TODO Auto-generated method stub - + public void endContents(String uri, String localName, String qName, String chars) + throws XmlParseException + { } + @Override + public void endExternal(String uri, String localName, String qName) + throws XmlParseException + { + if (SourceLine.TAG.equals(localName)) { + ParseResult[] collected = collectParsedChildren(SourceLine.class); + for (ParseResult pr : collected) { + assert(pr instanceof SourceLine); + m_lines.add((SourceLine)pr); + } + } + } + + @Override + public void dump(PrintWriter pw, int indent) + { + super.dump(pw, indent); + String tab = String.format("%" + (indent + 2) + "s", ""); + + pw.println(tab + CLASS_NAME + "=" + m_className); + if (null != m_lines) { + for (SourceLine sl : m_lines) { + sl.dump(pw, indent + 2); + } + } + } }