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 ; 14 import java.util.*; 15 16 20 21 public class ReportFilterSpec implements Serializable { 22 private String name; 23 private String dimensionName; 24 private FilterDefinitionFilterTypeType filterType; 25 private boolean visual; 26 private ReportDataType dataType; 27 28 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 45 public String getName() { 46 return name; 47 } 48 49 53 public void setName(String name) { 54 this.name = name; 55 } 56 57 61 public String getDimensionName() { 62 return dimensionName; 63 } 64 65 69 public void setDimensionName(String dimensionName) { 70 this.dimensionName = dimensionName; 71 } 72 73 77 public ReportDataType getDataType() { 78 return dataType; 79 } 80 81 85 public void setDataType(ReportDataType dataType) { 86 this.dataType = dataType; 87 } 88 89 93 public FilterDefinitionFilterTypeType getFilterType() { 94 return filterType; 95 } 96 97 101 public void setFilterType(FilterDefinitionFilterTypeType filterType) { 102 this.filterType = filterType; 103 } 104 105 109 public boolean getVisual() { 110 return visual; 111 } 112 113 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 paramName) { 151 return getParamNames().indexOf(paramName) != -1; 152 } 153 154 public Collection getValues(int mode, ReportDataSourceSpec data, ReportDimensionSpec dimensionSpec, String s) throws Exception { 155 StringTokenizer tok = new StringTokenizer(s, "'"); 156 Collection values = new HashSet(); 157 while(tok.hasMoreTokens()){ 158 String 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 getInValue(int mode, String s, ReportDataSourceSpec dataSourceSpec, ReportDimensionSpec dimensionSpec) throws Exception { 169 Object result = s; 170 switch(dimensionSpec.getDataType().getType()){ 171 case ReportDataType.DATETIME_TYPE: 172 case ReportDataType.DATE_TYPE: 173 if(dimensionSpec!=null){ result = SharedDate.newFrom(new DateEx(s, dataSourceSpec.getPattern(dimensionSpec.getDataType().getType()))); 175 } 178 break; 179 case ReportDataType.STRING_TYPE: 180 result = s.intern(); 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 |