001: /***********************************************************************************************
002: * File Info: $Id: AxisChartDataSet.java,v 1.1 2003/05/17 16:58:10 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.IAxisChartDataSet;
041: import org.krysalis.jcharts.properties.*;
042: import org.krysalis.jcharts.test.HTMLGenerator;
043: import org.krysalis.jcharts.test.HTMLTestable;
044: import org.krysalis.jcharts.types.ChartType;
045:
046: import java.awt.*;
047:
048: public final class AxisChartDataSet extends DataSet implements
049: IAxisChartDataSet, HTMLTestable {
050: private ChartType chartType;
051:
052: /******************************************************************************************
053: * Constructor
054: *
055: * @param data the data sets to be displayed in the chart.
056: * @param legendLabels if this is: NULL there will be no Legend. Otherwise, there must be an
057: * one to one mapping of labels to data sets.
058: * @param paints paints to use for the data sets. There must be an one to one mapping of
059: * labels to data sets.
060: * @param chartType constant defining how this data should be rendered
061: * @param chartTypeProperties properties Object specific to the type of chart you are rendering.
062: * @throws ChartDataException if data is not in correct form.
063: *******************************************************************************************/
064: public AxisChartDataSet(double[][] data, String[] legendLabels,
065: Paint[] paints, ChartType chartType,
066: ChartTypeProperties chartTypeProperties)
067: throws ChartDataException {
068: super (data, legendLabels, paints, chartTypeProperties);
069: this .chartType = chartType;
070: }
071:
072: /************************************************************************************************
073: * Performs a limited validation of data. This is static and not called by the rendering engine
074: * so as to avoid the, albeit small, cost of validation checking during deployment; this is viewed
075: * more so as a development time test.
076: *
077: * @throws ChartDataException
078: *************************************************************************************************/
079: public void validate() throws ChartDataException, PropertyException {
080: if ((super .legendLabels != null)
081: && (super .data.length != super .legendLabels.length)) {
082: throw new ChartDataException(
083: "There is not an one to one mapping of 'legend labels' to 'data sets'.");
084: }
085:
086: if (super .data.length != super .paints.length) {
087: throw new ChartDataException(
088: "There is not an one to one mapping of 'Paint' implementations to 'data sets'.");
089: }
090:
091: ((AxisChartTypeProperties) super .getChartTypeProperties())
092: .validate(this );
093: }
094:
095: /******************************************************************************************
096: * Returns the value in the data set at the specified position.
097: *
098: * @param dataset
099: * @param index
100: * @return double
101: * @throws ArrayIndexOutOfBoundsException
102: *******************************************************************************************/
103: public final double getValue(int dataset, int index)
104: throws ArrayIndexOutOfBoundsException {
105: return super .data[dataset][index];
106: }
107:
108: /******************************************************************************************
109: * Returns the type constant that this data set should be plotted as.
110: *
111: * @return ChartType
112: * @see ChartType
113: *******************************************************************************************/
114: public final ChartType getChartType() {
115: return this .chartType;
116: }
117:
118: /******************************************************************************************
119: * Returns the number of IAxisChartDataSet Objects in this series
120: *
121: * @return int
122: ******************************************************************************************/
123: public final int getNumberOfDataSets() {
124: return this .data.length;
125: }
126:
127: /*********************************************************************************************
128: * Enables the testing routines to display the contents of this Object.
129: *
130: * @param htmlGenerator
131: **********************************************************************************************/
132: public void toHTML(HTMLGenerator htmlGenerator) {
133: super .toHTML(htmlGenerator);
134:
135: /*
136: //String name= this.getClass().getSuperclass().getName() + "->";
137:
138: Field[] fields= this.getClass().getDeclaredFields();
139: for( int i=0; i< fields.length; i++ )
140: {
141: htmlGenerator.addTableRow( fields[ i ].getName(), fields[ i ].get( this ) );
142: }
143: */
144: }
145:
146: }
|