Eu to com um problema aqui, na hora de fazer um filtro para uma listagem.
O filtro é mais ou menos isso.
if (parameter.equals("aberta")) {
statusParaComparar = Ocorrencia.COMPLETA;
}
if (parameter.equals("fechada")) {
statusParaComparar = Ocorrencia.FECHADA ;
}
if (parameter.equals("emAtendimento")) {
statusParaComparar = Ocorrencia.EMATENDIMENTO;
}
if (parameter.equals("")) {
statusParaComparar = ocorrencia.getStatus();
}
Esse filtro funcionava normalmente. Mas agora surgiu um problema, pq quando ele for igual a fechada ele nao vai mostrar somente as ocorrencias q tem seu status como FECHADA e tbm CANCELADA e DUPLICADA. Mas se eu colocar assim dentro do if
Ele vai pegar apenas as que estao DUPLICADA pois eh a ultima linha. Alguem sabe uma maneira pra eu fazer esse filtro de maneira correta? No caso de ser fechada, mostrar tds as ocorrencias q possuem esses 3 status.
Você tem duas alternativas, ou faz com que o atributo statusParaComparar seja uma coleção de valores, daí você pode sair fazendo add de parâmetros e depois verificar se um determinado parâmetro consta na coleção. Uma outra saída seria você usar os operadores bit a bit (como por exemplo você faz para checar se a tecla control ou shift estão pressionadas quando implementa um KeyListener). Ex:
A idéia por trás dessa implementação é que um inteiro possui 4 bytes, ou seja, 32 bits, porém, você pode usar cada um desses bits para sinalizar um estado diferente. Inclusive, você pode usar o mesmo inteiro para representar vários estados (até 32) simultâneamente. Para isto, basta utilizar algumas operações bit a bit. Caso você precise de mais constantes combinadas você pude usar um long, que possui 64 bits.
AlanLojudice
Nossa senhora…rs Não tem uma maneira mais simples não?rs
Pensei que podia ser alguma coisa de sintaxe soh…
Ataxexe
Você pode mudar a variável statusParaComparar para um array ou vetor caso não queira usar a solução do brunogamacatao, que é uma solução muito bacana e passível de ser generalizada (se usada com BigInteger você pode expandir mais ainda a gama de valores).
AlanLojudice
Nossa to meio perdido de como fazer isso com o array.
Teria como alguem me dar uma ajuda nisso...
O metodo eh esse aqui.
Esses status da ocorrencia eu venho buscando de outra classe...ai por isso meio q me perdi...
Se alguem poder me ajudar como fazer com array agradeco..
valeu
brunogamacatao
Monta na tua página o parâmetro status como um String com os n estados que ele possa ter separados por vírgula (não sei como esse parâmetro é construído na página).
Daí você pode criar um pequeno método para verificar se há uma ocorrência de um string dentro do string de status. Ex: