1 package com.quadcap.services; 2 3 40 41 import java.io.Reader ; 42 import java.io.IOException ; 43 44 import java.util.Hashtable ; 45 46 import org.xml.sax.AttributeList ; 47 import org.xml.sax.DocumentHandler ; 48 import org.xml.sax.ErrorHandler ; 49 import org.xml.sax.InputSource ; 50 import org.xml.sax.Parser ; 51 import org.xml.sax.Locator ; 52 import org.xml.sax.SAXException ; 53 import org.xml.sax.SAXParseException ; 54 55 import org.xml.sax.helpers.ParserFactory ; 56 57 import com.quadcap.text.sax.Handler; 58 59 64 95 public class DataSourcesParser extends Handler { 96 DataSources dss; 97 DataSource ds; 98 int state = INIT; 99 100 final static int INIT = 0; 101 final static int DATA_SOURCE = 1; 102 103 106 public DataSourcesParser() throws Exception { 107 super(); 108 } 109 110 117 public void parse(Reader dd, DataSources dss) 118 throws SAXException 119 { 120 this.dss = dss; 121 this.state = INIT; 122 super.parse(dd, dss); 123 } 124 125 126 132 public void endElement(String name) throws SAXException { 133 try { 134 switch (state) { 135 case DATA_SOURCE: 136 if (name.equals("data-source")) { 137 dss.addDataSource(ds); 138 env.clear(); 139 state = INIT; 140 } else if (name.equals("jndi-name")) { 141 ds.setName(consumeData()); 142 } else if (name.equals("driver-class")) { 143 ds.setDriverClass(consumeData()); 144 } else if (name.equals("jdbc-url")) { 145 ds.setUrl(consumeData()); 146 } else if (name.equals("connection-param")) { 147 ds.addConnectionProperty(consume("param-name"), 148 consume("param-value")); 149 } else { 150 env.put(name, consumeData()); 151 } 152 break; 153 case INIT: 154 break; 155 } 156 } catch (SAXException e) { 157 throw e; 158 } catch (Exception e) { 159 throw new SAXException (e); 160 } 161 } 162 163 171 public void startElement(String name, AttributeList attrs) 172 throws SAXException 173 { 174 data.setLength(0); 175 if (name.equals("data-source")) { 176 ds = new DataSource(); 177 state = DATA_SOURCE; 178 } 179 } 180 181 } 182 183 | Popular Tags |