001: /***********************************************************************************************
002: * File Info: $Id: PieChartDataSet.java,v 1.1 2003/05/17 16:58:11 nathaniel_auvil Exp $
003: * Copyright (C) 2002
004: * Author: Nathaniel G. Auvil
005: * Contributor(s):
006: *
007: * Copyright 2002 (C) Nathaniel G. Auvil. All Rights Reserved.
008: *
009: * Redistribution and use of this software and associated documentation ("Software"), with or
010: * without modification, are permitted provided that the following conditions are met:
011: *
012: * 1. Redistributions of source code must retain copyright statements and notices.
013: * Redistributions must also contain a copy of this document.
014: *
015: * 2. Redistributions in binary form must reproduce the above copyright notice, this list of
016: * conditions and the following disclaimer in the documentation and/or other materials
017: * provided with the distribution.
018: *
019: * 3. The name "jCharts" or "Nathaniel G. Auvil" must not be used to endorse or promote
020: * products derived from this Software without prior written permission of Nathaniel G.
021: * Auvil. For written permission, please contact nathaniel_auvil@users.sourceforge.net
022: *
023: * 4. Products derived from this Software may not be called "jCharts" nor may "jCharts" appear
024: * in their names without prior written permission of Nathaniel G. Auvil. jCharts is a
025: * registered trademark of Nathaniel G. Auvil.
026: *
027: * 5. Due credit should be given to the jCharts Project (http://jcharts.sourceforge.net/).
028: *
029: * THIS SOFTWARE IS PROVIDED BY Nathaniel G. Auvil AND CONTRIBUTORS ``AS IS'' AND ANY
030: * EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
031: * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL
032: * jCharts OR ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
033: * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
034: * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
035: * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,STRICT LIABILITY, OR TORT
036: * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
037: * IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE
038: ************************************************************************************************/package org.krysalis.jcharts.chartData;
039:
040: import org.krysalis.jcharts.chartData.interfaces.IPieChartDataSet;
041: import org.krysalis.jcharts.properties.PieChart2DProperties;
042:
043: import java.awt.*;
044:
045: /*******************************************************************************************
046: * Implementation of the IPieChartDataSet Interface for use with the PieChart2D Object.
047: *
048: *******************************************************************************************/
049: final public class PieChartDataSet extends DataSet implements
050: IPieChartDataSet {
051: private String chartTitle;
052:
053: /******************************************************************************************
054: * Constructor
055: *
056: * @param chartTitle if the title is NULL, no title will be drawn
057: * @param data
058: * @param legendLabels
059: * @param paints
060: * @param pieChart2DProperties
061: * @throws ChartDataException if fails a limited validation check
062: *******************************************************************************************/
063: public PieChartDataSet(String chartTitle, double[] data,
064: String[] legendLabels, Paint[] paints,
065: PieChart2DProperties pieChart2DProperties)
066: throws ChartDataException {
067: super (new double[][] { data }, legendLabels, paints,
068: pieChart2DProperties);
069:
070: this .chartTitle = chartTitle;
071:
072: this .validateData(data, legendLabels, paints);
073: }
074:
075: /*******************************************************************************************
076: * Perform some limited validation of the structure of the passed data. This is useful for
077: * development.
078: *
079: * @param data
080: * @param legendLabels
081: * @param paints
082: * @throws ChartDataException
083: *******************************************************************************************/
084: private void validateData(double[] data, String[] legendLabels,
085: Paint[] paints) throws ChartDataException {
086: if (legendLabels != null
087: && (data.length != legendLabels.length)) {
088: throw new ChartDataException(
089: "There is not an one to one mapping of 'legend labels' to 'data items'.");
090: }
091:
092: if (data.length != paints.length) {
093: throw new ChartDataException(
094: "There is not an one to one mapping of 'Paint' Implementations to 'data items'.");
095: }
096: }
097:
098: /******************************************************************************************
099: * Returns the chart title.
100: *
101: * @return String the chart title. If this returns NULL, no title will be displayed.
102: ******************************************************************************************/
103: public String getChartTitle() {
104: return this .chartTitle;
105: }
106:
107: /******************************************************************************************
108: * Returns the value in the data set at the specified position.
109: *
110: * @param index
111: * @return double
112: * @throws ArrayIndexOutOfBoundsException
113: *******************************************************************************************/
114: public double getValue(int index)
115: throws ArrayIndexOutOfBoundsException {
116: return super .data[0][index];
117: }
118: }
|