001: /***********************************************************************************************
002: * File Info: $Id: DataSeries.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.IDataSeries;
041: import org.krysalis.jcharts.properties.PropertyException;
042: import org.krysalis.jcharts.test.HTMLGenerator;
043: import org.krysalis.jcharts.test.HTMLTestable;
044:
045: import java.util.Iterator;
046:
047: /*********************************************************************************************
048: * Collection of all IAxisPlotDataSets to display in an AxisChart
049: *
050: **********************************************************************************************/
051: public class DataSeries extends AxisDataSeries implements IDataSeries,
052: HTMLTestable {
053: private String[] axisLabels;
054:
055: /******************************************************************************************
056: * Constructor
057: *
058: * @param axisLabels
059: * @param xAxisTitle if this is NULL, no title will be displayed
060: * @param yAxisTitle if this is NULL, no title will be displayed
061: * @param chartTitle if this is NULL, no title will be displayed
062: *******************************************************************************************/
063: public DataSeries(String[] axisLabels, String xAxisTitle,
064: String yAxisTitle, String chartTitle) {
065: super (xAxisTitle, yAxisTitle, chartTitle);
066:
067: this .axisLabels = axisLabels;
068: }
069:
070: /******************************************************************************************
071: * Returns the x-axis label corresponding to the passed index
072: *
073: * @param index
074: * @return String
075: *******************************************************************************************/
076: public String getAxisLabel(int index) {
077: return this .axisLabels[index];
078: }
079:
080: /******************************************************************************************
081: * Returns the number of labels on the x-axis
082: *
083: * @return int
084: ******************************************************************************************/
085: public int getNumberOfAxisLabels() {
086: if (this .axisLabels != null) {
087: return this .axisLabels.length;
088: } else {
089: return 0;
090: }
091: }
092:
093: /****************************************************************************************
094: *
095: * @throws ChartDataException
096: * @throws PropertyException
097: ***************************************************************************************/
098: public void validate() throws ChartDataException, PropertyException {
099: super .validate();
100:
101: if (this .axisLabels != null
102: && this .axisLabels.length != super
103: .getSizeOfEachDataSet()) {
104: throw new ChartDataException(
105: "The size of the Axis Labels Array does not match the number of data elements to be plotted.");
106: }
107: }
108:
109: /*********************************************************************************************
110: * Enables the testing routines to display the contents of this Object.
111: *
112: * @param htmlGenerator
113: **********************************************************************************************/
114: public void toHTML(HTMLGenerator htmlGenerator) {
115: htmlGenerator.propertiesTableRowStart();
116: {
117: htmlGenerator.propertiesTableStart(this .getClass()
118: .getName());
119: htmlGenerator.addTableRow("xAxisLabels", HTMLGenerator
120: .arrayToString(this .axisLabels));
121: htmlGenerator.addTableRow("totalNumberOfDataSets", Integer
122: .toString(totalNumberOfDataSets));
123: htmlGenerator.propertiesTableEnd();
124: }
125: htmlGenerator.propertiesTableRowEnd();
126:
127: htmlGenerator.propertiesTableRowStart();
128: {
129: //---loop the data sets
130: Iterator iterator = this .getIAxisPlotDataSetIterator();
131: Object object;
132: while (iterator.hasNext()) {
133: object = iterator.next();
134: if (object instanceof HTMLTestable) {
135: ((HTMLTestable) object).toHTML(htmlGenerator);
136: }
137: }
138: }
139: htmlGenerator.propertiesTableRowEnd();
140: }
141: }
|