package gcom.gui.faturamento;
/*
* Copyright (C) 2007-2007 the GSAN - Sistema Integrado de Gest�o de Servi�os de Saneamento
*
* This file is part of GSAN, an integrated service management system for Sanitation
*
* GSAN is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License.
*
* GSAN is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
*/
/*
* GSAN - Sistema Integrado de Gest�o de Servi�os de Saneamento
* Copyright (C) <2007>
* Adriano Britto Siqueira
* Alexandre Santos Cabral
* Ana Carolina Alves Breda
* Ana Maria Andrade Cavalcante
* Aryed Lins de Ara�jo
* Bruno Leonardo Rodrigues Barros
* Carlos Elmano Rodrigues Ferreira
* Cl�udio de Andrade Lira
* Denys Guimar�es Guenes Tavares
* Eduardo Breckenfeld da Rosa Borges
* Fab�ola Gomes de Ara�jo
* Fl�vio Leonardo Cavalcanti Cordeiro
* Francisco do Nascimento J�nior
* Homero Sampaio Cavalcanti
* Ivan S�rgio da Silva J�nior
* Jos� Edmar de Siqueira
* Jos� Thiago Ten�rio Lopes
* K�ssia Regina Silvestre de Albuquerque
* Leonardo Luiz Vieira da Silva
* M�rcio Roberto Batista da Silva
* Maria de F�tima Sampaio Leite
* Micaela Maria Coelho de Ara�jo
* Nelson Mendon�a de Carvalho
* Newton Morais e Silva
* Pedro Alexandre Santos da Silva Filho
* Rafael Corr�a Lima e Silva
* Rafael Francisco Pinto
* Rafael Koury Monteiro
* Rafael Palermo de Ara�jo
* Raphael Veras Rossiter
* Roberto Sobreira Barbalho
* Rodrigo Avellar Silveira
* R�mulo Aur�lio de Melo Souza Filho
* Rosana Carvalho Barbosa
* S�vio Luiz de Andrade Cavalcante
* Tai Mu Shih
* Thiago Augusto Souza do Nascimento
* Tiago Moreno Rodrigues
* Vivianne Barbosa Sousa
*
* Este programa � software livre; voc� pode redistribu�-lo e/ou
* modific�-lo sob os termos de Licen�a P�blica Geral GNU, conforme
* publicada pela Free Software Foundation; vers�o 2 da
* Licen�a.
* Este programa � distribu�do na expectativa de ser �til, mas SEM
* QUALQUER GARANTIA; sem mesmo a garantia impl�cita de
* COMERCIALIZA��O ou de ADEQUA��O A QUALQUER PROP�SITO EM
* PARTICULAR. Consulte a Licen�a P�blica Geral GNU para obter mais
* detalhes.
* Voc� deve ter recebido uma c�pia da Licen�a P�blica Geral GNU
* junto com este programa; se n�o, escreva para Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
* 02111-1307, USA.
*/
import gcom.cadastro.localidade.FiltroLocalidade;
import gcom.cadastro.localidade.FiltroSetorComercial;
import gcom.cadastro.localidade.Localidade;
import gcom.cadastro.localidade.SetorComercial;
import gcom.cadastro.sistemaparametro.SistemaParametro;
import gcom.fachada.Fachada;
import gcom.faturamento.FiltroQualidadeAgua;
import gcom.faturamento.FiltroQualidadeAguaPadrao;
import gcom.faturamento.QualidadeAgua;
import gcom.faturamento.QualidadeAguaPadrao;
import gcom.gui.ActionServletException;
import gcom.gui.GcomAction;
import gcom.operacional.FiltroFonteCaptacao;
import gcom.operacional.FiltroSistemaAbastecimento;
import gcom.operacional.FonteCaptacao;
import gcom.operacional.SistemaAbastecimento;
import gcom.util.ConstantesSistema;
import gcom.util.Util;
import gcom.util.filtro.ParametroSimples;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Date;
import java.util.Iterator;
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 K�ssia Albuquerque, R�mulo Aur�lio [Alteracao para abas]
* @date 24/07/2007, 16/09/2008
*/
public class ExibirInserirQualidadeAguaDadosAction extends GcomAction {
public ActionForward execute(ActionMapping actionMapping,
ActionForm actionForm, HttpServletRequest httpServletRequest,
HttpServletResponse httpServletResponse) {
ActionForward retorno = actionMapping.findForward("exibirInserirQualidadeAguaDadosAction");
InserirQualidadeAguaActionForm form = (InserirQualidadeAguaActionForm) actionForm;
HttpSession sessao = this.getSessao(httpServletRequest);
// SETANDO FOCO INICIAL
if (httpServletRequest.getParameter("menu") != null &&
!httpServletRequest.getParameter("menu").equals("")) {
httpServletRequest.setAttribute("nomeCampo", "referencia");
sessao.removeAttribute("inserirTodosAtivado");
// [SB0001 - EXIBI��O DOS PARAMETROS DE QUALIDADE DA �GUA]
FiltroQualidadeAguaPadrao filtroQualidadeAguaPadrao = new FiltroQualidadeAguaPadrao();
Collection colecaoQualidadeAguaPadrao =
this.getFachada().pesquisar(filtroQualidadeAguaPadrao,QualidadeAguaPadrao.class.getName());
if (colecaoQualidadeAguaPadrao != null &&
!colecaoQualidadeAguaPadrao.isEmpty()) {
QualidadeAguaPadrao qualidadeAguaPadrao =
(QualidadeAguaPadrao) colecaoQualidadeAguaPadrao.iterator().next();
sessao.setAttribute("qualidadeAguaPadraoId",qualidadeAguaPadrao.getId());
if (qualidadeAguaPadrao.getDescricaoPadraoTurbidez() != null &&
!qualidadeAguaPadrao.getDescricaoPadraoTurbidez().equals("")) {
form.setPadraoTurbidez(qualidadeAguaPadrao.getDescricaoPadraoTurbidez());
} else {
form.setPadraoTurbidez("");
}
if (qualidadeAguaPadrao.getDescricaoPadraoCloro() != null &&
!qualidadeAguaPadrao.getDescricaoPadraoCloro().equals("")) {
form.setPadraoCloroResidual(qualidadeAguaPadrao.getDescricaoPadraoCloro());
} else {
form.setPadraoCloroResidual("");
}
if (qualidadeAguaPadrao.getDescricaoPadraoPh() != null &&
!qualidadeAguaPadrao.getDescricaoPadraoPh().equals("")) {
form.setPadraoPH(qualidadeAguaPadrao.getDescricaoPadraoPh());
} else {
form.setPadraoPH("");
}
if (qualidadeAguaPadrao.getDescricaoPadraoCor() != null &&
!qualidadeAguaPadrao.getDescricaoPadraoCor().equals("")) {
form.setPadraoCor(qualidadeAguaPadrao.getDescricaoPadraoCor());
} else {
form.setPadraoCor("");
}
if (qualidadeAguaPadrao.getDescricaoPadraoFluor() != null &&
!qualidadeAguaPadrao.getDescricaoPadraoFluor().equals("")) {
form.setPadraoFluor(qualidadeAguaPadrao.getDescricaoPadraoFluor());
} else {
form.setPadraoFluor("");
}
if (qualidadeAguaPadrao.getDescricaoPadraoFerro() != null &&
!qualidadeAguaPadrao.getDescricaoPadraoFerro().equals("")) {
form.setPadraoFerro(qualidadeAguaPadrao.getDescricaoPadraoFerro());
} else {
form.setPadraoFerro("");
}
if (qualidadeAguaPadrao.getDescricaoPadraoColiformesTotais() != null &&
!qualidadeAguaPadrao.getDescricaoPadraoColiformesTotais().equals("")) {
form.setPadraoColiformesTotais(qualidadeAguaPadrao.getDescricaoPadraoColiformesTotais());
} else {
form.setPadraoColiformesTotais("");
}
if (qualidadeAguaPadrao.getDescricaoPadraoColiformesFecais() != null &&
!qualidadeAguaPadrao.getDescricaoPadraoColiformesFecais().equals("")) {
form.setPadraoColiformesFecais(qualidadeAguaPadrao.getDescricaoPadraoColiformesFecais());
} else {
form.setPadraoColiformesFecais("");
}
if (qualidadeAguaPadrao.getDescricaoNitrato() != null &&
!qualidadeAguaPadrao.getDescricaoNitrato().equals("")) {
form.setPadraoNitrato(qualidadeAguaPadrao.getDescricaoNitrato());
} else {
form.setPadraoNitrato("");
}
if (qualidadeAguaPadrao.getDescricaoPadraoColiformesTermotolerantes() != null &&
!qualidadeAguaPadrao.getDescricaoPadraoColiformesTermotolerantes().equals("")) {
form.setPadraoColiformesTermotolerantes(qualidadeAguaPadrao.getDescricaoPadraoColiformesTermotolerantes());
} else {
form.setPadraoColiformesTermotolerantes("");
}
if(qualidadeAguaPadrao.getDescricaoPadraoAlcalinidade() != null
&& !qualidadeAguaPadrao.getDescricaoPadraoAlcalinidade().equals("")){
form.setPadraoAlcalinidade(qualidadeAguaPadrao.getDescricaoPadraoAlcalinidade());
}else{
form.setPadraoAlcalinidade("");
}
} else {
form.setPadraoTurbidez("");
form.setPadraoCloroResidual("");
form.setPadraoPH("");
form.setPadraoCor("");
form.setPadraoFluor("");
form.setPadraoFerro("");
form.setPadraoColiformesTotais("");
form.setPadraoColiformesFecais("");
form.setPadraoNitrato("");
form.setPadraoColiformesTermotolerantes("");
form.setPadraoAlcalinidade("");
}
}
String indicadorInserirTodos = form.getIncluirTodos();
// [FS0001 - VALIDAR REFER�NCIA]
if ((form.getReferencia() != null && !form.getReferencia().equals(""))
&& (indicadorInserirTodos != null && !indicadorInserirTodos
.equals(""))) {
String anoMesReferencia = Util
.formatarMesAnoParaAnoMesSemBarra(form.getReferencia());
SistemaParametro sistemaParametro = this.getFachada()
.pesquisarParametrosDoSistema();
String anoMesFuturo = ""
+ Util.somaUmMesAnoMesReferencia(sistemaParametro
.getAnoMesFaturamento());
if (Util.compararAnoMesReferencia(anoMesReferencia, anoMesFuturo,
">")) {
httpServletRequest.setAttribute("nomeCampo", "referencia");
throw new ActionServletException("atencao.mes_ano_menor");
}
// [SB0002] INCLUSAO DOS PARAMETROS DA QUALIDADE AGUA
httpServletRequest.setAttribute("inserirTodosAtivado", "1");
sessao.setAttribute("inserirTodosAtivado", "1");
FiltroQualidadeAgua filtroQualidadeAgua = new FiltroQualidadeAgua();
FiltroQualidadeAgua filtroQualidadeAguaRepetida = new FiltroQualidadeAgua();
// [FS0009 - VERIFICAR EXISTENCIA MES ANTERIOR]
String anoMesReferenciaAnterior = ""
+ Util
.subtrairMesDoAnoMes(new Integer(anoMesReferencia),
1);
filtroQualidadeAgua
.adicionarCaminhoParaCarregamentoEntidade("localidade");
filtroQualidadeAgua
.adicionarCaminhoParaCarregamentoEntidade("setorComercial");
filtroQualidadeAgua.adicionarParametro(new ParametroSimples(
FiltroQualidadeAgua.ANO_MES_REFERENCIA,
anoMesReferenciaAnterior));
Collection colecaoQualidadeAgua = this.getFachada().pesquisar(
filtroQualidadeAgua, QualidadeAgua.class.getName());
// ------------[VERIFICANDO A EXISTENCIA DE QUALIDADE AGUA PARA M�S
// ATUAL]---------
filtroQualidadeAguaRepetida
.adicionarCaminhoParaCarregamentoEntidade("localidade");
filtroQualidadeAguaRepetida
.adicionarCaminhoParaCarregamentoEntidade("setorComercial");
filtroQualidadeAguaRepetida
.adicionarParametro(new ParametroSimples(
FiltroQualidadeAgua.ANO_MES_REFERENCIA,
anoMesReferencia));
Collection colecaoQualidadeAguaRepetida = this.getFachada()
.pesquisar(filtroQualidadeAguaRepetida,
QualidadeAgua.class.getName());
if (colecaoQualidadeAgua == null || colecaoQualidadeAgua.isEmpty()) {
form.setIncluirTodos("");
sessao.removeAttribute("inserirTodosAtivado");
throw new ActionServletException(
"atencao.mes_anterior_inexistente");
} else if (colecaoQualidadeAguaRepetida != null
&& !colecaoQualidadeAguaRepetida.isEmpty()) {
throw new ActionServletException(
"atencao.faturamento.qualidade_agua_existente_colecao",
null, form.getReferencia());
} else {
Iterator iteratorColecaoQualidadeAgua = colecaoQualidadeAgua
.iterator();
while (iteratorColecaoQualidadeAgua.hasNext()) {
QualidadeAgua qualidadeAgua = (QualidadeAgua) iteratorColecaoQualidadeAgua
.next();
qualidadeAgua.setId(null);
qualidadeAgua.setUltimaAlteracao(new Date());
qualidadeAgua.setAnoMesReferencia(new Integer(
anoMesReferencia));
}
sessao.setAttribute("colecaoQualidadeAgua",
colecaoQualidadeAgua);
}
} else if ((indicadorInserirTodos != null && !indicadorInserirTodos
.equals(""))
&& (form.getReferencia() == null || form.getReferencia()
.equals(""))) {
throw new ActionServletException("atencao.informar_referencia");
} else {
sessao.removeAttribute("inserirTodosAtivado");
// [FS0001 - VALIDAR REFER�NCIA]
if ((form.getReferencia() != null && !form.getReferencia().equals(
""))) {
String anoMesReferencia = Util
.formatarMesAnoParaAnoMesSemBarra(form.getReferencia());
SistemaParametro sistemaParametro = this.getFachada()
.pesquisarParametrosDoSistema();
String anoMesFuturo = ""
+ Util.somaUmMesAnoMesReferencia(sistemaParametro
.getAnoMesFaturamento());
if (Util.compararAnoMesReferencia(anoMesReferencia,
anoMesFuturo, ">")) {
httpServletRequest.setAttribute("nomeCampo", "referencia");
throw new ActionServletException("atencao.mes_ano_menor");
}
}
// [FS0002 - VERIFICAR EXISTENCIA DA LOCALIDADE]
if ((form.getIdLocalidade() != null && !form.getIdLocalidade()
.trim().equals(""))) {
FiltroLocalidade filtroLocalidade = new FiltroLocalidade();
filtroLocalidade.limparListaParametros();
filtroLocalidade.adicionarParametro(new ParametroSimples(
FiltroLocalidade.INDICADORUSO,
ConstantesSistema.INDICADOR_USO_ATIVO));
filtroLocalidade.adicionarParametro(new ParametroSimples(
FiltroLocalidade.ID,
new Integer(form.getIdLocalidade())));
Collection colecaoLocalidade = this.getFachada().pesquisar(
filtroLocalidade, Localidade.class.getName());
if (colecaoLocalidade != null && !colecaoLocalidade.isEmpty()) {
Localidade localidade = (Localidade) colecaoLocalidade
.iterator().next();
form.setIdLocalidade("" + localidade.getId());
form.setLocalidadeDescricao(localidade.getDescricao());
httpServletRequest.setAttribute("localidadeEncontrada",
"true");
httpServletRequest.setAttribute("nomeCampo",
"idSetorComercial");
} else {
httpServletRequest.setAttribute("localidadeEncontrada",
"exception");
form.setIdLocalidade("");
form.setLocalidadeDescricao("LOCALIDADE INEXISTENTE");
form.setIdSetorComercial("");
form.setSetorComercialDescricao("");
httpServletRequest
.setAttribute("nomeCampo", "idLocalidade");
}
}
// [FS0003 - VERIFICAR EXISTENCIA DO SETOR COMERCIAL]
if (form.getIdSetorComercial() != null
&& !form.getIdSetorComercial().toString().trim()
.equalsIgnoreCase("")) {
if (form.getIdLocalidade() != null
&& !form.getIdLocalidade().toString().trim()
.equalsIgnoreCase("")) {
Collection colecaoSetoresComerciais = this
.pesquisarSetorComercial(new Integer(form
.getIdLocalidade()), new Integer(form
.getIdSetorComercial()));
if (colecaoSetoresComerciais != null
&& !colecaoSetoresComerciais.isEmpty()) {
SetorComercial setorComercial = (SetorComercial) colecaoSetoresComerciais
.iterator().next();
form.setIdSetorComercial(""
+ setorComercial.getCodigo());
form.setSetorComercialDescricao(setorComercial
.getDescricao());
httpServletRequest.setAttribute(
"codigoSetorComercialEncontrado", "true");
httpServletRequest.setAttribute("nomeCampo",
"fonteCaptacao");
} else {
httpServletRequest.setAttribute(
"codigoSetorComercialEncontrado", "exception");
httpServletRequest.setAttribute("nomeCampo",
"idSetorComercial");
form.setIdSetorComercial("");
form
.setSetorComercialDescricao("SETOR COMERCIAL INEXISTENTE");
}
}
} else {
form.setIdSetorComercial("");
form.setSetorComercialDescricao("");
}
}
Fachada fachada = Fachada.getInstancia();
FiltroSistemaAbastecimento filtroSistemaAbastecimento = new FiltroSistemaAbastecimento();
// Verifica se os dados foram informados da tabela existem e joga numa
// colecao
Collection<SistemaAbastecimento> colecaoSistemaAbastecimento = fachada.pesquisar(filtroSistemaAbastecimento,
SistemaAbastecimento.class.getName());
if (colecaoSistemaAbastecimento == null || colecaoSistemaAbastecimento.isEmpty()) {
throw new ActionServletException(
"atencao.entidade_sem_dados_para_selecao", null,
"Tabela Sistema Abastecimento");
}
//Manda valores do Sistema de Abastecimento para Sess�o
httpServletRequest.setAttribute("colecaoSistemaAbastecimento", colecaoSistemaAbastecimento);
if((form.getIdLocalidade()!=null && !form.getIdLocalidade().equals(""))
|| (form.getFonteCaptacao()!=null && !form.getFonteCaptacao().equals("-1"))
|| (form.getIdSetorComercial()!=null && !form.getIdSetorComercial().equals(""))){
httpServletRequest.setAttribute("validaCampos", "localidade");
}
if(form.getSistemaAbastecimento()!=null&& !form.getSistemaAbastecimento().equals("-1")){
httpServletRequest.setAttribute("validaCampos", "sistema");
}
this.montaColecaoFonteCaptacao(form, httpServletRequest);
return retorno;
}
/**
* Monta a colecao de Fontes de Captacao
*
* @author Rafael Pinto
* @date 15/10/2008
*/
private void montaColecaoFonteCaptacao(InserirQualidadeAguaActionForm form,
HttpServletRequest httpServletRequest) {
String localidade = form.getIdLocalidade();
String setorComercial = form.getIdSetorComercial();
Collection<FonteCaptacao> colecaoFonteCaptacao = new ArrayList<FonteCaptacao>();
// Pesquisa fontes de captacao por setor comercial
if (localidade != null && !localidade.equals("")
&& setorComercial != null && !setorComercial.equals("")) {
Collection colecaoSetoresComerciais = this.pesquisarSetorComercial(
new Integer(localidade), new Integer(setorComercial));
if (colecaoSetoresComerciais != null
&& !colecaoSetoresComerciais.isEmpty()) {
SetorComercial setor = (SetorComercial) colecaoSetoresComerciais
.iterator().next();
Collection colecaoSetor = new ArrayList();
colecaoSetor.add(setor);
colecaoFonteCaptacao = this.getFachada()
.pesquisarFonteCaptacao(colecaoSetor);
}
} else if (localidade != null && !localidade.equals("")) {
Collection colecaoSetoresComerciais = this.pesquisarSetorComercial(
new Integer(localidade), null);
colecaoFonteCaptacao = this.getFachada().pesquisarFonteCaptacao(
colecaoSetoresComerciais);
} else {
FiltroFonteCaptacao filtroFonteCaptacao = new FiltroFonteCaptacao();
filtroFonteCaptacao.limparListaParametros();
filtroFonteCaptacao.adicionarParametro(new ParametroSimples(
FiltroFonteCaptacao.INDICADOR_USO,
ConstantesSistema.INDICADOR_USO_ATIVO));
colecaoFonteCaptacao = this.getFachada().pesquisar(
filtroFonteCaptacao, FonteCaptacao.class.getName());
}
if (colecaoFonteCaptacao != null && !colecaoFonteCaptacao.isEmpty()) {
if(colecaoFonteCaptacao.size() == 1){
FonteCaptacao fonte = (FonteCaptacao) Util.retonarObjetoDeColecao(colecaoFonteCaptacao);
form.setFonteCaptacao(fonte.getId().toString());
}
httpServletRequest.setAttribute("colecaoFonteCaptacao",colecaoFonteCaptacao);
}
}
/**
* Pesquisa o SetorComercial
*
* @author Rafael Pinto
* @date 15/10/2008
*/
private Collection<SetorComercial> pesquisarSetorComercial(
Integer localidade, Integer setorComercial) {
FiltroSetorComercial filtroSetorComercial = new FiltroSetorComercial();
filtroSetorComercial.limparListaParametros();
filtroSetorComercial.adicionarParametro(new ParametroSimples(
FiltroSetorComercial.INDICADORUSO,
ConstantesSistema.INDICADOR_USO_ATIVO));
filtroSetorComercial.adicionarParametro(new ParametroSimples(
FiltroSetorComercial.ID_LOCALIDADE, localidade));
if (setorComercial != null) {
filtroSetorComercial
.adicionarParametro(new ParametroSimples(
FiltroSetorComercial.CODIGO_SETOR_COMERCIAL,
setorComercial));
}
return this.getFachada().pesquisar(filtroSetorComercial,
SetorComercial.class.getName());
}
}