package com.imsl.demo.jsp; import com.imsl.chart.*; import com.imsl.chart.xml.ChartXML; import org.xml.sax.InputSource; import java.io.*; import org.xml.sax.SAXException; import javax.xml.parsers.ParserConfigurationException; import javax.servlet.http.*; public class XmlBean extends JspBean { static private java.util.Hashtable hashSource = new java.util.Hashtable(); private JspBean bean; private String xml = ""; public XmlBean() { bean = new JspBean(); bean.setSize(400,400); bean.setCreateImageMap(true); } public void setXML(String xml) { this.xml = xml.trim(); } /** * Set XML from a data file loaded as a resource. * @param src is the name of the data set to be loaded. * The data must be a resource in the base package * with name src+".xml". */ public void setSource(String src) { if (xml != null && xml.length() > 0) return; String sample = (String)hashSource.get(src); if (sample != null) { xml = sample; return; } try { InputStream is = getClass().getResourceAsStream(src+".xml"); if (is == null) return; StringBuffer sb = new StringBuffer(1000); char buf[] = new char[512]; Reader reader = new InputStreamReader(is); while (true) { int n = reader.read(buf); if (n < 0) break; sb.append(buf, 0, n); } is.close(); xml = sb.toString(); hashSource.put(src, xml); } catch (IOException e) { e.printStackTrace(); } } public void createChart(HttpServletRequest request) throws SAXException, IOException, ParserConfigurationException{ if (xml.length() == 0) return; InputSource is = new InputSource(new java.io.StringReader(this.xml)); ChartXML chartXML = new ChartXML(is, false); bean.registerChart(chartXML.getChart(), request); } public String getXML() { return xml; } public String getImageTag() { return bean.getImageTag(); } public String getImageMap() { return bean.getImageMap(); } }