/*
* Copyright 2014 Diogo Bernardino
*
* 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 com.db.chart.model;
import java.util.ArrayList;
/**
* Data model containing {@link ChartEntry} elements to be used by {@link ChartView}.
*/
public class ChartSet {
/** Set with entries */
private ArrayList<ChartEntry> mEntries;
/** Paint alpha value from 0 to 1 */
private float mAlpha;
/** Whether the set will be visible or not */
private boolean mIsVisible;
public ChartSet(){
mEntries = new ArrayList<ChartEntry>();
mAlpha = 1;
mIsVisible = false;
}
protected void addEntry(String label, float value){
mEntries.add(new ChartEntry(label, value));
}
protected void addEntry(ChartEntry e){
mEntries.add(e);
}
/**
* Updates set values.
*
* @param newValues
* @return float[] with X and Y coordinates of old values
*/
public float[][] updateValues(float[] newValues){
int nEntries = size();
float[][] result = new float[nEntries][2];
for(int i = 0; i < nEntries; i++){
result[i][0] = mEntries.get(i).getX();
result[i][1] = mEntries.get(i).getY();
setValue(i, newValues[i]);
}
return result;
}
/*
* --------
* Getters
* --------
*/
/**
* Get set of {@link ChartEntry}s.
*/
public ArrayList<ChartEntry> getEntries(){
return mEntries;
}
/**
* Get {@link ChartEntry} from specific index.
*
* @param index - Entry's index
*/
public ChartEntry getEntry(int index) {
return mEntries.get(index);
}
/**
* Get {@link ChartEntry} value from specific index.
*
* @param index Value's index
*/
public float getValue(int index){
return mEntries.get(index).getValue();
}
/**
* Get {@link ChartEntry} label from specific index.
*
* @param index Label's index
*/
public String getLabel(int index) {
return mEntries.get(index).getLabel();
}
/**
* Get screen points.
*/
public float[][] getScreenPoints(){
int nEntries = size();
float[][] result = new float[nEntries][2];
for(int i = 0; i < nEntries; i++){
result[i][0] = mEntries.get(i).getX();
result[i][1] = mEntries.get(i).getY();
}
return result;
}
/**
* Get current set's alpha.
*/
public float getAlpha(){
return mAlpha;
}
/**
* Get whether the set should be presented or not.
*/
public boolean isVisible(){
return mIsVisible;
}
/*
* --------
* Setters
* --------
*/
/**
* Set {@link ChartEntry} value at specific index position.
*
* @param index Value's index where value will be placed
*/
private void setValue(int index, float value){
mEntries.get(index).setValue(value);
}
/**
* Set set's alpha.
*/
public void setAlpha(float alpha){
mAlpha = (alpha < 1) ? alpha : 1;
}
/**
* Set whether the set should be visible or not.
*/
public void setVisible(boolean visible){
mIsVisible = visible;
}
public String toString(){
return mEntries.toString();
}
public int size() {
return mEntries.size();
}
}