package gcom.gui.cobranca;
import gcom.cobranca.CobrancaCriterio;
import gcom.cobranca.FiltroCobrancaCriterio;
import gcom.gui.ActionServletException;
import gcom.gui.GcomAction;
import gcom.util.ConstantesSistema;
import gcom.util.Util;
import gcom.util.filtro.ComparacaoTexto;
import gcom.util.filtro.Intervalo;
import gcom.util.filtro.ParametroSimples;
import java.util.Calendar;
import java.util.Collection;
import java.util.GregorianCalendar;
import java.util.Map;
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;
/**
* Description of the Class
*
* @author Tiago Moreno
* @create 16/02/2006
*
*/
public class PesquisarCriterioCobrancaAction extends GcomAction {
public ActionForward execute(ActionMapping actionMapping,
ActionForm actionForm, HttpServletRequest httpServletRequest,
HttpServletResponse httpServletResponse) {
// Seta o mapeamento de retorno
ActionForward retorno = actionMapping
.findForward("pesquisarCriterioCobrancaResultado");
// Obt�m a inst�ncia da fachada
//Fachada fachada = Fachada.getInstancia();
// cria sessao
HttpSession sessao = httpServletRequest.getSession(false);
PesquisarCriterioCobrancaActionForm pesquisarCriterioCobrancaActionForm = (PesquisarCriterioCobrancaActionForm) actionForm;
String descricaoCriterio = pesquisarCriterioCobrancaActionForm
.getDescricaoCriterio();
String dataInicio = pesquisarCriterioCobrancaActionForm.getDataInicio();
String dataFim = pesquisarCriterioCobrancaActionForm.getDataFim();
String numeroAnos = pesquisarCriterioCobrancaActionForm.getNumeroAnos();
String opcaoContaRevisao = pesquisarCriterioCobrancaActionForm
.getOpcaoContaRevisao();
String opcaoImovelDebito = pesquisarCriterioCobrancaActionForm
.getOpcaoImovelDebito();
String opcaoImovelSitCobranca = pesquisarCriterioCobrancaActionForm
.getOpcaoImovelSitCobranca();
String opcaoImovelSitEspecial = pesquisarCriterioCobrancaActionForm
.getOpcaoImovelSitEspecial();
String opcaoInqDebitoConta = pesquisarCriterioCobrancaActionForm
.getOpcaoInqDebitoConta();
String opcaoInqDebitoContaAntiga = pesquisarCriterioCobrancaActionForm
.getOpcaoInqDebitoContaAntiga();
FiltroCobrancaCriterio filtroCobrancaCriterio = new FiltroCobrancaCriterio();
if ((descricaoCriterio == null || descricaoCriterio
.equalsIgnoreCase(""))
&& (dataInicio == null || dataInicio.equalsIgnoreCase(""))
&& (numeroAnos == null || numeroAnos.equalsIgnoreCase(""))
&& (opcaoContaRevisao == null || opcaoContaRevisao
.equalsIgnoreCase(""))
&& (opcaoImovelSitCobranca == null || opcaoImovelSitCobranca
.equalsIgnoreCase(""))
&& (opcaoInqDebitoContaAntiga == null || opcaoInqDebitoContaAntiga
.equalsIgnoreCase(""))
&& (opcaoInqDebitoConta == null || opcaoInqDebitoConta
.equalsIgnoreCase(""))
&& (opcaoImovelDebito == null || opcaoImovelDebito
.equalsIgnoreCase(""))
&& (opcaoImovelSitEspecial == null || opcaoImovelSitEspecial
.equalsIgnoreCase(""))) {
throw new ActionServletException(
"atencao.filtro.nenhum_parametro_informado");
}
if ((dataInicio.trim().length() == 10)
&& (dataFim.trim().length() == 10) && dataFim != null && !dataFim.equalsIgnoreCase("")) {
Calendar calendarInicio = new GregorianCalendar();
Calendar calendarFim = new GregorianCalendar();
calendarInicio.set(Calendar.DAY_OF_MONTH, new Integer(dataInicio
.substring(0, 2)).intValue());
calendarInicio.set(Calendar.MONTH, new Integer(dataInicio
.substring(3, 5)).intValue());
calendarInicio.set(Calendar.YEAR, new Integer(dataInicio.substring(
6, 10)).intValue());
calendarFim.set(Calendar.DAY_OF_MONTH, new Integer(dataFim
.substring(0, 2)).intValue());
calendarFim.set(Calendar.MONTH,
new Integer(dataFim.substring(3, 5)).intValue());
calendarFim.set(Calendar.YEAR,
new Integer(dataFim.substring(6, 10)).intValue());
// joga exess�o
if (calendarFim.compareTo(calendarInicio) < 0) {
throw new ActionServletException(
"atencao.data_fim_menor_inicio");
}
}
if (descricaoCriterio != null
&& !descricaoCriterio.equalsIgnoreCase("")) {
filtroCobrancaCriterio.adicionarParametro(new ComparacaoTexto(
FiltroCobrancaCriterio.DESCRICAO_COBRANCA_CRITERIO,
descricaoCriterio));
}
if (dataInicio != null && !dataInicio.equalsIgnoreCase("")) {
if (dataFim == null || dataFim.equalsIgnoreCase("")) {
filtroCobrancaCriterio.adicionarParametro(new Intervalo(FiltroCobrancaCriterio.DATA_INICIO_VIGENCIA, Util
.converteStringParaDate(dataInicio), Util.converteStringParaDate(ConstantesSistema.DATA_LIMITE)));
}else{
filtroCobrancaCriterio.adicionarParametro(new Intervalo(
FiltroCobrancaCriterio.DATA_INICIO_VIGENCIA, Util
.converteStringParaDate(dataInicio), Util
.converteStringParaDate(dataFim)));
}
}
if (numeroAnos != null && !numeroAnos.equalsIgnoreCase("")) {
Integer numeroAnosFormatado = new Integer(numeroAnos);
filtroCobrancaCriterio.adicionarParametro(new ParametroSimples(
FiltroCobrancaCriterio.NUMERO_ANOS_CONTA_ANTIGA,
numeroAnosFormatado));
}
if (opcaoContaRevisao != null
&& !opcaoContaRevisao.equalsIgnoreCase("")
&& !opcaoContaRevisao.equalsIgnoreCase("3")) {
filtroCobrancaCriterio.adicionarParametro(new ParametroSimples(
FiltroCobrancaCriterio.INDICADOR_CONTA_REVISAO,
opcaoContaRevisao));
}
if (opcaoImovelSitCobranca != null
&& !opcaoImovelSitCobranca.equalsIgnoreCase("")
&& !opcaoImovelSitCobranca.equalsIgnoreCase("3")) {
filtroCobrancaCriterio.adicionarParametro(new ParametroSimples(
FiltroCobrancaCriterio.INDICADOR_IMOVEL_SITUACAO_COBRANCA,
opcaoImovelSitCobranca));
}
if (opcaoInqDebitoContaAntiga != null
&& !opcaoInqDebitoContaAntiga.equalsIgnoreCase("")
&& !opcaoInqDebitoContaAntiga.equalsIgnoreCase("3")) {
filtroCobrancaCriterio.adicionarParametro(new ParametroSimples(
FiltroCobrancaCriterio.INDICADOR_DEBITO_CONTA_ANTIGA,
opcaoInqDebitoContaAntiga));
}
if (opcaoInqDebitoConta != null
&& !opcaoInqDebitoConta.equalsIgnoreCase("")
&& !opcaoInqDebitoConta.equalsIgnoreCase("3")) {
filtroCobrancaCriterio
.adicionarParametro(new ParametroSimples(
FiltroCobrancaCriterio.INDICADOR_INQUILINO_DEBITO_CONTA_MES,
opcaoInqDebitoConta));
}
if (opcaoImovelDebito != null
&& !opcaoImovelDebito.equalsIgnoreCase("")
&& !opcaoImovelDebito.equalsIgnoreCase("3")) {
filtroCobrancaCriterio.adicionarParametro(new ParametroSimples(
FiltroCobrancaCriterio.INDICADOR_DEBITO_CONTA_MES,
opcaoImovelDebito));
}
if (opcaoImovelSitEspecial != null
&& !opcaoImovelSitEspecial.equalsIgnoreCase("")
&& !opcaoImovelSitEspecial.equalsIgnoreCase("3")) {
filtroCobrancaCriterio.adicionarParametro(new ParametroSimples(
FiltroCobrancaCriterio.INDICADOR_IMOVEL_PARALISACAO,
opcaoImovelSitEspecial));
}
Map resultado = controlarPaginacao(httpServletRequest, retorno,
filtroCobrancaCriterio, CobrancaCriterio.class.getName());
Collection colecaoCriterioCobranca = (Collection) resultado
.get("colecaoRetorno");
retorno = (ActionForward) resultado.get("destinoActionForward");
if (colecaoCriterioCobranca == null
|| colecaoCriterioCobranca.isEmpty()) {
throw new ActionServletException("atencao.pesquisa.nenhumresultado");
} else {
sessao.setAttribute("colecaoCriterioCobranca",
colecaoCriterioCobranca);
}
return retorno;
}
}