KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > com > calipso > reportgenerator > common > ReportFilter


1 package com.calipso.reportgenerator.common;
2
3 import com.calipso.reportgenerator.reportdefinitions.types.FilterDefinitionFilterTypeType;
4 import com.calipso.reportgenerator.reportcalculator.expression.*;
5 import com.calipso.reportgenerator.common.ReportSpec;
6 import com.calipso.reportgenerator.common.ReportFilterSpec;
7 import com.calipso.reportgenerator.common.ReportDimensionSpec;
8
9 import java.util.*;
10 import java.io.Serializable JavaDoc;
11
12 /**
13  * Es el filtro de un reporte. Incluye todos los filtros como una sola expreción. Se utiliza para evaluar en linea u obtener los textos(SQL,OQL) para filtrar otros origenes de datos
14  */

15
16 public class ReportFilter implements Serializable JavaDoc{
17
18   private ReportFilterSpec filterSpec;
19
20   /**
21    * Crea e inicializa un report filter
22    * @param filterSpec
23    */

24   public ReportFilter(ReportFilterSpec filterSpec) {
25     this.filterSpec = filterSpec;
26   }
27
28   /**
29    * Devuelve el filter definition
30    * @return
31    */

32   public ReportFilterSpec getFilterSpec() {
33     return filterSpec;
34   }
35
36   /**
37    * Devuelve una expression dependiendo del tipo de filtro
38    * @param paramValues Lista de parameters value para componer la exrescion
39    * @param mode Modo nombre de variables
40    * @return
41    */

42   public Expression getExpression(Map paramValues, int mode, ReportSpec reportSpec, ReportDataSourceSpec dataSourceSpec, ReportFilter reportFilter) throws InfoException{
43
44     switch (getFilterSpec().getFilterType().getType()) {
45       case FilterDefinitionFilterTypeType.RANGE_TYPE:
46         return getRangeExp(paramValues, mode, reportSpec, dataSourceSpec, reportFilter);
47       case FilterDefinitionFilterTypeType.GREATERTHAN_TYPE:
48         return getGraterThanExp(paramValues, mode, reportSpec, dataSourceSpec, reportFilter);
49       case FilterDefinitionFilterTypeType.LESSTHAN_TYPE:
50         return getLessThanExp(paramValues, mode, reportSpec, dataSourceSpec, reportFilter);
51       case FilterDefinitionFilterTypeType.EQUALTO_TYPE:
52         return getEqualToExp(paramValues, mode, reportSpec, dataSourceSpec, reportFilter);
53       case FilterDefinitionFilterTypeType.BEGINWITH_TYPE:
54         return getBeginWithExp(paramValues, mode, reportSpec, dataSourceSpec, reportFilter);
55       case FilterDefinitionFilterTypeType.ENDWITH_TYPE:
56         return getEndWithExp(paramValues, mode, reportSpec, dataSourceSpec, reportFilter);
57       case FilterDefinitionFilterTypeType.INCLUDES_TYPE:
58         return getIncludesExp(paramValues, mode, reportSpec, dataSourceSpec, reportFilter);
59       case FilterDefinitionFilterTypeType.IN_TYPE:
60         return getInExp(paramValues, mode, reportSpec, dataSourceSpec, reportFilter);
61       default:
62         return null;
63     }
64   }
65
66   private Expression getInExp(Map paramValues, int mode, ReportSpec reportSpec, ReportDataSourceSpec dataSourceSpec, ReportFilter reportFilter) throws InfoException{
67     ReportDimensionSpec dimensionSpec = reportSpec.getDimensionFromName(reportFilter.getFilterSpec().getDimensionName());
68     Collection values = getValues(mode,dataSourceSpec, dimensionSpec , paramValues.get(getParamKey("VALUES")).toString());
69     return new InExp(new VariableExp(getVariableName(mode, reportSpec)), values);
70   }
71
72   public Collection getValues(int mode, ReportDataSourceSpec data, ReportDimensionSpec dimensionSpec, String JavaDoc s) throws InfoException{
73     try{
74       return filterSpec.getValues(mode, data, dimensionSpec, s);
75     }catch (Exception JavaDoc e){
76       throw new InfoException("85",e);
77     }
78   }
79
80   /**
81    * Devuelve el nombre de la variable segun el modo que se la uitlizará
82    * @param mode Modo de uso
83    * @return
84    */

85   private Object JavaDoc getVariableName(int mode, ReportSpec reportSpec) {
86
87     //ReportSourceDimension reportSourceDimension = reportSource.getDimensionfromName(getFilterDefinition().getDimensionName());
88

89     ReportDimensionSpec dimensionSpec = reportSpec.getDimensionFromName(getFilterSpec().getDimensionName());
90     switch (mode) {
91       case ReportFilterBuilder.VARMODE_INDEX:
92         return new Integer JavaDoc(dimensionSpec.getReportSourceIndex());
93       case ReportFilterBuilder.VARMODE_DATAINDEX:
94         return new Integer JavaDoc(dimensionSpec.getDataSourceIndex());
95       case ReportFilterBuilder.VARMODE_NAME:
96         return dimensionSpec.getName();
97       case ReportFilterBuilder.VARMODE_EXTERNALDATA:
98         return dimensionSpec.getExternalData();
99     }
100     return null;
101   }
102
103   /**
104    * Devuelve el nombre del parámetro compuesto
105    * @param filterParam
106    * @return
107    */

108   private String JavaDoc getParamKey(String JavaDoc filterParam) {
109     return getFilterSpec().getName() + filterParam;
110   }
111
112   /**
113    * Devuelve un IncludesExp a partir de los valores de los parámetros
114    * @param paramValues
115    * @param mode Modo de uso de parámetros
116    * @return
117    */

118   private Expression getIncludesExp(Map paramValues, int mode, ReportSpec reportSpec, ReportDataSourceSpec dataSourceSpec, ReportFilter reportFilter ) {
119     ReportDimensionSpec dimensionSpec = reportSpec.getDimensionFromName(reportFilter.getFilterSpec().getDimensionName());
120     return new IncludesExp(new VariableExp(getVariableName(mode, reportSpec)), new ConstantExp(ReportFilterBuilder.getConstatValue(mode,paramValues.get(getParamKey("VALUE")), dataSourceSpec, dimensionSpec.getDataType().getType())));
121   }
122
123   /**
124    * Devuelve un EndWithExp a partir de los valores de los parámetros
125    * @param paramValues
126    * @param mode Modo de uso de parámetros
127    * @return
128    */

129   private Expression getEndWithExp(Map paramValues, int mode, ReportSpec reportSpec, ReportDataSourceSpec dataSourceSpec, ReportFilter reportFilter) {
130     ReportDimensionSpec dimensionSpec = reportSpec.getDimensionFromName(reportFilter.getFilterSpec().getDimensionName());
131     return new EndsWithExp(new VariableExp(getVariableName(mode, reportSpec)), new ConstantExp(ReportFilterBuilder.getConstatValue(mode,paramValues.get(getParamKey("VALUE")), dataSourceSpec, dimensionSpec.getDataType().getType())));
132   }
133
134   /**
135    * Devuelve un BeginWithExp a partir de los valores de los parámetros
136    * @param paramValues
137    * @param mode Modo de uso de parámetros
138    * @return
139    */

140
141   private Expression getBeginWithExp(Map paramValues, int mode, ReportSpec reportSpec, ReportDataSourceSpec dataSourceSpec, ReportFilter reportFilter) {
142     ReportDimensionSpec dimensionSpec = reportSpec.getDimensionFromName(reportFilter.getFilterSpec().getDimensionName());
143     return new BeginsWithExp(new VariableExp(getVariableName(mode, reportSpec)), new ConstantExp(ReportFilterBuilder.getConstatValue(mode,paramValues.get(getParamKey("VALUE")), dataSourceSpec, dimensionSpec.getDataType().getType())));
144   }
145
146   /**
147    * Devuelve un EqualToExp a partir de los valores de los parámetros
148    * @param paramValues
149    * @param mode Modo de uso de parámetros
150    * @return
151    */

152   private Expression getEqualToExp(Map paramValues, int mode, ReportSpec reportSpec, ReportDataSourceSpec dataSourceSpec, ReportFilter reportFilter) {
153     ReportDimensionSpec dimensionSpec = reportSpec.getDimensionFromName(reportFilter.getFilterSpec().getDimensionName());
154     return new EqualTo(new VariableExp(getVariableName(mode, reportSpec)), new ConstantExp(ReportFilterBuilder.getConstatValue(mode,paramValues.get(getParamKey("VALUE")), dataSourceSpec, dimensionSpec.getDataType().getType())));
155   }
156
157   /**
158    * Devuelve un LessThanExp a partir de los valores de los parámetros
159    * @param paramValues
160    * @param mode Modo de uso de parámetros
161    * @return
162    */

163   private Expression getLessThanExp(Map paramValues, int mode, ReportSpec reportSpec, ReportDataSourceSpec dataSourceSpec, ReportFilter reportFilter) {
164     ReportDimensionSpec dimensionSpec = reportSpec.getDimensionFromName(reportFilter.getFilterSpec().getDimensionName());
165     return new LessThan(new VariableExp(getVariableName(mode, reportSpec)), new ConstantExp(ReportFilterBuilder.getConstatValue(mode,paramValues.get(getParamKey("VALUE")), dataSourceSpec, dimensionSpec.getDataType().getType())));
166   }
167
168   /**
169    * Devuelve un GraterThanExp a partir de los valores de los parámetros
170    * @param paramValues
171    * @param mode Modo de uso de parámetros
172    * @return
173    */

174   private Expression getGraterThanExp(Map paramValues, int mode, ReportSpec reportSpec, ReportDataSourceSpec dataSourceSpec, ReportFilter reportFilter) {
175     ReportDimensionSpec dimensionSpec = reportSpec.getDimensionFromName(reportFilter.getFilterSpec().getDimensionName());
176     return new GreaterThan(new VariableExp(getVariableName(mode, reportSpec)), new ConstantExp(ReportFilterBuilder.getConstatValue(mode,paramValues.get(getParamKey("VALUE")), dataSourceSpec, dimensionSpec.getDataType().getType())));
177   }
178
179   /**
180    * Devuelve un RangeExp a partir de los valores de los parámetros
181    * @param paramValues
182    * @param mode Modo de uso de parámetros
183    * @return
184    */

185   private Expression getRangeExp(Map paramValues, int mode, ReportSpec reportSpec, ReportDataSourceSpec dataSourceSpec, ReportFilter reportFilter) {
186     ReportDimensionSpec dimensionSpec = reportSpec.getDimensionFromName(reportFilter.getFilterSpec().getDimensionName());
187     String JavaDoc fromKey = getParamKey("FROM");
188     Expression subexp1 = new VariableExp(getVariableName(mode, reportSpec)).newGreaterOrEqualTo(new ConstantExp(ReportFilterBuilder.getConstatValue(mode,paramValues.get(fromKey), dataSourceSpec, dimensionSpec.getDataType().getType())));
189     String JavaDoc toKey = getParamKey("TO");
190     Expression subexp2 = new VariableExp(getVariableName(mode, reportSpec)).newLessOrEquealTo(new ConstantExp(ReportFilterBuilder.getConstatValue(mode,paramValues.get(toKey), dataSourceSpec, dimensionSpec.getDataType().getType())));
191     return subexp1.newAnd(subexp2);
192   }
193 }
194
Popular Tags