1 package jimm.datavision; 2 import jimm.util.I18N; 3 import java.io.*; 4 import javax.xml.parsers.SAXParser ; 5 import javax.xml.parsers.SAXParserFactory ; 6 import org.xml.sax.*; 7 import org.xml.sax.helpers.DefaultHandler ; 8 9 22 public class ParameterReader extends DefaultHandler { 23 24 28 protected static final double DEFAULT_DTD_VERSION = 0.1; 29 30 protected Report report; 31 protected Parameter parameter; 32 protected String textData; 33 protected File inFile; 34 protected InputSource inInputSource; 35 36 42 public ParameterReader(Report report, File f) { 43 this.report = report; 44 inFile = f; 45 } 46 47 54 public ParameterReader(Report report, InputSource in) { 55 this.report = report; 56 inInputSource = in; 57 } 58 59 65 public String getInputName() { 66 if (inFile != null) 67 return inFile.getPath(); 68 if (inInputSource != null) 69 return "org.xml.sax.InputSource"; 70 return "?"; 71 } 72 73 77 public void read() throws Exception { 78 SAXParser parser = SAXParserFactory.newInstance().newSAXParser(); 79 if (inFile != null) 80 parser.parse(inFile, this); 81 else if (inInputSource != null) 82 parser.parse(inInputSource, this); 83 } 84 85 public void startElement(final String namespaceURI, final String localName, 86 final String qName, final Attributes attributes) 87 throws SAXException 88 { 89 String tagName = localName; 90 if (tagName == null || tagName.length() == 0) 91 tagName = qName; 92 93 if (textData == null || textData.length() > 0) 95 textData = new String (); 96 97 if ("parameter".equals(tagName)) { 98 String id = attributes.getValue("id"); 99 parameter = report.findParameter(id); 100 if (parameter == null) 101 ErrorHandler.error(I18N.get("ParameterReader.unknown_id") + ' ' 102 + id + ' ' 103 + I18N.get("ParameterReader.in_xml")); 104 } 105 } 106 107 public void endElement(final String namespaceURI, final String localName, 108 final String qName) 109 throws SAXException 110 { 111 String tagName = localName; 112 if (tagName == null || tagName.length() == 0) 113 tagName = qName; 114 115 if ("value".equals(tagName) && parameter != null) 116 parameter.addValue(textData); 117 else if ("parameter".equals(tagName)) 118 parameter = null; 119 } 120 121 125 public void characters(char ch[], int start, int length) { 126 textData += new String (ch, start, length); 127 } 128 129 } 130 | Popular Tags |