boolean filtrarAtributoLivre = true;
Iterator itAtributos = atributosLivres.iterator();
//Filtrar pelos atributos livres definidos como filtros
while (itAtributos.hasNext() && filtrarAtributoLivre){
ObjetoDemanda atributoDemanda = (ObjetoDemanda) itAtributos.next();
SisGrupoAtributoSga grupoAtributo = atributoDemanda.iGetGrupoAtributosLivres();
String nomeCampo = "a" + (grupoAtributo!=null?grupoAtributo.getCodSga().toString():"");
String tipoCampo = grupoAtributo!=null?grupoAtributo.getSisTipoExibicGrupoSteg().getCodSteg().toString():"";
//Se for CheckBox ou RadioButton ou ListBox, nao procura em InformacaoIettSatb
if(tipoCampo.equals(SisTipoExibicGrupoDao.CHECKBOX) || tipoCampo.equals(SisTipoExibicGrupoDao.LISTBOX)
|| ( tipoCampo.equals(SisTipoExibicGrupoDao.COMBOBOX) )|| tipoCampo.equals(SisTipoExibicGrupoDao.RADIO_BUTTON)){
String[] atributos = null;
if (parametrosFiltroDemanda.get(nomeCampo) instanceof String) {
atributos = new String[1];
atributos[0] = (String)parametrosFiltroDemanda.get(nomeCampo);
} else {
atributos = (String[])parametrosFiltroDemanda.get(nomeCampo);
}
if (atributos== null || atributos.length==1) {
if(atributos!= null &&
!"".equals(atributos[0])){
if (!getSisAtributosRegDem(regDemandaRegd, grupoAtributo.getCodSga()).contains((SisAtributoSatb) this.buscar(SisAtributoSatb.class, Long.valueOf(Pagina.trocaNull(atributos[0]))))){
itRegDemandas.remove();
filtrarAtributoLivre = false;
retorno = true;
break;
}
}
} else {
boolean diferente = true;
boolean todosValoresVazio = true;
for (int i=0; i<atributos.length;i++) {
if (atributos[i]!=null && !"".equals(atributos[i])) {
if (diferente && !getSisAtributosRegDem(regDemandaRegd, grupoAtributo.getCodSga()).contains((SisAtributoSatb) this.buscar(SisAtributoSatb.class, Long.valueOf(atributos[i])))) {
diferente = true;
} else {
diferente = false;
}
todosValoresVazio = false;
}
}
if (diferente && !todosValoresVazio){
itRegDemandas.remove();
retorno = true;
}
}
}
//Se for TEXT Field ou TEXT AREA
else if (tipoCampo.equals(SisTipoExibicGrupoDao.TEXT) || tipoCampo.equals(SisTipoExibicGrupoDao.TEXTAREA)) {
if(parametrosFiltroDemanda.get(nomeCampo) != null){
String[] valores = null;
if (parametrosFiltroDemanda.get(nomeCampo) instanceof String) {
valores = new String[1];
valores[0] = (String)parametrosFiltroDemanda.get(nomeCampo);
} else {
valores = (String[])parametrosFiltroDemanda.get(nomeCampo);
}
if (valores[0]!=null && !"".equals(Pagina.trocaNull(valores[0]))) {
List atributosTextTextArea = getRegDemandaSisAtributoRegdSatbsRegd(regDemandaRegd, grupoAtributo.getCodSga());
if (atributosTextTextArea.size() == 0){
itRegDemandas.remove();
filtrarAtributoLivre = false;
retorno = true;
break;
}
Iterator itAtributosTextTextArea = atributosTextTextArea.iterator();
while (itAtributosTextTextArea.hasNext() && filtrarAtributoLivre){
DemAtributoDema demAtributoDema = (DemAtributoDema) itAtributosTextTextArea.next();
if (!demAtributoDema.getInformacao().toUpperCase().trim().contains((Pagina.trocaNull(valores[0])).toUpperCase().trim())){
itRegDemandas.remove();
filtrarAtributoLivre = false;
retorno = true;
break;
}
}
}
}
//Se for MULTITEXTO
} else if (tipoCampo.equals(SisTipoExibicGrupoDao.MULTITEXTO)) {
List lAtrib = new ArrayList();
if(parametrosFiltroDemanda.get("listaNomesAtributosRequest") != null)
lAtrib = (ArrayList) parametrosFiltroDemanda.get("listaNomesAtributosRequest");
Iterator lAtribIt = lAtrib.iterator();
while (lAtribIt.hasNext() && filtrarAtributoLivre) {
nomeCampo = Pagina.trocaNull(lAtribIt.next());
if (nomeCampo.startsWith("a" + grupoAtributo.getCodSga().toString())){
String[] valores = null;
if (parametrosFiltroDemanda.get(nomeCampo) instanceof String) {
valores = new String[1];
valores[0] = (String)parametrosFiltroDemanda.get(nomeCampo);
} else {
valores = (String[])parametrosFiltroDemanda.get(nomeCampo);
}
if(parametrosFiltroDemanda.get(nomeCampo) != null && valores[0]!=null &&
!"".equals(Pagina.trocaNull(valores[0]))){
String codSisAtrib = nomeCampo.substring(nomeCampo.lastIndexOf("_") + 1);
SisAtributoSatb sisAtributoSatb = (SisAtributoSatb) this.buscar(SisAtributoSatb.class, Long.valueOf(codSisAtrib));
List atributosMultiText = getRegDemandaSisAtributoRegdSatbsRegd(regDemandaRegd, grupoAtributo.getCodSga());
if (atributosMultiText.size() == 0 || !getSisAtributosRegDem(regDemandaRegd, grupoAtributo.getCodSga()).contains(sisAtributoSatb)){
itRegDemandas.remove();
filtrarAtributoLivre = false;
retorno = true;
break;
}
Iterator itAtributosMultiTexto = atributosMultiText.iterator();
while (itAtributosMultiTexto.hasNext() && filtrarAtributoLivre){
DemAtributoDema demAtributoDema = (DemAtributoDema) itAtributosMultiTexto.next();
if (demAtributoDema.getSisAtributoSatb().getCodSatb().toString().equals(codSisAtrib)){
if (!demAtributoDema.getInformacao().toUpperCase().trim().contains((Pagina.trocaNull(parametrosFiltroDemanda.get(nomeCampo))).toUpperCase().trim())){
itRegDemandas.remove();
filtrarAtributoLivre = false;
retorno = true;
break;
}
}
}
}
}
}
//Se for VALIDACAO
} else if (tipoCampo.equals(SisTipoExibicGrupoDao.VALIDACAO)) {
nomeCampo = "a" + grupoAtributo.getCodSga() + "_Inicio";
String filtroParametro = Pagina.trocaNull(parametrosFiltroDemanda.get(nomeCampo));
if(parametrosFiltroDemanda.get(nomeCampo) != null &&
!"".equals(Pagina.trocaNull(parametrosFiltroDemanda.get(nomeCampo)))){
List atributosValidacao = getRegDemandaSisAtributoRegdSatbsRegd(regDemandaRegd, grupoAtributo.getCodSga());
if (atributosValidacao.size() == 0){
itRegDemandas.remove();
filtrarAtributoLivre = false;
retorno = true;
break;
}
Iterator itAtributosValidacao = atributosValidacao.iterator();
while (itAtributosValidacao.hasNext() && filtrarAtributoLivre){
DemAtributoDema demAtributoDema = (DemAtributoDema) itAtributosValidacao.next();
if (demAtributoDema.getSisAtributoSatb().getAtribInfCompSatb().equals("dataScript")){
//Modifica as ordens de dia e m�s na data, para ficar no formato MM/DD/YYYY
filtroParametro =
filtroParametro.substring(3, filtroParametro.lastIndexOf("/")+1) +
filtroParametro.substring(0, filtroParametro.indexOf("/")+1) +
filtroParametro.substring(filtroParametro.lastIndexOf("/")+1);
Date dataFiltro = new Date(filtroParametro);
String valorAtribLivre = demAtributoDema.getInformacao();
//Modifica as ordens de dia e m�s na data, para ficar no formato MM/DD/YYYY
valorAtribLivre =
valorAtribLivre.substring(3, valorAtribLivre.lastIndexOf("/")+1) +
valorAtribLivre.substring(0, valorAtribLivre.indexOf("/")+1) +
valorAtribLivre.substring(valorAtribLivre.lastIndexOf("/")+1);
Date dataAtribLivre = new Date(valorAtribLivre);
//Remove da lista se a data estiver estiver fora do intervalo especificado no filtro
if (dataAtribLivre.compareTo(dataFiltro) < 0){
// itensRemovidos.add(regDemandaRegd.getCodRegd());
itRegDemandas.remove();
filtrarAtributoLivre = false;
retorno = true;
break;
}
} else if (demAtributoDema.getSisAtributoSatb().getAtribInfCompSatb().equals("numeroInteiroScript") ||
demAtributoDema.getSisAtributoSatb().getAtribInfCompSatb().equals("numeroRealScript") ||
demAtributoDema.getSisAtributoSatb().getAtribInfCompSatb().equals("valorMonetarioScript") ){
filtroParametro = filtroParametro.replace(".", "");
filtroParametro = filtroParametro.replace(",", ".");
BigDecimal valorFiltro = new BigDecimal(filtroParametro);
BigDecimal valorAtribLivre = new BigDecimal(demAtributoDema.getInformacao().replace(".", "").replace(",", "."));
//Remove da lista se a data estiver estiver fora do intervalo especificado no filtro
if (valorAtribLivre.doubleValue() < valorFiltro.doubleValue()){
// itensRemovidos.add(regDemandaRegd.getCodRegd());
itRegDemandas.remove();
filtrarAtributoLivre = false;
retorno = true;
break;
}
}
}
}
nomeCampo = "a" + grupoAtributo.getCodSga().toString() + "_Fim";
filtroParametro = Pagina.trocaNull(parametrosFiltroDemanda.get(nomeCampo));
if(parametrosFiltroDemanda.get(nomeCampo) != null &&
!"".equals(Pagina.trocaNull(parametrosFiltroDemanda.get(nomeCampo)))){
List atributosValidacao = getRegDemandaSisAtributoRegdSatbsRegd(regDemandaRegd, grupoAtributo.getCodSga());
if (atributosValidacao.size() == 0){
itRegDemandas.remove();
filtrarAtributoLivre = false;
retorno = true;
break;
}
Iterator itAtributosValidacao = atributosValidacao.iterator();
while (itAtributosValidacao.hasNext() && filtrarAtributoLivre){
DemAtributoDema demAtributoDema = (DemAtributoDema) itAtributosValidacao.next();
if (demAtributoDema.getSisAtributoSatb().getAtribInfCompSatb().equals("dataScript")){
//Modifica as ordens de dia e m�s na data, para ficar no formato MM/DD/YYYY
filtroParametro =
filtroParametro.substring(3, filtroParametro.lastIndexOf("/")+1) +
filtroParametro.substring(0, filtroParametro.indexOf("/")+1) +
filtroParametro.substring(filtroParametro.lastIndexOf("/")+1);
Date dataFiltro = new Date(filtroParametro);
String valorAtribLivre = demAtributoDema.getInformacao();
//Modifica as ordens de dia e m�s na data, para ficar no formato MM/DD/YYYY
valorAtribLivre =
valorAtribLivre.substring(3, valorAtribLivre.lastIndexOf("/")+1) +
valorAtribLivre.substring(0, valorAtribLivre.indexOf("/")+1) +
valorAtribLivre.substring(valorAtribLivre.lastIndexOf("/")+1);
Date dataAtribLivre = new Date(valorAtribLivre);
//Remove da lista se a data estiver estiver fora do intervalo especificado no filtro
if (dataAtribLivre.compareTo(dataFiltro) > 0){
// itensRemovidos.add(regDemandaRegd.getCodRegd());
itRegDemandas.remove();
filtrarAtributoLivre = false;
retorno = true;
break;
}
} else if (demAtributoDema.getSisAtributoSatb().getAtribInfCompSatb().equals("numeroInteiroScript") ||
demAtributoDema.getSisAtributoSatb().getAtribInfCompSatb().equals("numeroRealScript") ||
demAtributoDema.getSisAtributoSatb().getAtribInfCompSatb().equals("valorMonetarioScript") ){
filtroParametro = filtroParametro.replace(".", "");
filtroParametro = filtroParametro.replace(",", ".");
BigDecimal valorFiltro = new BigDecimal(filtroParametro);
BigDecimal valorAtribLivre = new BigDecimal(demAtributoDema.getInformacao().replace(".", "").replace(",", "."));
//Remove da lista se a data estiver estiver fora do intervalo especificado no filtro
if (valorAtribLivre.doubleValue() > valorFiltro.doubleValue()){
// itensRemovidos.add(regDemandaRegd.getCodRegd());
itRegDemandas.remove();
filtrarAtributoLivre = false;
retorno = true;
break;
}
}
}
}
nomeCampo ="a" + grupoAtributo.getCodSga();
String[] atributos = (String[]) parametrosFiltroDemanda.get(nomeCampo);
if(parametrosFiltroDemanda.get(nomeCampo) != null){
String[] valores = (String[])parametrosFiltroDemanda.get(nomeCampo);
if (valores[0]!=null && !"".equals(Pagina.trocaNull(valores[0]))) {
List atributosValidacao = getRegDemandaSisAtributoRegdSatbsRegd(regDemandaRegd, grupoAtributo.getCodSga());
if (atributosValidacao.size() == 0){
itRegDemandas.remove();
filtrarAtributoLivre = false;
retorno = true;