List<SearchCriteriaLogicProduct> andCriteriaListAssicurazioni = new ArrayList<SearchCriteriaLogicProduct>();
List<SearchCriteriaLogicProduct> andCriteriaListPolizze = new ArrayList<SearchCriteriaLogicProduct>();
String tipoAssicurazione = "";
String flagPbb = "";
for (SearchCriteriaLogicProduct sclp : andCriteriaList) {
SearchCriteriaLogicProduct sclpAssicurazioni = new SearchCriteriaLogicProduct();
SearchCriteriaLogicProduct sclpPolizze = new SearchCriteriaLogicProduct();
List<SearchCriteria> scAssicurazioni = new ArrayList<SearchCriteria>();
List<SearchCriteria> scPolizze = new ArrayList<SearchCriteria>();
for (SearchCriteria sc : sclp.getSearchCriteriaList()) {
// System.out.println("criteria : " + sc.getSimpleExpression());
if (((SearchCriteriaWithEntity) sc).getEntity() == Assicurazione.class) {
scAssicurazioni.add(sc);
if("tipoAssicurazione".equals(sc.getCampo())){
tipoAssicurazione = (String)sc.getValore();
}
}else if(((SearchCriteriaWithEntity) sc).getEntity() == ConvPolizzeAss.class){
//sulla convPolizze non filtro per flagPBB, ma filtrer� poi via java, altrimenti non si riesce a fare la right join
if("flagPbb".equals(sc.getCampo())){
flagPbb = (String)sc.getValore();
}else{
scPolizze.add(sc);
}
}
}
if(scAssicurazioni.size()>0){
sclpAssicurazioni.setSearchCriteriaList(scAssicurazioni);
andCriteriaListAssicurazioni.add(sclpAssicurazioni);
}
if(scPolizze.size()>0){
sclpPolizze.setSearchCriteriaList(scPolizze);
andCriteriaListPolizze.add(sclpPolizze);
}
}
List<Assicurazione> result = gestionePraticaDao.findPolizzeByCriteria(andCriteriaListAssicurazioni);
// se l'assicurazione � di tipo incendio devo fare la left join da programma con la tabella convPolizzaAss