KickJava   Java API By Example, From Geeks To Geeks.

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


1 package com.calipso.reportgenerator.common;
2
3 import com.calipso.reportgenerator.reportdefinitions.FilterDefinition;
4 import com.calipso.reportgenerator.reportdefinitions.types.FilterDefinitionFilterTypeType;
5 import com.calipso.reportgenerator.reportdefinitions.types.ReportDataType;
6 import com.calipso.reportgenerator.reportdefinitions.types.ParameterValueFilterParameterType;
7 import com.calipso.reportgenerator.reportcalculator.SharedDate;
8 import com.calipso.reportgenerator.reportcalculator.SharedInteger;
9 import com.calipso.reportgenerator.reportcalculator.SharedFloat;
10 import com.calipso.reportgenerator.reportcalculator.SharedString;
11 import com.calipso.common.DateEx;
12
13 import java.io.Serializable JavaDoc;
14 import java.util.*;
15
16 /**
17  * Esta clase representa a una definición de filtro y tiene los métodos necesarios para su construcción y evaluación
18  * Se utiliza tanto para los pre-filtros como para los post-filtros
19  */

20
21 public class ReportFilterSpec implements Serializable JavaDoc {
22   private String JavaDoc name;
23   private String JavaDoc dimensionName;
24   private FilterDefinitionFilterTypeType filterType;
25   private boolean visual;
26   private ReportDataType dataType;
27
28   /**
29    * Inicializa los atributos a partir de un FilterDefinition
30    * @param definition
31    */

32
33   public void fillFrom(FilterDefinition definition) {
34     this.name = definition.getName();
35     this.dimensionName = definition.getDimensionName();
36     this.filterType = definition.getFilterType();
37     this.visual = definition.getVisual();
38     this.dataType = definition.getDataType();
39   }
40
41   /**
42    * Devuelve el nombre del filtro
43    * @return
44    */

45   public String JavaDoc getName() {
46     return name;
47   }
48
49   /**
50    * Asigna el nombre del filtro
51    * @param name
52    */

53   public void setName(String JavaDoc name) {
54     this.name = name;
55   }
56
57   /**
58    * Devuelve el nombre de la dimensión a la que se le desean filtrar los valores
59    * @return
60    */

61   public String JavaDoc getDimensionName() {
62     return dimensionName;
63   }
64
65   /**
66    * Asigna el nombre de la dimensión a la que se le desean filtrar los valores
67    * @param dimensionName
68    */

69   public void setDimensionName(String JavaDoc dimensionName) {
70     this.dimensionName = dimensionName;
71   }
72
73   /**
74    * Devuelve el tipo de dato de el filtro si existe
75    * @return
76    */

77   public ReportDataType getDataType() {
78     return dataType;
79   }
80
81   /**
82    * Setea el tipo de dato del filtro
83    * @param dataType
84    */

85   public void setDataType(ReportDataType dataType) {
86     this.dataType = dataType;
87   }
88
89   /**
90    * Deveulve el tipo de filtro (Rango, mayor que, etc)
91    * @return
92    */

93   public FilterDefinitionFilterTypeType getFilterType() {
94     return filterType;
95   }
96
97   /**
98    * Asigna el tipo de filtro
99    * @param filterType
100    */

101   public void setFilterType(FilterDefinitionFilterTypeType filterType) {
102     this.filterType = filterType;
103   }
104
105   /**
106    * Devuelve verdadero si los valores de los parámetros de este filtro seben ser preguntados al usuario
107    * @return
108    */

109   public boolean getVisual() {
110     return visual;
111   }
112
113   /**
114    * Especifica si los valores de los parámetros de este filtro seben ser preguntados al usuario
115    * @param visual
116    */

117   public void setVisual(boolean visual) {
118     this.visual = visual;
119   }
120
121   public List getParamNames() {
122     List result = new ArrayList();
123     switch (getFilterType().getType()) {
124       case FilterDefinitionFilterTypeType.BEGINWITH_TYPE:
125       case FilterDefinitionFilterTypeType.ENDWITH_TYPE:
126       case FilterDefinitionFilterTypeType.EQUALTO_TYPE:
127       case FilterDefinitionFilterTypeType.GREATERTHAN_TYPE:
128       case FilterDefinitionFilterTypeType.INCLUDES_TYPE:
129       case FilterDefinitionFilterTypeType.LESSTHAN_TYPE:
130       case FilterDefinitionFilterTypeType.RANKING_TYPE:
131         result.add(getName() + ParameterValueFilterParameterType.VALUE.toString());
132         break;
133       case FilterDefinitionFilterTypeType.RANGE_TYPE:
134         result.add(getName() + ParameterValueFilterParameterType.FROM.toString());
135         result.add(getName() + ParameterValueFilterParameterType.TO.toString());
136         break;
137       case FilterDefinitionFilterTypeType.IN_TYPE:
138         result.add(getName() + ParameterValueFilterParameterType.VALUES.toString());
139         break;
140       case FilterDefinitionFilterTypeType.EXCLUDEGROUP_TYPE:
141         result.add(getName() + ParameterValueFilterParameterType.VALUE.toString());
142         result.add(getName() + ParameterValueFilterParameterType.OPERATION.toString());
143         result.add(getName() + ParameterValueFilterParameterType.FROM.toString());
144         result.add(getName() + ParameterValueFilterParameterType.TO.toString());
145         result.add(getName() + ParameterValueFilterParameterType.OBLIGATORYVALUE.toString());
146     }
147     return result;
148   }
149
150   public boolean includesParam(String JavaDoc paramName) {
151     return getParamNames().indexOf(paramName) != -1;
152   }
153
154   public Collection getValues(int mode, ReportDataSourceSpec data, ReportDimensionSpec dimensionSpec, String JavaDoc s) throws Exception JavaDoc{
155     StringTokenizer tok = new StringTokenizer(s, "'");
156     Collection values = new HashSet();
157     while(tok.hasMoreTokens()){
158       String JavaDoc current = "";
159       current = tok.nextToken().trim();
160       if(current.indexOf(",")==0){
161         current = tok.nextToken();
162       }
163       values.add(getInValue(mode, current, data, dimensionSpec));
164     }
165     return values;
166   }
167
168   private Object JavaDoc getInValue(int mode, String JavaDoc s, ReportDataSourceSpec dataSourceSpec, ReportDimensionSpec dimensionSpec) throws Exception JavaDoc{
169     Object JavaDoc result = s;
170     switch(dimensionSpec.getDataType().getType()){
171       case ReportDataType.DATETIME_TYPE:
172       case ReportDataType.DATE_TYPE:
173         if(dimensionSpec!=null){ //dataSourceSpec!=null){
174
result = SharedDate.newFrom(new DateEx(s, dataSourceSpec.getPattern(dimensionSpec.getDataType().getType())));
175         }/*else{
176           result = SharedDate.newFrom(new DateEx(s, "", ""));
177         } */

178         break;
179       case ReportDataType.STRING_TYPE:
180         result = s.intern();//SharedString.newFrom(s);
181
break;
182       case ReportDataType.INTEGER_TYPE:
183         result = SharedInteger.newFrom(Integer.valueOf(s));
184         break;
185       case ReportDataType.FLOAT_TYPE:
186         result = SharedFloat.newFrom(Float.valueOf(s));
187         break;
188       case ReportDataType.BOOLEAN_TYPE:
189         result = Boolean.valueOf(s);
190         break;
191     }
192     if(mode == ReportFilterBuilder.VARMODE_EXTERNALDATA){
193       return ReportFilterBuilder.getExternalData(result, dataSourceSpec, dimensionSpec.getDataType().getType());
194     }else{
195       return result;
196     }
197   }
198
199 }
200
Popular Tags