01: package com.calipso.reportgenerator.reportmanager;
02:
03: import com.calipso.reportgenerator.reportcalculator.Cube;
04: import com.calipso.reportgenerator.reportcalculator.Pivot;
05: import com.calipso.reportgenerator.reportcalculator.CubeQuery;
06: import com.calipso.reportgenerator.common.ReportQuery;
07: import com.calipso.reportgenerator.common.ReportSpec;
08: import com.calipso.reportgenerator.common.InfoException;
09:
10: import java.util.Iterator;
11: import java.util.Set;
12:
13: /**
14: * Representa los datos para un reporte de tipo Cube
15: */
16: public class CubeReportData extends ReportData {
17: private Cube cube;
18:
19: /**
20: * Inicializa una instancia de <code>CubeReportData</code>
21: * @param reportSpec
22: */
23: public CubeReportData(ReportSpec reportSpec) {
24: super (reportSpec);
25: cube = new Cube();
26: cube.setDefinition(reportSpec);
27: }
28:
29: /**
30: * Devuelve el Cube correspondiente al <code>CubeReportData</code>
31: * @return
32: */
33: protected Cube getCube() {
34: return cube;
35: }
36:
37: public Iterator valuesFor(int dimension, int[] previousDimensions,
38: Object[] values) {
39: return getCube().valuesFor(dimension, previousDimensions,
40: values);
41: }
42:
43: /**
44: * Retorna el iterador del <code>CubeReportData</code>
45: * @return
46: */
47: public ReportDataIterator iterator() {
48: return new CubeReportDataIterator(getCube().iterator());
49: }
50:
51: public Object[] measuresAtDimensionsValues(int[] dimensions,
52: Object[] values) {
53: return getCube().measuresAtDimensionsValues(dimensions, values);
54: }
55:
56: /**
57: * Asigna la <code>CubeQuery</code> a la instancia de <code>Cube</code>
58: * @param query
59: * @param pivot
60: * @throws InfoException
61: */
62: protected void doSetQuery(ReportQuery query, Pivot pivot)
63: throws InfoException {
64: CubeQuery oldQuery = getCube().getQuery();
65: CubeQuery newQuery = query.getCubeQuery();
66: boolean eqvQuery = newQuery.equivalentQuery(oldQuery);
67: getCube().setQuery(newQuery);
68: if (!eqvQuery) {
69: pivot.fill(getCube());
70: }
71: }
72:
73: /**
74: * Devuelve un conjunto de datos del Cube
75: * que representan los valores de
76: * las dimensiones
77: * @return
78: */
79: public Set[] getDimensionValues() {
80: return getCube().getDimensionValues();
81: }
82:
83: public Object[] getMetricValues(int[] groupingDimensionsIndexArray,
84: Object[] values) {
85: return getCube().getMetricsValuesAt(
86: groupingDimensionsIndexArray, values);
87: }
88:
89: public Set getDimensionValues(int index) throws InfoException {
90: return getCube().getDimensionValues(index);
91: }
92:
93: }
|