package gcom.gui.batch;
import gcom.batch.FiltroProcessoIniciado;
import gcom.batch.ProcessoIniciado;
import gcom.fachada.Fachada;
import gcom.gui.ActionServletException;
import gcom.gui.GcomAction;
import gcom.util.ConstantesSistema;
import gcom.util.Util;
import gcom.util.filtro.Intervalo;
import gcom.util.filtro.ParametroNulo;
import gcom.util.filtro.ParametroSimples;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Collection;
import java.util.Date;
import java.util.Map;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;
/**
* Action que filtra um ProcessoIniciado no sistema
*
* @author Rodrigo Silveira
* @created 24/07/2006
*/
public class FiltrarProcessoAction extends GcomAction {
public ActionForward execute(ActionMapping actionMapping,
ActionForm actionForm, HttpServletRequest httpServletRequest,
HttpServletResponse httpServletResponse) {
// Seta o mapeamento de retorno
ActionForward retorno = actionMapping.findForward("resultadoFiltrarProcesso");
FiltrarProcessoActionForm filtrarProcessoActionForm = (FiltrarProcessoActionForm) actionForm;
Fachada fachada = Fachada.getInstancia();
String dataAgendamentoInicial = filtrarProcessoActionForm.getDataAgendamentoInicial();
String horaAgendamentoInicial = filtrarProcessoActionForm.getHoraAgendamentoInicial();
String dataAgendamentoFinal = filtrarProcessoActionForm.getDataAgendamentoFinal();
String horaAgendamentoFinal = filtrarProcessoActionForm.getHoraAgendamentoFinal();
String dataPeriodoInicioInicial = filtrarProcessoActionForm.getDataPeriodoInicioInicial();
String horaPeriodoInicioInicial = filtrarProcessoActionForm.getHoraPeriodoInicioInicial();
String dataPeriodoInicioFinal = filtrarProcessoActionForm.getDataPeriodoInicioFinal();
String horaPeriodoInicioFinal = filtrarProcessoActionForm.getHoraPeriodoInicioFinal();
String dataConclusaoInicial = filtrarProcessoActionForm.getDataConclusaoInicial();
String horaConclusaoInicial = filtrarProcessoActionForm.getHoraConclusaoInicial();
String dataConclusaoFinal = filtrarProcessoActionForm.getDataConclusaoFinal();
String horaConclusaoFinal = filtrarProcessoActionForm.getHoraConclusaoFinal();
String dataComandoInicial = filtrarProcessoActionForm.getDataComandoInicial();
String horaComandoInicial = filtrarProcessoActionForm.getHoraComandoInicial();
String dataComandoFinal = filtrarProcessoActionForm.getDataComandoFinal();
String horaComandoFinal = filtrarProcessoActionForm.getHoraComandoFinal();
//CRC-1466
String usuarioId = filtrarProcessoActionForm.getUsuarioId();
// Se o usu�rio n�o informar a hora inicial, ela ficar� com o valor
// "00:00:00"
if (checarCampoVazioNulo(horaAgendamentoInicial)) {
horaAgendamentoInicial = "00:00:00";
}
if (checarCampoVazioNulo(horaPeriodoInicioInicial)) {
horaPeriodoInicioInicial = "00:00:00";
}
if (checarCampoVazioNulo(horaConclusaoInicial)) {
horaConclusaoInicial = "00:00:00";
}
if (checarCampoVazioNulo(horaComandoInicial)) {
horaComandoInicial = "00:00:00";
}
// Se o usu�rio n�o informar a hora final, ela ficar� com o valor
// "23:59:59"
if (checarCampoVazioNulo(horaAgendamentoFinal)) {
horaAgendamentoFinal = "23:59:59";
}
if (checarCampoVazioNulo(horaPeriodoInicioFinal)) {
horaPeriodoInicioFinal = "23:59:59";
}
if (checarCampoVazioNulo(horaConclusaoFinal)) {
horaConclusaoFinal = "23:59:59";
}
if (checarCampoVazioNulo(horaComandoFinal)) {
horaComandoFinal = "23:59:59";
}
FiltroProcessoIniciado filtro = new FiltroProcessoIniciado(FiltroProcessoIniciado.DATA_HORA_AGENDAMENTO_DESC);
filtro.adicionarParametro(new ParametroNulo(FiltroProcessoIniciado.NOME_ARQUIVO_PROCESSO));
//CRC-1466
if(usuarioId != null && !usuarioId.trim().equals("")){
filtro.adicionarParametro(new ParametroSimples(FiltroProcessoIniciado.USUARIO_ID, usuarioId));
}
if (!checarCampoVazioNulo(filtrarProcessoActionForm.getIdProcesso())) {
int idProcesso = Integer.parseInt(filtrarProcessoActionForm.getIdProcesso());
if (idProcesso != ConstantesSistema.NUMERO_NAO_INFORMADO) {
filtro.adicionarParametro(new ParametroSimples(FiltroProcessoIniciado.ID_PROCESSO, idProcesso));
}
}
if (!checarCampoVazioNulo(filtrarProcessoActionForm.getIdSituacaoProcesso())) {
int idSituacaoProcesso = Integer.parseInt(filtrarProcessoActionForm.getIdSituacaoProcesso());
if (idSituacaoProcesso != ConstantesSistema.NUMERO_NAO_INFORMADO) {
filtro.adicionarParametro(new ParametroSimples(FiltroProcessoIniciado.PROCESSO_SITUACAO_ID,idSituacaoProcesso));
}
}
// Trecho que verifica se o usu�rio apenas preencheu a data inicial para
// completar a data final com o mesmo dado informado
if (!checarCampoVazioNulo(dataAgendamentoInicial)) {
if (checarCampoVazioNulo(dataAgendamentoFinal)) {
dataAgendamentoFinal = dataAgendamentoInicial;
}
filtro.adicionarParametro(
new Intervalo(FiltroProcessoIniciado.DATA_HORA_AGENDAMENTO,
converterDataHora(dataAgendamentoInicial,horaAgendamentoInicial),
converterDataHora(dataAgendamentoFinal, horaAgendamentoFinal)));
}
if (!checarCampoVazioNulo(dataPeriodoInicioInicial)) {
if (checarCampoVazioNulo(dataPeriodoInicioFinal)) {
dataPeriodoInicioFinal = dataPeriodoInicioInicial;
}
filtro.adicionarParametro(
new Intervalo(FiltroProcessoIniciado.DATA_HORA_INICIO,
converterDataHora(dataPeriodoInicioInicial,horaPeriodoInicioInicial),
converterDataHora(dataPeriodoInicioFinal, horaPeriodoInicioFinal)));
}
if (!checarCampoVazioNulo(dataConclusaoInicial)) {
if (checarCampoVazioNulo(dataConclusaoFinal)) {
dataConclusaoFinal = dataConclusaoInicial;
}
filtro.adicionarParametro(
new Intervalo(FiltroProcessoIniciado.DATA_HORA_TERMINO,
converterDataHora(dataConclusaoInicial,horaConclusaoInicial),
converterDataHora(dataConclusaoFinal, horaConclusaoFinal)));
}
if (!checarCampoVazioNulo(dataComandoInicial)) {
if (checarCampoVazioNulo(dataConclusaoFinal)) {
dataComandoFinal = dataComandoInicial;
}
filtro.adicionarParametro(
new Intervalo(FiltroProcessoIniciado.DATA_HORA_COMANDO,
converterDataHora(dataComandoInicial, horaComandoInicial),
converterDataHora(dataComandoFinal, horaComandoFinal)));
}
filtro.adicionarCaminhoParaCarregamentoEntidade("processo");
filtro.adicionarCaminhoParaCarregamentoEntidade("usuario");
filtro.adicionarCaminhoParaCarregamentoEntidade("processoSituacao");
Map resultado = controlarPaginacao(httpServletRequest, retorno, filtro, ProcessoIniciado.class.getName());
Collection<ProcessoIniciado> colecaoProcessosIniciados = (Collection) resultado.get("colecaoRetorno");
/*
*Caso a pesquisa n�o retorne resultado � lan�ada mensagem informando que
*a pesquisa n�o retorna nenhum resultado
*/
if ( colecaoProcessosIniciados != null && colecaoProcessosIniciados.isEmpty() ) {
throw new ActionServletException("atencao.pesquisa.nenhumresultado");
}else{
retorno = (ActionForward) resultado.get("destinoActionForward");
httpServletRequest.setAttribute("colecaoProcessosIniciados",colecaoProcessosIniciados);
httpServletRequest.setAttribute("mesAnoReferencia", Util.formatarAnoMesParaMesAno(fachada.pesquisarParametrosDoSistema().getAnoMesFaturamento()));
httpServletRequest.setAttribute("dataCorrente", new Date());
return retorno;
}
}
private boolean checarCampoVazioNulo(String campo) {
boolean retorno = false;
if (campo == null ||
campo.trim().equals("") ||
campo.trim().equals("" + ConstantesSistema.NUMERO_NAO_INFORMADO)) {
retorno = true;
}
return retorno;
}
private Date converterDataHora(String data, String hora) {
SimpleDateFormat formatoDataHora = new SimpleDateFormat("dd/MM/yyyy k:mm:ss");
try {
return formatoDataHora.parse(data + " " + hora);
} catch (ParseException e) {
throw new ActionServletException("erro.sistema");
}
}
}