package com.calipso.reportgenerator.userinterface;
import com.calipso.reportgenerator.reportdefinitions.types.FilterDefinitionFilterTypeType;
import com.calipso.reportgenerator.common.LanguageTraslator;
import com.calipso.reportgenerator.common.ReportSpec;
import com.calipso.reportgenerator.common.ReportFilterSpec;
import java.util.*;
/**
* Representa la coleccion de elementos editables
*/
public class UserParametersCollection {
private static final int FROM_TO = 0;
private static final int FROM_QUANTITY = 1;
private static final int VALUE = 2;
private ReportSpec reportSpec;
private Vector userParametersCollection;
/**
* Inicializa una instancia de UserParametersCollection
* @param reportSpec Es necesario para la creacion de la coleccion
*/
public UserParametersCollection(ReportSpec reportSpec){
this.reportSpec = reportSpec;
}
/**
* Llena un vector segun los parametros editables, que contiene objetos de tipo
* UserPameterElement
*/
private void fillVisibleFilterDefinitionsVector(){
Collection filterCol = reportSpec.getEditFilterSpecs();
for(Iterator filterColIterator = filterCol.iterator() ; filterColIterator.hasNext() ; ){
ReportFilterSpec filterDefinition = (ReportFilterSpec) filterColIterator.next();
if(filterDefinition.getVisual()){
switch(filterDefinition.getFilterType().getType()){
case FilterDefinitionFilterTypeType.RANGE_TYPE:
userParametersCollection.add(initializeElement(FROM_TO, filterDefinition));
break;
case FilterDefinitionFilterTypeType.EQUALTO_TYPE:
userParametersCollection.add(initializeElement(VALUE, filterDefinition));
break;
case FilterDefinitionFilterTypeType.GREATERTHAN_TYPE:
userParametersCollection.add(initializeElement(VALUE, filterDefinition));
break;
case FilterDefinitionFilterTypeType.LESSTHAN_TYPE:
userParametersCollection.add(initializeElement(VALUE, filterDefinition));
break;
case FilterDefinitionFilterTypeType.BEGINWITH_TYPE:
userParametersCollection.add(initializeElement(VALUE, filterDefinition));
break;
case FilterDefinitionFilterTypeType.ENDWITH_TYPE:
userParametersCollection.add(initializeElement(VALUE, filterDefinition));
break;
case FilterDefinitionFilterTypeType.RANKING_TYPE:
userParametersCollection.add(initializeElement(VALUE, filterDefinition));
break; //TODO este sector nunca es utilizado
}
}
}
}
/**
* Genera y devuelve un UserParameterElement dependiendo del tipo
* @param type indica si es Range, Top, o value
* @param filterDefinition FilterDefinition necesario para generar el UserParameterElement
* @return UserParameterElement recientemente creado
*/
private UserParameterElement initializeElement(int type, ReportFilterSpec filterDefinition){
Hashtable values = new Hashtable();
Vector keysOrder = new Vector();
UserParameterElement userParameterElement = null;
String description = reportSpec.getDimensionFromName(filterDefinition.getDimensionName()).getCaption();
String filterDefinitionName = filterDefinition.getName();
switch(type){
case FROM_TO:
keysOrder.add(LanguageTraslator.traslate("146"));
keysOrder.add(LanguageTraslator.traslate("147"));
values.put(LanguageTraslator.traslate("146"), reportSpec.getParamValues(false).get(filterDefinition.getName()+"FROM").toString());
values.put(LanguageTraslator.traslate("147"), reportSpec.getParamValues(false).get(filterDefinition.getName()+"TO").toString());
userParameterElement = new UserParameterElement(description, values, keysOrder, filterDefinitionName, filterDefinition.getDimensionName(), reportSpec);
break;
case FROM_QUANTITY:
keysOrder.add(LanguageTraslator.traslate("146"));
keysOrder.add(LanguageTraslator.traslate("149"));
values.put(LanguageTraslator.traslate("146"), reportSpec.getParamValues(false).get(filterDefinition.getName()+"FROM").toString());
values.put(LanguageTraslator.traslate("149"), reportSpec.getParamValues(false).get(filterDefinition.getName()+"QUANTITY").toString());
userParameterElement = new UserParameterElement(description, values, keysOrder, filterDefinitionName, filterDefinition.getDimensionName(), reportSpec);
break;
case VALUE:
keysOrder.add(LanguageTraslator.traslate("150"));
values.put(LanguageTraslator.traslate("150"), reportSpec.getParamValues(false).get(filterDefinition.getName()+"VALUE").toString());
userParameterElement = new UserParameterElement(description, values, keysOrder, filterDefinitionName, filterDefinition.getDimensionName(), reportSpec);
break;
}
return userParameterElement;
}
/**
* Crea un Vector y lo inicializa con los UserParameterElement determinados
* @return
*/
public Vector getUserParametersCollection(){
if(userParametersCollection == null){
userParametersCollection = new Vector();
fillVisibleFilterDefinitionsVector();
}
return userParametersCollection;
}
}
|