package gcom.gui.micromedicao.hidrometro;
import gcom.gui.ActionServletException;
import gcom.gui.GcomAction;
import gcom.micromedicao.hidrometro.FiltroHidrometroMovimentacao;
import gcom.util.ConstantesSistema;
import gcom.util.Util;
import gcom.util.filtro.MaiorQue;
import gcom.util.filtro.MenorQue;
import gcom.util.filtro.ParametroSimples;
import java.sql.Time;
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;
/**
* [UC0000] Filtrar Movimenta��o de Hidr�metro
*
* @author Fernanda Paiva, Roberta Costa
* @created 23 de Janeiro de 2006, 03/08/2006
*/
public class FiltrarMovimentacaoHidrometroAction extends GcomAction {
public ActionForward execute(ActionMapping actionMapping,
ActionForm actionForm, HttpServletRequest httpServletRequest,
HttpServletResponse httpServletResponse) {
HidrometroActionForm hidrometroActionForm = (HidrometroActionForm) actionForm;
ActionForward retorno = null;
HttpSession sessao = httpServletRequest.getSession(false);
retorno = actionMapping.findForward("consultarMovimentacaoHidrometro");
// Recupera os par�metros do form
String fixo = hidrometroActionForm.getFixo();
String faixaInicial = hidrometroActionForm.getFaixaInicial();
String faixaFinal = hidrometroActionForm.getFaixaFinal();
String dataMovimentacaoInicial = hidrometroActionForm
.getDataMovimentacaoInicial();
sessao.setAttribute("dataMovimentacaoInicial", dataMovimentacaoInicial);
String dataMovimentacaoFinal = hidrometroActionForm
.getDataMovimentacaoFinal();
sessao.setAttribute("dataMovimentacaoFinal", dataMovimentacaoFinal);
String horaMovimentacaoInicial = hidrometroActionForm
.getHoraMovimentacaoInicial();
sessao.setAttribute("horaMovimentacaoInicial", horaMovimentacaoInicial);
String horaMovimentacaoFinal = hidrometroActionForm
.getHoraMovimentacaoFinal();
sessao.setAttribute("horaMovimentacaoFinal", horaMovimentacaoFinal);
String localArmazenagemDestino = hidrometroActionForm
.getLocalArmazenagemDestino();
sessao.setAttribute("localArmazenagemDestino", localArmazenagemDestino);
String localArmazenagemOrigem = hidrometroActionForm
.getLocalArmazenagemOrigem();
sessao.setAttribute("localArmazenagemOrigem", localArmazenagemOrigem);
Integer motivoMovimentacao = new Integer(hidrometroActionForm.getMotivoMovimentacao());
sessao.setAttribute("motivoMovimentacao", motivoMovimentacao);
String usuario = hidrometroActionForm.getUsuario();
sessao.setAttribute("usuario", usuario);
FiltroHidrometroMovimentacao filtroHidrometroMovimentacao = new FiltroHidrometroMovimentacao();
filtroHidrometroMovimentacao
.adicionarCaminhoParaCarregamentoEntidade("hidrometroMotivoMovimentacao");
filtroHidrometroMovimentacao
.adicionarCaminhoParaCarregamentoEntidade("hidrometroLocalArmazenagemOrigem");
filtroHidrometroMovimentacao
.adicionarCaminhoParaCarregamentoEntidade("hidrometroLocalArmazenagemDestino");
filtroHidrometroMovimentacao.adicionarCaminhoParaCarregamentoEntidade("usuario");
boolean peloMenosUmParametroInformado = false;
// Insere os par�metros informados no filtro
// Caso o fixo, a faixa inicial e faixa final seja diferente de null
// ent�o ignora os outros parametros e faz a pesquisa do filtro por
// esses 3 par�metros
if (fixo != null && !fixo.equalsIgnoreCase("")) {
if (faixaInicial != null && !faixaInicial.equalsIgnoreCase("")) {
sessao.setAttribute("faixaInicial", faixaInicial);
}
if (faixaFinal != null && !faixaFinal.equalsIgnoreCase("")) {
sessao.setAttribute("faixaFinal", faixaFinal);
}
sessao.setAttribute("fixo", fixo);
peloMenosUmParametroInformado = true;
sessao.removeAttribute("dataMovimentacaoInicial");
sessao.removeAttribute("dataMovimentacaoFinal");
sessao.removeAttribute("horaMovimentacaoInicial");
sessao.removeAttribute("horaMovimentacaoFinal");
sessao.removeAttribute("localArmazenagemDestino");
sessao.removeAttribute("localArmazenagemOrigem");
sessao.removeAttribute("motivoMovimentacao");
sessao.removeAttribute("usuario");
} else{
if (dataMovimentacaoInicial != null
&& !dataMovimentacaoInicial.trim().equalsIgnoreCase("")) {
peloMenosUmParametroInformado = true;
filtroHidrometroMovimentacao
.adicionarParametro(new MaiorQue(
FiltroHidrometroMovimentacao.DATA,
Util.converteStringParaDate(dataMovimentacaoInicial)));
}
if (dataMovimentacaoInicial != null
&& !dataMovimentacaoInicial.trim().equalsIgnoreCase("")) {
peloMenosUmParametroInformado = true;
filtroHidrometroMovimentacao
.adicionarParametro(new MaiorQue(
FiltroHidrometroMovimentacao.DATA,
Util.converteStringParaDate(dataMovimentacaoInicial)));
}
if (dataMovimentacaoInicial != null
&& !dataMovimentacaoInicial.trim().equalsIgnoreCase("")) {
peloMenosUmParametroInformado = true;
filtroHidrometroMovimentacao
.adicionarParametro(new MaiorQue(
FiltroHidrometroMovimentacao.DATA,
Util.converteStringParaDate(dataMovimentacaoInicial)));
}
if (dataMovimentacaoFinal != null
&& !dataMovimentacaoFinal.trim().equalsIgnoreCase("")) {
peloMenosUmParametroInformado = true;
filtroHidrometroMovimentacao.adicionarParametro(new MenorQue(
FiltroHidrometroMovimentacao.DATA, Util.converteStringParaDate(dataMovimentacaoFinal)));
}
if (horaMovimentacaoInicial != null
&& !horaMovimentacaoInicial.trim().equalsIgnoreCase("")) {
peloMenosUmParametroInformado = true;
filtroHidrometroMovimentacao
.adicionarParametro(new MaiorQue(
FiltroHidrometroMovimentacao.HORA,
new Time(Util.converterStringParaHoraMinuto(horaMovimentacaoInicial).getTime())));
}
if (horaMovimentacaoFinal != null
&& !horaMovimentacaoFinal.trim().equalsIgnoreCase("")) {
peloMenosUmParametroInformado = true;
filtroHidrometroMovimentacao.adicionarParametro(new MenorQue(
FiltroHidrometroMovimentacao.HORA, Util.converterStringParaHoraMinuto(horaMovimentacaoFinal)));
}
if (motivoMovimentacao != null
&& motivoMovimentacao.intValue() != ConstantesSistema.NUMERO_NAO_INFORMADO) {
peloMenosUmParametroInformado = true;
filtroHidrometroMovimentacao
.adicionarParametro(new ParametroSimples(
FiltroHidrometroMovimentacao.HIDROMETRO_MOTIVO,
motivoMovimentacao));
}
if (localArmazenagemOrigem != null
&& !localArmazenagemOrigem.trim().equalsIgnoreCase("")) {
peloMenosUmParametroInformado = true;
filtroHidrometroMovimentacao
.adicionarParametro(new ParametroSimples(
FiltroHidrometroMovimentacao.HIDROMETRO_MOVIMENTACAO_HIDROMETRO_LOCAL_ARMAZENAGEM_ORIGEM_ID,
localArmazenagemOrigem));
}
if (localArmazenagemDestino != null
&& !localArmazenagemDestino.trim().equalsIgnoreCase("")) {
peloMenosUmParametroInformado = true;
filtroHidrometroMovimentacao
.adicionarParametro(new ParametroSimples(
FiltroHidrometroMovimentacao.HIDROMETRO_MOVIMENTACAO_HIDROMETRO_LOCAL_ARMAZENAGEM_DESTINO_ID,
localArmazenagemDestino));
}
if (usuario != null && !usuario.trim().equalsIgnoreCase("")) {
peloMenosUmParametroInformado = true;
filtroHidrometroMovimentacao.adicionarCaminhoParaCarregamentoEntidade("usuario");
filtroHidrometroMovimentacao.adicionarParametro(new ParametroSimples(
FiltroHidrometroMovimentacao.USUARIO, usuario));
}
sessao.removeAttribute("fixo");
sessao.removeAttribute("faixaFinal");
sessao.removeAttribute("faixaInicial");
}
// Erro caso o usu�rio mandou filtrar sem nenhum par�metro
if (!peloMenosUmParametroInformado) {
throw new ActionServletException(
"atencao.filtro.nenhum_parametro_informado");
}
filtroHidrometroMovimentacao.setConsultaSemLimites(true);
// Manda o filtro pelo request
httpServletRequest.setAttribute("filtroMovimentacaoHidrometro",
filtroHidrometroMovimentacao);
sessao.setAttribute("filtroMovimentacaoHidrometro", filtroHidrometroMovimentacao);
return retorno;
}
}