KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > com > calipso > reportgenerator > reportmanager > ReportSourceDimension


1 package com.calipso.reportgenerator.reportmanager;
2
3 import com.calipso.reportgenerator.reportdefinitions.DimensionSourceDefinition;
4 import com.calipso.reportgenerator.reportcalculator.IDataSource;
5 import com.calipso.reportgenerator.common.*;
6
7 /**
8  * Esta clase se utliza para llenar la <code>Matix</code> del <code>ReportSource</code> a partir del <IDataSource> entregado
9  * por los <ReportDataSource>.
10  * En las columnas comunes se encarga del obtener el valor a partir del índice del campo en el registro
11  * En las columnas calculadas se encarga de ejecutar las operaciones necesarias para obtener el valor
12  */

13
14 public class ReportSourceDimension {
15
16   private int index;
17   private int dataIndex;
18   private DimensionSourceDefinition dimensionSourceDefinition;
19   private DateExpressionParser expressionParser;
20   private String JavaDoc datePattern;
21
22   /**
23    * Constructor que inicializa
24    * @param dimensionSourceDefinition
25    * @param index Indice de la matriz del pivot
26    * @param dataIndex Indice del data source
27    */

28   public ReportSourceDimension(DimensionSourceDefinition dimensionSourceDefinition, int index, int dataIndex) {
29     this.dimensionSourceDefinition = dimensionSourceDefinition;
30     this.index = index;
31     if (dimensionSourceDefinition.getCalculated()) {
32       this.dataIndex = -1;
33     }
34     else {
35       this.dataIndex = dataIndex;
36     }
37   }
38
39   /**
40    * Constructor que inicializa el el formato de fecha
41    * @param dimensionSourceDefinition
42    * @param index
43    * @param dataIndex
44    * @param datePattern
45    */

46   public ReportSourceDimension(DimensionSourceDefinition dimensionSourceDefinition, int index, int dataIndex, String JavaDoc datePattern) {
47     this(dimensionSourceDefinition, index, dataIndex);
48     this.datePattern = datePattern;
49   }
50
51   /**
52    * Devuelve un date expression parser
53    * @see com.calipso.reportgenerator.common.DateExpressionParser
54    * @return
55    */

56   protected DateExpressionParser getExpressionParser() {
57     if (expressionParser == null) {
58       expressionParser = new DateExpressionParser();
59     }
60     return expressionParser;
61   }
62
63   /**
64    * Indice que se utiliza para buscar en la matrix de datos para calcular
65    * @return
66    */

67   public int getIndex() {
68     return index;
69   }
70
71
72   /**
73    * Indice que se utiliza para buscar en el IDataSource
74    * Este indice es distinto porque en el IDataSource no están las columnas calculadas
75    * @return
76    */

77   public int getDataIndex() {
78     return dataIndex;
79   }
80
81   /**
82    * Devuelve el dimension source definition
83    * @return
84    */

85   public DimensionSourceDefinition getDimensionSourceDefinition() {
86     return dimensionSourceDefinition;
87   }
88
89   private int getCalculatedDataIndex(String JavaDoc name, IDataSource dataSource) {
90     if (dataIndex == -1) {
91       for (int i = 0; i < dataSource.getColumCount(); i++) {
92         String JavaDoc colName = dataSource.getColumName(i);
93         if (colName.equals(name)) {
94           return i;
95         }
96       }
97     }
98     return dataIndex;
99   }
100
101   /**
102    * Devuelve el valor de la dimensión
103    * @param dataSource
104    * @param index
105    * @return
106    * @throws InfoException
107    */

108   public Object JavaDoc getValue(IDataSource dataSource, int index) throws InfoException {
109     try {
110       if (getDimensionSourceDefinition().getCalculated()) {
111         String JavaDoc expression = getDimensionSourceDefinition().getExpression();
112         getExpressionParser().setExpression(expression);
113         String JavaDoc refDimensionName = getExpressionParser().getFieldName();
114         int calcDataIndex = getCalculatedDataIndex(refDimensionName, dataSource);
115         String JavaDoc dateString = dataSource.getValueAt(index, calcDataIndex).toString();
116         String JavaDoc resultValue = DateExpressionResolver.Resolve(getExpressionParser().getDateFunction(), dateString, getDatePattern());
117         return resultValue;
118       }
119       else {
120         return dataSource.getValueAt(index, this.dataIndex).toString();
121       }
122     } catch (Exception JavaDoc e) {
123       throw new InfoException(LanguageTraslator.traslate("90"), e);
124     }
125   }
126
127   /**
128    * Devuelve el formato de fecha
129    * @return
130    */

131   public String JavaDoc getDatePattern() {
132     return datePattern;
133   }
134
135   /**
136    * Asigna el formato de fecha
137    * @param pattern
138    */

139   public void setDatePattern(String JavaDoc pattern) {
140     datePattern = pattern;
141   }
142 }
143
Popular Tags