package gcom.gui.micromedicao;
import gcom.fachada.Fachada;
import gcom.faturamento.FaturamentoGrupo;
import gcom.gui.ActionServletException;
import gcom.gui.GcomAction;
import gcom.micromedicao.medicao.FiltroMedicaoHistoricoSql;
import java.util.ArrayList;
import java.util.Collection;
import java.util.HashMap;
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;
/**
* Descri��o da classe
*
* @author Administrador
* @date 07/03/2006
*
*/
public class ExibirManterAnaliseExcecoesConsumosAction extends GcomAction {
public ActionForward execute(ActionMapping actionMapping,
ActionForm actionForm, HttpServletRequest httpServletRequest,
HttpServletResponse httpServletResponse) {
ActionForward retorno = actionMapping.findForward("exibirManterAnaliseExcecoesConsumo");
HttpSession sessao = httpServletRequest.getSession(false);
Fachada fachada = Fachada.getInstancia();
/*
* Colocado por Raphael Rossiter em 04/12/2007 - Analista: Claudio Lira
* OBJ: N�o perder os registros selecionados na pagina��o
*/
//========================================================================================
this.capturarSelecao(sessao, httpServletRequest);
this.capturarImoveisJaSelecionados(sessao, httpServletRequest);
this.redirecionarAnalise(httpServletRequest);
//========================================================================================
FiltroMedicaoHistoricoSql filtroMedicaoHistoricoSql = new FiltroMedicaoHistoricoSql();
if (sessao.getAttribute("filtroMedicaoHistoricoSql") != null) {
filtroMedicaoHistoricoSql = (FiltroMedicaoHistoricoSql) sessao
.getAttribute("filtroMedicaoHistoricoSql");
FaturamentoGrupo faturamentoGrupo = (FaturamentoGrupo)sessao.getAttribute("faturamentoGrupo");
// 1� Passo - Pegar o total de registros atrav�s de um count da
// consulta que aparecer� na tela
Integer totalRegistros = fachada
.filtrarExcecoesLeiturasConsumosCount(faturamentoGrupo, filtroMedicaoHistoricoSql, (String)sessao.getAttribute("mesAnoPesquisa"),(String)sessao.getAttribute("valorAguaEsgotoInicial"), (String)sessao.getAttribute("valorAguaEsgotoFinal"));
// 2� Passo - Chamar a fun��o de Pagina��o passando o total de
// registros
retorno = this.controlarPaginacao(httpServletRequest, retorno,
totalRegistros);
String tipoApresentacao = (String)sessao.getAttribute("tipoApresentacao");
// 3� Passo - Obter a cole��o da consulta que aparecer� na tela
// passando o numero de paginas
// da pesquisa que est� no request
Collection colecaoImovelMedicao = null;
colecaoImovelMedicao = fachada
.filtrarExcecoesLeiturasConsumos(faturamentoGrupo, filtroMedicaoHistoricoSql,
(Integer) httpServletRequest
.getAttribute("numeroPaginasPesquisa"), false,
(String)sessao.getAttribute("mesAnoPesquisa"),
(String)sessao.getAttribute("valorAguaEsgotoInicial"),
(String)sessao.getAttribute("valorAguaEsgotoFinal"));
if (colecaoImovelMedicao == null || colecaoImovelMedicao.isEmpty()) {
// Nenhum cliente cadastrado
throw new ActionServletException(
"atencao.pesquisa.nenhumresultado");
}
sessao.setAttribute("colecaoImovelMedicao", colecaoImovelMedicao);
sessao.setAttribute("totalRegistros", totalRegistros);
sessao.setAttribute("numeroPaginasPesquisa",httpServletRequest
.getAttribute("numeroPaginasPesquisa"));
// se or igual a normal coloca um indicador na sessao para resolver no jsp
if(tipoApresentacao.trim().equalsIgnoreCase("1")){
sessao.setAttribute("indicadorTipoApresentacao", true);
}else{
sessao.removeAttribute("indicadorTipoApresentacao");
}
// Muitos registros encontrados
// throw new ActionServletException(
// "atencao.pesquisa.muitosregistros", null);
}
return retorno;
}
/**
* Capturar os im�veis selecionados pelo usu�rio
*
* @author Raphael Rossiter
* @date 05/12/2007
*
*/
public void capturarSelecao(HttpSession sessao, HttpServletRequest httpServletRequest){
//CASO VENHA DA TELA DE ANALISE
String telaAnalise = httpServletRequest.getParameter("concluir");
if (telaAnalise == null){
String paginaCorrente = httpServletRequest.getParameter("paginaCorrente");
String idsImoveisJuntos = httpServletRequest.getParameter("idRegistrosImovel");
String[] idsImovel = null;
if (idsImoveisJuntos != null && idsImoveisJuntos.length() > 0){
idsImovel = idsImoveisJuntos.split(",");
}
HashMap<String, String[]> imoveisPorPagina = (HashMap) sessao.getAttribute("idsImoveisJaSelecionados");
if (imoveisPorPagina != null && !imoveisPorPagina.isEmpty()){
if (imoveisPorPagina.containsKey(paginaCorrente)){
if (idsImovel != null && idsImovel.length > 0){
//ATUALIZA��O
imoveisPorPagina.put(paginaCorrente, idsImovel);
}
else{
//REMO��O
imoveisPorPagina.remove(paginaCorrente);
}
}
else if (idsImovel != null && idsImovel.length > 0){
//PAGINA NAO CADASTRADA
imoveisPorPagina.put(paginaCorrente, idsImovel);
}
}
else if (idsImovel != null && idsImovel.length > 0){
//PRIMEIRA SELECAO
imoveisPorPagina = new HashMap<String, String[]>();
imoveisPorPagina.put(paginaCorrente, idsImovel);
sessao.setAttribute("idsImoveisJaSelecionados", imoveisPorPagina);
}
}
}
/**
* Capturar os im�veis selecionados pelo usu�rio
*
* @author Raphael Rossiter
* @date 05/12/2007
*
*/
public void capturarImoveisJaSelecionados(HttpSession sessao, HttpServletRequest httpServletRequest){
String proximaPagina = httpServletRequest.getParameter("page.offset");
if (proximaPagina == null){
proximaPagina = "1";
}
HashMap<String, String[]> imoveisPorPagina = (HashMap) sessao.getAttribute("idsImoveisJaSelecionados");
if (imoveisPorPagina != null && !imoveisPorPagina.isEmpty() &&
imoveisPorPagina.containsKey(proximaPagina)){
String[] idsImovel = imoveisPorPagina.get(proximaPagina);
Collection<String> selecionados = new ArrayList();
for (int i = 0; i < idsImovel.length; i++) {
selecionados.add(idsImovel[i]);
}
httpServletRequest.setAttribute("selecionados", selecionados);
}
}
/**
* Redirecionar para tela de an�lise
*
* @author Raphael Rossiter
* @date 05/12/2007
*
*/
public void redirecionarAnalise(HttpServletRequest httpServletRequest){
String idRegistroAtualizacao = httpServletRequest.getParameter("idRegistroAtualizacao");
if (idRegistroAtualizacao != null){
String linkAnalise = httpServletRequest.getParameter("linkAnalise");
String medicaoTipo = httpServletRequest.getParameter("medicaoTipo");
linkAnalise = linkAnalise + "?idRegistroAtualizacao=" + idRegistroAtualizacao;
linkAnalise = linkAnalise + "&medicaoTipo=" + medicaoTipo;
httpServletRequest.setAttribute("telaAnalise", linkAnalise);
}
}
}