KickJava   Java API By Example, From Geeks To Geeks.

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


1 package com.calipso.reportgenerator.reportmanager;
2
3 import com.calipso.reportgenerator.reportcalculator.*;
4 import com.calipso.reportgenerator.common.*;
5 //import com.calipso.reportgenerator.reportcalculator.DataSource;
6
import com.calipso.reportgenerator.common.InfoException;
7 import com.calipso.reportgenerator.reportdefinitions.types.ReportDataType;
8 import com.calipso.common.DateEx;
9
10 import java.util.*;
11
12 /**
13  * Esta clase en la encargada de obtener los datos necesarios para ejecutar un reporte
14  */

15
16 public abstract class ReportDataSource {
17
18   private ReportDataSourceSpec dataSourceSpec;
19   private ReportSpec reportSpec;
20   private Vector columnNames;
21   private ExpressionCubeFilter filter;
22   private ReportGeneratorConfiguration reportGeneratorConfiguration;
23
24   /**
25    * Retorna la configuración del report manager
26    * @return configuración
27    */

28   public ReportGeneratorConfiguration getReportGeneratorConfiguration() {
29     return reportGeneratorConfiguration;
30   }
31
32   /**
33    * Asigna la configuración del report manager
34    * @param reportGeneratorConfiguration
35    */

36   public void setGeneratorConfiguration(ReportGeneratorConfiguration reportGeneratorConfiguration) {
37     this.reportGeneratorConfiguration = reportGeneratorConfiguration;
38   }
39
40   /**
41    * Constructor por defecto
42    */

43   public ReportDataSource() {
44
45   }
46
47   /**
48    * Constructor que inicializa el objeto
49    * @param reportSpec
50    * @param reportDataSourceSpec
51    */

52   public ReportDataSource(ReportSpec reportSpec, ReportDataSourceSpec reportDataSourceSpec) {
53     this.dataSourceSpec= reportDataSourceSpec;
54     this.reportSpec = reportSpec;
55     initialize();
56   }
57
58   /**
59    * Inicializa el objeto
60    */

61   protected void initialize() {
62   }
63
64   /**
65    * Devuelve la Definición del Origen de un Reporte
66    * @return devuelve la Definición del Origen de un Reporte
67    */

68   public ReportSpec getReportSpec() {
69     return reportSpec;
70   }
71
72   /**
73    * Devuelve el <code>ReportSourceDef</code>
74    * @return ReportSourceDef
75    */

76   public ReportDataSourceSpec getReportDataSourceSpec() {
77     return dataSourceSpec;
78   }
79
80
81   /**
82    * Método abstracto que devuelve la Definición del Origen de un Reporte
83    * @return devuelve un objeto de tipo IDataSource
84    */

85   public abstract IDataSource getDataSource(Matrix matrix) throws InfoException;
86
87   /**
88    * Obtiene y devuelve un datasource
89    * @see com.calipso.reportgenerator.reportcalculator.DataSource
90    * @return
91    * @throws InfoException
92    */

93   public IDataSource newDataSource() throws InfoException {
94     try {
95       return new DataSource(getColumnNames());
96       //return DataSourceBuilder.buildDataSource(getColumnNames(), getReportGeneratorConfiguration(), getReportSpec().getSourceId());
97
} catch (InfoException e) {
98       throw new InfoException(LanguageTraslator.traslate("79"), e);
99     }
100   }
101
102   /**
103    * Devuelve la lista de nombres de columnas
104    * @return columnNames
105    */

106   protected Vector getColumnNames() {
107     if (columnNames == null) {
108       columnNames = new Vector();
109       initializeColumnNames(columnNames);
110     }
111     return columnNames;
112   }
113
114   private void parseColumnNamesFrom(Collection names, Collection fieldSpecs){
115     Iterator iterator = fieldSpecs.iterator();
116     while (iterator.hasNext()) {
117       ReportFieldSpec fieldSpec = (ReportFieldSpec) iterator.next();
118       if (!fieldSpec.getCalculated()){
119          names.add(fieldSpec.getName());
120       }
121     }
122   }
123   /**
124    * Agrega a la lista de columnas los nombres recorriendo las listas de dimensiones y métricas de la definición del reporte
125    * @param names
126    */

127   private void initializeColumnNames(Collection names) {
128     Collection dimensions = getReportSpec().getDimensionsByIndex();
129     Collection metrics = getReportSpec().getMetricsByIndex();
130     parseColumnNamesFrom(names, dimensions);
131     parseColumnNamesFrom(names, metrics);
132   }
133
134   /**
135    * Devuelve el filtro(Filter)
136    * @return filtro
137    */

138   public ExpressionCubeFilter getFilter() {
139     return filter;
140   }
141
142   /**
143    * Asigan el filter(Filtro)
144    * @param filter
145    */

146   public void setFilter(ExpressionCubeFilter filter) {
147     this.filter = filter;
148   }
149
150   /**
151    * Método abstracto para definir el tipo de filtro
152    */

153   public abstract int getFilterVarMode();
154
155   public Object JavaDoc getValueForMetric(Object JavaDoc value, ReportMetricSpec metric, Object JavaDoc[] collection, int i) throws InfoException{
156     collection[i] = value;
157     return metric.getValue(collection);
158   }
159
160   public Object JavaDoc getValueForDimension(Object JavaDoc value, ReportDimensionSpec dimension, Object JavaDoc[] collection, int i) throws InfoException{
161     try{
162       switch(dimension.getDataType().getType()){
163         case ReportDataType.FLOAT_TYPE:
164           if (value != null){
165             value = SharedFloat.newFrom(new Float JavaDoc(value.toString().trim()));
166           }else{
167             value = null;
168           }
169           break;
170         case ReportDataType.INTEGER_TYPE:
171           value = SharedInteger.newFrom(new Integer JavaDoc(value.toString().trim()));
172           break;
173         case ReportDataType.STRING_TYPE:
174           value = value.toString().trim().intern();//SharedString.newFrom(value.toString().trim());
175
break;
176         case ReportDataType.DATETIME_TYPE:
177         case ReportDataType.DATE_TYPE:
178           DateEx dateEx;
179           if(value instanceof Date){
180             dateEx = new DateEx((Date)value);
181           } else {
182             dateEx = new DateEx(value, getReportDataSourceSpec().getPattern(getReportSpec().getDimensionFromIndex(i).getDataType().getType()));
183           }
184           value = SharedDate.newFrom(dateEx);
185           break;
186         default:
187           value = value.toString().trim().intern();//SharedString.newFrom(value.toString().trim());
188
break;
189       }
190     }catch(Exception JavaDoc e){
191       if(value==null){
192         value = "".intern();//SharedString.newFrom("");
193
}else{
194         value = value.toString().trim().intern();//SharedString.newFrom(value.toString().trim());
195
}
196     }
197     collection[i] = value;
198     return dimension.getValue(collection, getReportDataSourceSpec());
199   }
200
201 }
202
Popular Tags