001: /* ===========================================================
002: * JFreeChart : a free chart library for the Java(tm) platform
003: * ===========================================================
004: *
005: * (C) Copyright 2000-2005, by Object Refinery Limited and Contributors.
006: *
007: * Project Info: http://www.jfree.org/jfreechart/index.html
008: *
009: * This library is free software; you can redistribute it and/or modify it
010: * under the terms of the GNU Lesser General Public License as published by
011: * the Free Software Foundation; either version 2.1 of the License, or
012: * (at your option) any later version.
013: *
014: * This library is distributed in the hope that it will be useful, but
015: * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
016: * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
017: * License for more details.
018: *
019: * You should have received a copy of the GNU Lesser General Public
020: * License along with this library; if not, write to the Free Software
021: * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,
022: * USA.
023: *
024: * [Java is a trademark or registered trademark of Sun Microsystems, Inc.
025: * in the United States and other countries.]
026: *
027: * ----------------------
028: * PieDatasetHandler.java
029: * ----------------------
030: * (C) Copyright 2003-2005, by Object Refinery Limited and Contributors.
031: *
032: * Original Author: David Gilbert (for Object Refinery Limited);
033: * Contributor(s): -;
034: *
035: * $Id: PieDatasetHandler.java,v 1.3.2.1 2005/10/25 21:36:10 mungady Exp $
036: *
037: * Changes (from 21-Jun-2001)
038: * --------------------------
039: * 23-Jan-2003 : Version 1 (DG);
040: *
041: */
042:
043: package org.jfree.data.xml;
044:
045: import org.jfree.data.general.DefaultPieDataset;
046: import org.jfree.data.general.PieDataset;
047: import org.xml.sax.Attributes;
048: import org.xml.sax.SAXException;
049: import org.xml.sax.helpers.DefaultHandler;
050:
051: /**
052: * A SAX handler for reading a {@link PieDataset} from an XML file.
053: */
054: public class PieDatasetHandler extends RootHandler implements
055: DatasetTags {
056:
057: /** The pie dataset under construction. */
058: private DefaultPieDataset dataset;
059:
060: /**
061: * Default constructor.
062: */
063: public PieDatasetHandler() {
064: this .dataset = null;
065: }
066:
067: /**
068: * Returns the dataset.
069: *
070: * @return The dataset.
071: */
072: public PieDataset getDataset() {
073: return this .dataset;
074: }
075:
076: /**
077: * Adds an item to the dataset under construction.
078: *
079: * @param key the key.
080: * @param value the value.
081: */
082: public void addItem(Comparable key, Number value) {
083: this .dataset.setValue(key, value);
084: }
085:
086: /**
087: * Starts an element.
088: *
089: * @param namespaceURI the namespace.
090: * @param localName the element name.
091: * @param qName the element name.
092: * @param atts the element attributes.
093: *
094: * @throws SAXException for errors.
095: */
096: public void startElement(String namespaceURI, String localName,
097: String qName, Attributes atts) throws SAXException {
098:
099: DefaultHandler current = getCurrentHandler();
100: if (current != this ) {
101: current.startElement(namespaceURI, localName, qName, atts);
102: } else if (qName.equals(PIEDATASET_TAG)) {
103: this .dataset = new DefaultPieDataset();
104: } else if (qName.equals(ITEM_TAG)) {
105: ItemHandler subhandler = new ItemHandler(this , this );
106: getSubHandlers().push(subhandler);
107: subhandler.startElement(namespaceURI, localName, qName,
108: atts);
109: }
110:
111: }
112:
113: /**
114: * The end of an element.
115: *
116: * @param namespaceURI the namespace.
117: * @param localName the element name.
118: * @param qName the element name.
119: *
120: * @throws SAXException for errors.
121: */
122: public void endElement(String namespaceURI, String localName,
123: String qName) throws SAXException {
124:
125: DefaultHandler current = getCurrentHandler();
126: if (current != this) {
127: current.endElement(namespaceURI, localName, qName);
128: }
129:
130: }
131:
132: }
|