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