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     * DatasetReader.java
029     * ------------------
030     * (C) Copyright 2002-2005, by Object Refinery Limited.
031     *
032     * Original Author:  David Gilbert (for Object Refinery Limited);
033     * Contributor(s):   -;
034     *
035     * $Id: DatasetReader.java,v 1.4.2.1 2005/10/25 21:36:10 mungady Exp $
036     *
037     * Changes
038     * -------
039     * 20-Nov-2002 : Version 1 (DG);
040     *
041     */
042    
043    package org.jfree.data.xml;
044    
045    import java.io.File;
046    import java.io.FileInputStream;
047    import java.io.IOException;
048    import java.io.InputStream;
049    
050    import javax.xml.parsers.ParserConfigurationException;
051    import javax.xml.parsers.SAXParser;
052    import javax.xml.parsers.SAXParserFactory;
053    
054    import org.jfree.data.category.CategoryDataset;
055    import org.jfree.data.general.PieDataset;
056    import org.xml.sax.SAXException;
057    
058    /**
059     * A utility class for reading datasets from XML.
060     */
061    public class DatasetReader {
062    
063        /**
064         * Reads a {@link PieDataset} from an XML file.
065         *
066         * @param file  the file.
067         *
068         * @return A dataset.
069         *
070         * @throws IOException if there is a problem reading the file.
071         */
072        public static PieDataset readPieDatasetFromXML(File file) 
073            throws IOException {
074            InputStream in = new FileInputStream(file);
075            return readPieDatasetFromXML(in);
076        }
077    
078        /**
079         * Reads a {@link PieDataset} from a stream.
080         *
081         * @param in  the input stream.
082         *
083         * @return A dataset.
084         *
085         * @throws IOException if there is an I/O error.
086         */
087        public static PieDataset readPieDatasetFromXML(InputStream in) 
088            throws IOException {
089    
090            PieDataset result = null;
091            SAXParserFactory factory = SAXParserFactory.newInstance();
092            try {
093                SAXParser parser = factory.newSAXParser();
094                PieDatasetHandler handler = new PieDatasetHandler();
095                parser.parse(in, handler);
096                result = handler.getDataset();
097            }
098            catch (SAXException e) {
099                System.out.println(e.getMessage());
100            }
101            catch (ParserConfigurationException e2) {
102                System.out.println(e2.getMessage());
103            }
104            return result;
105    
106        }
107    
108        /**
109         * Reads a {@link CategoryDataset} from a file.
110         *
111         * @param file  the file.
112         *
113         * @return A dataset.
114         *
115         * @throws IOException if there is a problem reading the file.
116         */
117        public static CategoryDataset readCategoryDatasetFromXML(File file) 
118            throws IOException {
119            InputStream in = new FileInputStream(file);
120            return readCategoryDatasetFromXML(in);
121        }
122    
123        /**
124         * Reads a {@link CategoryDataset} from a stream.
125         *
126         * @param in  the stream.
127         *
128         * @return A dataset.
129         *
130         * @throws IOException if there is a problem reading the file.
131         */
132        public static CategoryDataset readCategoryDatasetFromXML(InputStream in) 
133            throws IOException {
134    
135            CategoryDataset result = null;
136    
137            SAXParserFactory factory = SAXParserFactory.newInstance();
138            try {
139                SAXParser parser = factory.newSAXParser();
140                CategoryDatasetHandler handler = new CategoryDatasetHandler();
141                parser.parse(in, handler);
142                result = handler.getDataset();
143            }
144            catch (SAXException e) {
145                System.out.println(e.getMessage());
146            }
147            catch (ParserConfigurationException e2) {
148                System.out.println(e2.getMessage());
149            }
150            return result;
151    
152        }
153    
154    }