f1f8537177befd7c51ad867a89a03ee993e938b4
[cfb.git] / prod / net / jaekl / cfb / xml / BugInstance.java
1 package net.jaekl.cfb.xml;
2
3 import java.util.ArrayList;
4
5 import org.xml.sax.Attributes;
6
7 import net.jaekl.qd.xml.ParseResult;
8 import net.jaekl.qd.xml.XmlParseException;
9
10 public class BugInstance extends ParseResult {
11
12         static final String TAG = "BugInstance";
13         static final String[] INTERNAL = {  };
14         static final Object[][] EXTERNAL = { { BugClass.TAG, BugClass.class},
15                                                  { BugMethod.TAG, BugMethod.class},
16                                                  { LocalVariable.TAG, LocalVariable.class},
17                                                  { SourceLine.TAG, SourceLine.class} };
18
19         ArrayList<BugClass> m_classes;
20         ArrayList<BugMethod> m_methods;
21         ArrayList<LocalVariable> m_locals;
22         ArrayList<SourceLine> m_lines;
23         
24         public BugInstance() {
25                 super(TAG, INTERNAL, EXTERNAL);
26                 
27                 m_classes = new ArrayList<BugClass>();
28                 m_methods = new ArrayList<BugMethod>();
29                 m_locals = new ArrayList<LocalVariable>();
30                 m_lines = new ArrayList<SourceLine>();
31         }
32         
33         @Override
34         public void endContents(String uri, String localName, String qName, String chars, Attributes attr) 
35                 throws XmlParseException 
36         {
37         }
38
39         @Override
40         public void endExternal(String uri, String localName, String qName)
41                 throws XmlParseException 
42         {
43                 if (BugClass.TAG.equals(localName)) {
44                         ParseResult[] collected = collectParsedChildren(BugClass.class);
45                         for (ParseResult pr : collected) {
46                                 assert(pr instanceof BugClass);
47                                 m_classes.add((BugClass) pr);
48                         }
49                 }
50                 else if (BugMethod.TAG.equals(localName)) {
51                         ParseResult[] collected = collectParsedChildren(BugMethod.class);
52                         for (ParseResult pr : collected) {
53                                 assert(pr instanceof BugMethod);
54                                 m_methods.add((BugMethod)pr);
55                         }                       
56                 }
57                 else if (LocalVariable.TAG.equals(localName)) {
58                         ParseResult[] collected = collectParsedChildren(LocalVariable.class);
59                         for (ParseResult pr : collected) {
60                                 assert(pr instanceof LocalVariable);
61                                 m_locals.add((LocalVariable)pr);
62                         }                       
63                 }
64                 else if (SourceLine.TAG.equals(localName)) {
65                         ParseResult[] collected = collectParsedChildren(SourceLine.class);
66                         for (ParseResult pr : collected) {
67                                 assert(pr instanceof SourceLine);
68                                 m_lines.add((SourceLine)pr);
69                         }
70                 }
71         }
72
73 }