package gcom.gui.micromedicao.hidrometro;
import gcom.fachada.Fachada;
import gcom.gui.ActionServletException;
import gcom.gui.GcomAction;
import gcom.micromedicao.hidrometro.FiltroHidrometroDiametro;
import gcom.micromedicao.hidrometro.HidrometroDiametro;
import gcom.util.ConstantesSistema;
import gcom.util.Util;
import gcom.util.filtro.ComparacaoTexto;
import gcom.util.filtro.ComparacaoTextoCompleto;
import gcom.util.filtro.ParametroSimples;
import java.util.Collection;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;
/**
* [UC0792]Filtrar Diametro do Hidrometro
*
* @author Vinicius Medeiros
* @date 16/05/2008
*/
public class FiltrarHidrometroDiametroAction extends GcomAction {
public ActionForward execute(ActionMapping actionMapping,
ActionForm actionForm, HttpServletRequest httpServletRequest,
HttpServletResponse httpServletResponse) {
ActionForward retorno = actionMapping
.findForward("exibirManterHidrometroDiametro");
HttpSession sessao = httpServletRequest.getSession(false);
Fachada fachada = Fachada.getInstancia();
FiltrarHidrometroDiametroActionForm filtrarHidrometroDiametroActionForm = (FiltrarHidrometroDiametroActionForm) actionForm;
FiltroHidrometroDiametro filtroHidrometroDiametro = new FiltroHidrometroDiametro();
boolean peloMenosUmParametroInformado = false;
String id = filtrarHidrometroDiametroActionForm.getId();
String descricao = filtrarHidrometroDiametroActionForm.getDescricao();
String descricaoAbreviada = filtrarHidrometroDiametroActionForm.getDescricaoAbreviada();
String numeroOrdem = filtrarHidrometroDiametroActionForm
.getNumeroOrdem();
String indicadorUso = filtrarHidrometroDiametroActionForm
.getIndicadorUso();
String tipoPesquisa = filtrarHidrometroDiametroActionForm
.getTipoPesquisa();
// ID
if (id != null && !id.trim().equals("")) {
peloMenosUmParametroInformado = true;
filtroHidrometroDiametro.adicionarParametro(new ParametroSimples(
FiltroHidrometroDiametro.ID, id));
}
// Descricao
if (descricao != null && !descricao.trim().equalsIgnoreCase("")) {
peloMenosUmParametroInformado = true;
if (tipoPesquisa != null
&& tipoPesquisa
.equals(ConstantesSistema.TIPO_PESQUISA_COMPLETA
.toString())) {
filtroHidrometroDiametro
.adicionarParametro(new ComparacaoTextoCompleto(
FiltroHidrometroDiametro.DESCRICAO, descricao));
} else {
filtroHidrometroDiametro.adicionarParametro(new ComparacaoTexto(
FiltroHidrometroDiametro.DESCRICAO, descricao));
}
}
// Descricao Abreviada
if (descricaoAbreviada != null
&& !descricaoAbreviada.trim().equalsIgnoreCase("")) {
peloMenosUmParametroInformado = true;
filtroHidrometroDiametro
.adicionarParametro(new ComparacaoTextoCompleto(
FiltroHidrometroDiametro.DESCRICAO_ABREVIADA,
descricaoAbreviada));
} else {
filtroHidrometroDiametro.adicionarParametro(new ComparacaoTexto(
FiltroHidrometroDiametro.DESCRICAO_ABREVIADA,
descricaoAbreviada));
}
// N�mero da Ordem
if (numeroOrdem != null
&& !numeroOrdem.trim().equalsIgnoreCase("")) {
peloMenosUmParametroInformado = true;
filtroHidrometroDiametro
.adicionarParametro(new ParametroSimples(
FiltroHidrometroDiametro.NUMERO_ORDEM,
numeroOrdem));
}
// Indicador uso
if (indicadorUso != null && !indicadorUso.trim().equals("")) {
peloMenosUmParametroInformado = true;
filtroHidrometroDiametro.adicionarParametro(new ParametroSimples(
FiltroHidrometroDiametro.INDICADOR_USO, indicadorUso));
}
Collection colecaoHidrometroDiametro = fachada
.pesquisar(filtroHidrometroDiametro, HidrometroDiametro.class
.getName());
// Verificar a existencia de um Diametro do Hidrometro
if (colecaoHidrometroDiametro.isEmpty()) {
throw new ActionServletException(
"atencao.pesquisa_inexistente", null,"Di�metro do Hidr�metro");
}
// Filtragem sem parametros
if (!peloMenosUmParametroInformado == true) {
throw new ActionServletException(
"atencao.filtro.nenhum_parametro_informado");
}
// Pesquisa sem registros
if (colecaoHidrometroDiametro == null
|| colecaoHidrometroDiametro.isEmpty()) {
throw new ActionServletException(
"atencao.pesquisa.nenhumresultado", null, "Di�metro do Hidr�metro");
} else {
httpServletRequest.setAttribute("colecaoHidrometroDiametro",
colecaoHidrometroDiametro);
HidrometroDiametro hidrometroDiametro = new HidrometroDiametro();
hidrometroDiametro = (HidrometroDiametro) Util
.retonarObjetoDeColecao(colecaoHidrometroDiametro);
String idRegistroAtualizacao = hidrometroDiametro.getId().toString();
sessao.setAttribute("idRegistroAtualizacao", idRegistroAtualizacao);
}
sessao.setAttribute("filtroHidrometroDiametro", filtroHidrometroDiametro);
httpServletRequest.setAttribute("filtroHidrometroDiametro",
filtroHidrometroDiametro);
return retorno;
}
}