KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > krysalis > jcharts > chartData > AxisDataSeries


1 /***********************************************************************************************
2  * File Info: $Id: AxisDataSeries.java,v 1.2 2004/05/31 16:24:34 nathaniel_auvil Exp $
3  * Copyright (C) 2002
4  * Author: Nathaniel G. Auvil
5  * Contributor(s):
6  *
7  * Copyright 2002 (C) Nathaniel G. Auvil. All Rights Reserved.
8  *
9  * Redistribution and use of this software and associated documentation ("Software"), with or
10  * without modification, are permitted provided that the following conditions are met:
11  *
12  * 1. Redistributions of source code must retain copyright statements and notices.
13  * Redistributions must also contain a copy of this document.
14  *
15  * 2. Redistributions in binary form must reproduce the above copyright notice, this list of
16  * conditions and the following disclaimer in the documentation and/or other materials
17  * provided with the distribution.
18  *
19  * 3. The name "jCharts" or "Nathaniel G. Auvil" must not be used to endorse or promote
20  * products derived from this Software without prior written permission of Nathaniel G.
21  * Auvil. For written permission, please contact nathaniel_auvil@users.sourceforge.net
22  *
23  * 4. Products derived from this Software may not be called "jCharts" nor may "jCharts" appear
24  * in their names without prior written permission of Nathaniel G. Auvil. jCharts is a
25  * registered trademark of Nathaniel G. Auvil.
26  *
27  * 5. Due credit should be given to the jCharts Project (http://jcharts.sourceforge.net/).
28  *
29  * THIS SOFTWARE IS PROVIDED BY Nathaniel G. Auvil AND CONTRIBUTORS ``AS IS'' AND ANY
30  * EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
31  * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL
32  * jCharts OR ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
33  * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
34  * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
35  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,STRICT LIABILITY, OR TORT
36  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
37  * IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE
38  ************************************************************************************************/

39
40 package org.krysalis.jcharts.chartData;
41
42
43 import org.krysalis.jcharts.chartData.interfaces.IAxisDataSeries;
44 import org.krysalis.jcharts.chartData.interfaces.IAxisPlotDataSet;
45 import org.krysalis.jcharts.test.HTMLGenerator;
46 import org.krysalis.jcharts.test.HTMLTestable;
47 import org.krysalis.jcharts.types.ChartType;
48 import org.krysalis.jcharts.properties.PropertyException;
49
50 import java.util.Iterator JavaDoc;
51 import java.util.HashMap JavaDoc;
52
53
54 /*********************************************************************************************
55  * Collection of all IAxisChartDataSets to display in an AxisChart
56  *
57  **********************************************************************************************/

58 public abstract class AxisDataSeries implements IAxisDataSeries, HTMLTestable
59 {
60     private String JavaDoc chartTitle;
61     private String JavaDoc xAxisTitle;
62     private String JavaDoc yAxisTitle;
63     protected HashMap JavaDoc dataSets;
64
65     protected int totalNumberOfDataSets;
66     private int sizeOfEachDataSet;
67
68
69     /******************************************************************************************
70      * Constructor
71      *
72      * @param xAxisTitle if this is NULL, no title will be displayed
73      * @param yAxisTitle if this is NULL, no title will be displayed
74      * @param chartTitle if this is NULL, no title will be displayed
75      *******************************************************************************************/

76     public AxisDataSeries( String JavaDoc xAxisTitle, String JavaDoc yAxisTitle, String JavaDoc chartTitle )
77     {
78         this.xAxisTitle=xAxisTitle;
79         this.yAxisTitle=yAxisTitle;
80         this.chartTitle=chartTitle;
81         dataSets = new HashMap JavaDoc();
82     }
83
84
85     /******************************************************************************************
86      * Returns the x-axis title
87      *
88      * @return String
89      *******************************************************************************************/

90     public String JavaDoc getXAxisTitle()
91     {
92         return this.xAxisTitle;
93     }
94
95
96     /******************************************************************************************
97      * Returns the y-axis title
98      *
99      * @return String
100      *******************************************************************************************/

101     public String JavaDoc getYAxisTitle()
102     {
103         return this.yAxisTitle;
104     }
105
106
107     /******************************************************************************************
108      * Returns the chart title.
109      *
110      * @return String the chart title. If this returns NULL, no title will be displayed.
111      ******************************************************************************************/

112     public String JavaDoc getChartTitle()
113     {
114         return this.chartTitle;
115     }
116
117
118     /******************************************************************************************
119      * Returns the IAxisPlotDataSet for the passed chart type constant. Will return NULL if
120      * if no data set exists for the passed type.
121      *
122      * @param chartType
123      * @return IAxisPlotDataSet
124      ******************************************************************************************/

125     public IAxisPlotDataSet getIAxisPlotDataSet( ChartType chartType )
126     {
127         return (IAxisPlotDataSet) this.dataSets.get( chartType );
128     }
129
130
131     /******************************************************************************************
132      * Returns an Iterator over a List of IAxisPlotDataSet Objects
133      *
134      * @return Iterator over a List of IAxisPlotDataSet Objects
135      *******************************************************************************************/

136     public Iterator JavaDoc getIAxisPlotDataSetIterator()
137     {
138         return this.dataSets.values().iterator();
139     }
140
141
142     /******************************************************************************************
143      * Returns the total number data dimensions in all of the IAxisChartDataSets contained in
144      * this collection. For example, if this contains two IAxisChartDataSets and each one
145      * contains 3 dimensions ( 3 lines and 3 sets of points ), this should return six. This
146      * provides a means to avoid looping the contents of the series each time i need the value.
147      *
148      * @return int
149      ******************************************************************************************/

150     public int getTotalNumberOfDataSets()
151     {
152         return this.totalNumberOfDataSets;
153     }
154
155
156     /******************************************************************************************
157      * Adds the passed IAxisPlotDataSet to the series
158      *
159      * @param iAxisPlotDataSet
160      ******************************************************************************************/

161     public void addIAxisPlotDataSet( IAxisPlotDataSet iAxisPlotDataSet )
162     {
163         this.dataSets.put( iAxisPlotDataSet.getChartType(), iAxisPlotDataSet );
164
165         //---set the number of dimensions
166
totalNumberOfDataSets+=iAxisPlotDataSet.getNumberOfDataSets();
167
168         this.sizeOfEachDataSet= iAxisPlotDataSet.getNumberOfDataItems();
169     }
170
171
172     /****************************************************************************************
173      *
174      * @throws ChartDataException
175      * @throws PropertyException
176      ***************************************************************************************/

177     public void validate() throws ChartDataException, PropertyException
178     {
179         IAxisPlotDataSet iAxisPlotDataSet;
180         Iterator JavaDoc iterator= this.getIAxisPlotDataSetIterator();
181
182         while( iterator.hasNext() )
183         {
184             iAxisPlotDataSet= (IAxisPlotDataSet) iterator.next();
185             iAxisPlotDataSet.validate();
186
187             if( iAxisPlotDataSet.getNumberOfDataItems() != this.sizeOfEachDataSet )
188             {
189                 throw new ChartDataException( "All IAxisPlotDataSet implementations must contain an equal number of elements in a Combo Chart" );
190             }
191         }
192     }
193
194
195     /******************************************************************************************
196      * Returns number of elements in each data set dimension, so i can validate a that all
197      * IAxisPlotDataSets on a ComboChart have the same number of elements, as well as the
198      * number of Axis Labels equal the number of data elements other charts.
199      *
200      * @return int
201      *****************************************************************************************/

202     public int getSizeOfEachDataSet()
203     {
204         return sizeOfEachDataSet;
205     }
206
207
208     /*********************************************************************************************
209      * Enables the testing routines to display the contents of this Object.
210      *
211      * @param htmlGenerator
212      **********************************************************************************************/

213     public void toHTML( HTMLGenerator htmlGenerator )
214     {
215         htmlGenerator.propertiesTableRowStart();
216         {
217             htmlGenerator.propertiesTableStart( this.getClass().getName() );
218             htmlGenerator.addTableRow( "chart title", this.chartTitle );
219             htmlGenerator.addTableRow( "xAxisTitle", this.xAxisTitle );
220             htmlGenerator.addTableRow( "yAxisTitle", this.yAxisTitle );
221             htmlGenerator.propertiesTableEnd();
222         }
223         htmlGenerator.propertiesTableRowEnd();
224     }
225
226
227     /******************************************************************************************
228      * Returns the number of IAxisPlotDataSet Objects in this series
229      *
230      * @return int
231      ******************************************************************************************/

232     public int size()
233     {
234         return this.dataSets.size();
235     }
236
237 }
238
Popular Tags