001: package com.calipso.reportgenerator.reportcalculator;
002:
003: import com.calipso.reportgenerator.reportcalculator.SharedFloat;
004:
005: import java.io.Serializable;
006:
007: /**
008: * Representa una hoja del arbol <code>DataTree</code>
009: */
010:
011: public class DataTreeSubItem implements Serializable {
012: String[] nonGroupingDimensionValues;
013: SharedFloat[] metricValues;
014: private SharedFloat[] accumulableMetricValues;
015: private int[] adjMetricIndexes;
016:
017: /**
018: * Inicializa una instancia de <code>DataTreeSubItem</code>
019: * @param nonGroupingDimensionValues
020: * @param metricValues
021: */
022: public DataTreeSubItem(String[] nonGroupingDimensionValues,
023: int metricCount) {//, SharedFloat[] metricValues/*, CubeFloat[] accumulableMetricValues*/) {
024: this .nonGroupingDimensionValues = nonGroupingDimensionValues;
025: this .metricValues = new SharedFloat[metricCount];
026: //this.accumulableMetricValues = accumulableMetricValues;
027: initialize();
028: }
029:
030: private void initialize() {
031: for (int i = 0; i < metricValues.length; i++) {
032: metricValues[i] = SharedFloat.newFrom(0);
033: }
034: }
035:
036: /**
037: * Devuelve los valores de las dimensiones que no agrupan.
038: * @return
039: */
040: public String[] getNonGroupingDimensionValues() {
041: return nonGroupingDimensionValues;
042: }
043:
044: /**
045: * Devuelve un array con los valores de las metricas.
046: * @return
047: */
048: public SharedFloat[] getMetricValues() {
049: return metricValues;
050: }
051:
052: /**
053: * Asigna un array que contiene las metricas acumulables.
054: * @param accumulableMetricValues
055: */
056: public void setAccumulableMetricValues(
057: SharedFloat[] accumulableMetricValues) {
058: this .accumulableMetricValues = accumulableMetricValues;
059: }
060:
061: public void setAdjMetricIndexes(int[] adjMetricIndexes) {
062: this .adjMetricIndexes = adjMetricIndexes;
063: }
064:
065: /**
066: * Devuelve un array que contiene los valores
067: * de las metricas acumulables.
068: * @return
069: */
070: public SharedFloat[] getAccumulableMetricValues() {
071: if (accumulableMetricValues == null) {
072: return new SharedFloat[0];
073: }
074: return accumulableMetricValues;
075: }
076:
077: public int getMetricIndex(int index) {
078: if (adjMetricIndexes != null && adjMetricIndexes.length > index) {
079: return adjMetricIndexes[index];
080: } else {
081: return index;
082: }
083:
084: }
085:
086: public boolean matches(String[] noGroupDimValues) {
087: for (int i = 0; i < noGroupDimValues.length
088: && i < nonGroupingDimensionValues.length; i++) {
089: if (!nonGroupingDimensionValues[i]
090: .equalsIgnoreCase(noGroupDimValues[i])) {
091: return false;
092: }
093: }
094: return true;
095: }
096:
097: public void updateMetricValues(SharedFloat[] newMetricValues) {
098: for (int i = 0; i < metricValues.length; i++) {
099: metricValues[i] = metricValues[i].add(newMetricValues[i]);
100: }
101: }
102:
103: }
|