boolean filtrarAtributoLivre = true;
Iterator itAtributos = atributosLivres.iterator();
//Filtrar pelos atributos livres definidos como filtros
while (itAtributos.hasNext() && filtrarAtributoLivre){
ObjetoEstrutura objetoEstrutura = (ObjetoEstrutura) itAtributos.next();
SisGrupoAtributoSga grupoAtributo = objetoEstrutura.iGetGrupoAtributosLivres();
String nomeCampo = codEtt + "_a" + grupoAtributo.getCodSga();
String tipoCampo = grupoAtributo.getSisTipoExibicGrupoSteg().getCodSteg().toString();
//Se for CheckBox ou RadioButton ou ListBox, n�o procura em InformacaoIettSatb
if(tipoCampo.equals(SisTipoExibicGrupoDao.CHECKBOX) || tipoCampo.equals(SisTipoExibicGrupoDao.LISTBOX)){
String[] atributos = request.getParameterValues(nomeCampo);
int numAtributos = 0;
if (atributos != null) {
numAtributos = atributos.length;
}
for(int i = 0; i < numAtributos && filtrarAtributoLivre; i++){
boolean diferente = true;
List listaSisAtributosIett = itemEstruturaDao.getSisAtributosIett(iett, grupoAtributo.getCodSga());
if (diferente && listaSisAtributosIett!= null && !listaSisAtributosIett.contains((SisAtributoSatb) this.buscar(SisAtributoSatb.class, Long.valueOf(atributos[i])))){
diferente = true;
} else {
diferente = false;
}
if (diferente) {
itensRemovidos.add(iett.getCodIett());
itItensEstrutura.remove();
filtrarAtributoLivre = false;
retorno = true;
break;
}
}
}
//Se for Radio Button...
else if(tipoCampo.equals(SisTipoExibicGrupoDao.RADIO_BUTTON) || tipoCampo.equals(SisTipoExibicGrupoDao.COMBOBOX)){
String[] atributos = request.getParameterValues(nomeCampo);
if (atributos== null || atributos.length==1) {
if(!"".equals(Pagina.getParamStr(request, nomeCampo))){
List listaSisAtributosIett = itemEstruturaDao.getSisAtributosIett(iett, grupoAtributo.getCodSga());
if (listaSisAtributosIett== null || !listaSisAtributosIett.contains((SisAtributoSatb) this.buscar(SisAtributoSatb.class, Long.valueOf(Pagina.getParamStr(request, nomeCampo))))){
itensRemovidos.add(iett.getCodIett());
itItensEstrutura.remove();
filtrarAtributoLivre = false;
retorno = true;
break;
}
}
} else {
boolean diferente = true;
for (int i=0; i<atributos.length;i++) {
if (!"".equals(atributos[i])) {
List listaSisAtributosIett = itemEstruturaDao.getSisAtributosIett(iett, grupoAtributo.getCodSga());
if (diferente && listaSisAtributosIett!= null && !listaSisAtributosIett.contains((SisAtributoSatb) this.buscar(SisAtributoSatb.class, Long.valueOf(atributos[i])))) {
diferente = true;
} else {
diferente = false;
}
}
}
// se o valor do atributo livre for diferente em rela��o a todos valores escolhidos pelo usuario
if (diferente){
itensRemovidos.add(iett.getCodIett());
itItensEstrutura.remove();
filtrarAtributoLivre = false;
retorno = true;
break;
}
}
}
//Se for TEXT Field ou TEXT AREA
else if (tipoCampo.equals(SisTipoExibicGrupoDao.TEXT) || tipoCampo.equals(SisTipoExibicGrupoDao.TEXTAREA)) {
if(!"".equals(Pagina.getParamStr(request, nomeCampo))){
List atributosTextTextArea = itemEstruturaDao.getItemEstruturaSisAtributoIettSatbsIett(iett, grupoAtributo.getCodSga());
if (atributosTextTextArea.size() == 0){
itensRemovidos.add(iett.getCodIett());
itItensEstrutura.remove();
filtrarAtributoLivre = false;
retorno = true;
break;
}
Iterator itAtributosTextTextArea = atributosTextTextArea.iterator();
while (itAtributosTextTextArea.hasNext() && filtrarAtributoLivre){
ItemEstruturaSisAtributoIettSatb itemEstruturaSisAtributoIettSatb = (ItemEstruturaSisAtributoIettSatb) itAtributosTextTextArea.next();
if (!itemEstruturaSisAtributoIettSatb.getInformacao().toUpperCase().trim().contains(Pagina.getParamStr(request, nomeCampo).toUpperCase().trim())){
itensRemovidos.add(iett.getCodIett());
itItensEstrutura.remove();
filtrarAtributoLivre = false;
retorno = true;
break;
}
}
}
//Se for MULTITEXTO
} else if (tipoCampo.equals(SisTipoExibicGrupoDao.MULTITEXTO)) {
Enumeration lAtrib = request.getParameterNames();
while (lAtrib.hasMoreElements() && filtrarAtributoLivre) {
nomeCampo = (String) lAtrib.nextElement();
if (nomeCampo.startsWith(codEtt + "_a" + grupoAtributo.getCodSga().toString())){
if(!"".equals(Pagina.getParamStr(request, nomeCampo))){
String codSisAtrib = nomeCampo.substring(nomeCampo.lastIndexOf("_") + 1);
SisAtributoSatb sisAtributoSatb = (SisAtributoSatb) this.buscar(SisAtributoSatb.class, Long.valueOf(codSisAtrib));
List atributosMultiText = itemEstruturaDao.getItemEstruturaSisAtributoIettSatbsIett(iett, grupoAtributo.getCodSga());
if (atributosMultiText.size() == 0 || !itemEstruturaDao.getSisAtributosIett(iett, grupoAtributo.getCodSga()).contains(sisAtributoSatb)){
itensRemovidos.add(iett.getCodIett());
itItensEstrutura.remove();
filtrarAtributoLivre = false;
retorno = true;
break;
}
Iterator itAtributosMultiTexto = atributosMultiText.iterator();
while (itAtributosMultiTexto.hasNext() && filtrarAtributoLivre){
ItemEstruturaSisAtributoIettSatb itemEstruturaSisAtributoIettSatb = (ItemEstruturaSisAtributoIettSatb) itAtributosMultiTexto.next();
if (itemEstruturaSisAtributoIettSatb.getSisAtributoSatb().getCodSatb().toString().equals(codSisAtrib)){
if (!itemEstruturaSisAtributoIettSatb.getInformacao().toUpperCase().trim().contains(Pagina.getParamStr(request, nomeCampo).toUpperCase().trim())){
itensRemovidos.add(iett.getCodIett());
itItensEstrutura.remove();
filtrarAtributoLivre = false;
retorno = true;
break;
}
}
}
}
}
}
//Se for VALIDACAO
} else if (tipoCampo.equals(SisTipoExibicGrupoDao.VALIDACAO)) {
nomeCampo = codEtt + "_a" + grupoAtributo.getCodSga() + "_Inicio";
String filtroParametro = Pagina.getParamStr(request, nomeCampo);
if(!"".equals(Pagina.getParamStr(request, nomeCampo))){
List atributosValidacao = itemEstruturaDao.getItemEstruturaSisAtributoIettSatbsIett(iett, grupoAtributo.getCodSga());
if (atributosValidacao.size() == 0){
itensRemovidos.add(iett.getCodIett());
itItensEstrutura.remove();
filtrarAtributoLivre = false;
retorno = true;
break;
}
Iterator itAtributosValidacao = atributosValidacao.iterator();
while (itAtributosValidacao.hasNext() && filtrarAtributoLivre){
ItemEstruturaSisAtributoIettSatb itemEstruturaSisAtributoIettSatb = (ItemEstruturaSisAtributoIettSatb) itAtributosValidacao.next();
if (itemEstruturaSisAtributoIettSatb.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 = itemEstruturaSisAtributoIettSatb.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(iett.getCodIett());
itItensEstrutura.remove();
filtrarAtributoLivre = false;
retorno = true;
break;
}
} else if (itemEstruturaSisAtributoIettSatb.getSisAtributoSatb().getAtribInfCompSatb().equals("numeroInteiroScript") ||
itemEstruturaSisAtributoIettSatb.getSisAtributoSatb().getAtribInfCompSatb().equals("numeroRealScript") ||
itemEstruturaSisAtributoIettSatb.getSisAtributoSatb().getAtribInfCompSatb().equals("valorMonetarioScript") ){
BigDecimal valorFiltro = new BigDecimal(filtroParametro);
BigDecimal valorAtribLivre = new BigDecimal(itemEstruturaSisAtributoIettSatb.getInformacao());
//Remove da lista se a data estiver estiver fora do intervalo especificado no filtro
if (valorAtribLivre.doubleValue() < valorFiltro.doubleValue()){
itensRemovidos.add(iett.getCodIett());
itItensEstrutura.remove();
filtrarAtributoLivre = false;
retorno = true;
break;
}
}
}
}
nomeCampo = codEtt + "_a" + grupoAtributo.getCodSga() + "_Fim";
filtroParametro = Pagina.getParamStr(request, nomeCampo);
if(!"".equals(Pagina.getParamStr(request, nomeCampo))){
List atributosValidacao = itemEstruturaDao.getItemEstruturaSisAtributoIettSatbsIett(iett, grupoAtributo.getCodSga());
if (atributosValidacao.size() == 0){
itensRemovidos.add(iett.getCodIett());
itItensEstrutura.remove();
filtrarAtributoLivre = false;
retorno = true;
break;
}
Iterator itAtributosValidacao = atributosValidacao.iterator();
while (itAtributosValidacao.hasNext() && filtrarAtributoLivre){
ItemEstruturaSisAtributoIettSatb itemEstruturaSisAtributoIettSatb = (ItemEstruturaSisAtributoIettSatb) itAtributosValidacao.next();
if (itemEstruturaSisAtributoIettSatb.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 = itemEstruturaSisAtributoIettSatb.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(iett.getCodIett());
itItensEstrutura.remove();
filtrarAtributoLivre = false;
retorno = true;
break;
}
} else if (itemEstruturaSisAtributoIettSatb.getSisAtributoSatb().getAtribInfCompSatb().equals("numeroInteiroScript") ||
itemEstruturaSisAtributoIettSatb.getSisAtributoSatb().getAtribInfCompSatb().equals("numeroRealScript") ||
itemEstruturaSisAtributoIettSatb.getSisAtributoSatb().getAtribInfCompSatb().equals("valorMonetarioScript") ){
BigDecimal valorFiltro = new BigDecimal(filtroParametro);
BigDecimal valorAtribLivre = new BigDecimal(itemEstruturaSisAtributoIettSatb.getInformacao());
//Remove da lista se a data estiver estiver fora do intervalo especificado no filtro
if (valorAtribLivre.doubleValue() > valorFiltro.doubleValue()){
itensRemovidos.add(iett.getCodIett());
itItensEstrutura.remove();
filtrarAtributoLivre = false;
retorno = true;
break;
}
}
}
}
nomeCampo = codEtt + "_a" + grupoAtributo.getCodSga();
filtroParametro = Pagina.getParamStr(request, nomeCampo);
if(!"".equals(Pagina.getParamStr(request, nomeCampo))){
List atributosValidacao = itemEstruturaDao.getItemEstruturaSisAtributoIettSatbsIett(iett, grupoAtributo.getCodSga());
if (atributosValidacao.size() == 0){
itensRemovidos.add(iett.getCodIett());
itItensEstrutura.remove();
filtrarAtributoLivre = false;