/**
* Copyright (C) 2009, 2010 SC 4ViewSoft SRL
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.achartengine.model;
import java.util.ArrayList;
import java.util.List;
/**
* A series for the range category charts like the range bar.
*/
public class RangeCategorySeries extends CategorySeries {
/** The series values. */
private List<Double> mMaxValues = new ArrayList<Double>();
/**
* Builds a new category series.
*
* @param title the series title
*/
public RangeCategorySeries(String title) {
super(title);
}
/**
* Adds new values to the series
*
* @param minValue the new minimum value
* @param maxValue the new maximum value
*/
public synchronized void add(double minValue, double maxValue) {
super.add(minValue);
mMaxValues.add(maxValue);
}
/**
* Adds new values to the series.
*
* @param category the category
* @param minValue the new minimum value
* @param maxValue the new maximum value
*/
public synchronized void add(String category, double minValue, double maxValue) {
super.add(category, minValue);
mMaxValues.add(maxValue);
}
/**
* Removes existing values from the series.
*
* @param index the index in the series of the values to remove
*/
public synchronized void remove(int index) {
super.remove(index);
mMaxValues.remove(index);
}
/**
* Removes all the existing values from the series.
*/
public synchronized void clear() {
super.clear();
mMaxValues.clear();
}
/**
* Returns the minimum value at the specified index.
*
* @param index the index
* @return the minimum value at the index
*/
public double getMinimumValue(int index) {
return getValue(index);
}
/**
* Returns the maximum value at the specified index.
*
* @param index the index
* @return the maximum value at the index
*/
public double getMaximumValue(int index) {
return mMaxValues.get(index);
}
/**
* Transforms the range category series to an XY series.
*
* @return the XY series
*/
public XYSeries toXYSeries() {
XYSeries xySeries = new XYSeries(getTitle());
int length = getItemCount();
for (int k = 0; k < length; k++) {
xySeries.add(k + 1, getMinimumValue(k));
xySeries.add(k + 1, getMaximumValue(k));
}
return xySeries;
}
}