package gcom.gui.cadastro.imovel;
import gcom.cadastro.imovel.AreaConstruidaFaixa;
import gcom.cadastro.imovel.FiltroAreaConstruidaFaixa;
import gcom.cadastro.imovel.Imovel;
import gcom.cadastro.imovel.ImovelEconomia;
import gcom.cadastro.imovel.ImovelSubcategoria;
import gcom.fachada.Fachada;
import gcom.gui.ActionServletException;
import gcom.gui.GcomAction;
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.math.BigDecimal;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Date;
import java.util.HashSet;
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;
/**
* Action responsavel para inserir o im�vel economia na cole��o do cliente
* im�vel economia
*
* @author S�vio Luiz
* @created 20 de Maio de 2004
*/
public class InserirEconomiaPopupAction extends GcomAction {
/**
* < <Descri��o do m�todo>>
*
* @param actionMapping
* Descri��o do par�metro
* @param actionForm
* Descri��o do par�metro
* @param httpServletRequest
* Descri��o do par�metro
* @param httpServletResponse
* Descri��o do par�metro
* @return Descri��o do retorno
*/
public ActionForward execute(ActionMapping actionMapping,
ActionForm actionForm, HttpServletRequest httpServletRequest,
HttpServletResponse httpServletResponse) {
// localiza o action no objeto actionmapping
ActionForward retorno = actionMapping
.findForward("inserirEconomiaPopup");
// Obt�m o action form
EconomiaPopupActionForm economiaPopupActionForm = (EconomiaPopupActionForm) actionForm;
// Obt�m a inst�ncia da sess�o
HttpSession sessao = httpServletRequest.getSession(false);
Collection colecaoClientesImoveisEconomia = null;
//Collection colecaoImovelEconomiaClientes = null;
Collection colecaoImovelEconomiasModificadas = null;
ImovelSubcategoria imovelSubCategoria = (ImovelSubcategoria) sessao
.getAttribute("imovelSubCategoria");
Fachada fachada = Fachada.getInstancia();
Collection imovelEconomias = null;
if (imovelSubCategoria.getImovelEconomias() == null
|| imovelSubCategoria.getImovelEconomias().equals("")) {
imovelEconomias = new ArrayList();
} else {
imovelEconomias = imovelSubCategoria.getImovelEconomias();
}
if (imovelEconomias.size() <= imovelSubCategoria
.getQuantidadeEconomias()) {
// Cole��o vinda do imovel_inserir_economia_popup
// com a cole��o de cliente, imovel e tipo da rela��o
if (sessao.getAttribute("colecaoClientesImoveisEconomia") != null) {
colecaoClientesImoveisEconomia = (Collection) sessao
.getAttribute("colecaoClientesImoveisEconomia");
} else {
colecaoClientesImoveisEconomia = new ArrayList();
}
// pega da sess�o a cole��o para os imoveis economias inseridos e/ou
// modificados
colecaoImovelEconomiasModificadas = (Collection) sessao
.getAttribute("colecaoImovelEconomiasModificadas");
Imovel imovel = (Imovel) sessao.getAttribute("imovel");
// Cria objeto areaConstruida
AreaConstruidaFaixa areaConstruidaFaixa = null;
BigDecimal areaConstruida = null;
Integer areaContruidaFaixaForm = (new Integer(
economiaPopupActionForm.getIdAreaConstruidaFaixa()
.toString()));
if (areaContruidaFaixaForm != null
&& areaContruidaFaixaForm.intValue() != ConstantesSistema.NUMERO_NAO_INFORMADO) {
areaConstruidaFaixa = new AreaConstruidaFaixa();
areaConstruidaFaixa.setId(areaContruidaFaixaForm);
/*if (economiaPopupActionForm.getAreaConstruida() != null
&& !economiaPopupActionForm.getAreaConstruida().equals(
"")) {
}*/
} else {
if (economiaPopupActionForm.getAreaConstruida() != null
&& !economiaPopupActionForm.getAreaConstruida().equals(
"")) {
Collection areasConstruidasFaixas = null;
String areaConstuidaPrrv = economiaPopupActionForm.getAreaConstruida().replace(".", "");
areaConstruida = (new BigDecimal(areaConstuidaPrrv.replace(",",".")));
// Filtro AreaConstruidaFaixa
FiltroAreaConstruidaFaixa filtroAreaConstruidaFaixa = new FiltroAreaConstruidaFaixa();
// fazer a parte de filtro adicionar parametro maior que
// e filtro adicionar parametro menos que
filtroAreaConstruidaFaixa
.adicionarParametro(new ParametroSimples(
FiltroAreaConstruidaFaixa.INDICADOR_USO,
ConstantesSistema.INDICADOR_USO_ATIVO));
filtroAreaConstruidaFaixa.adicionarParametro(new MaiorQue(
FiltroAreaConstruidaFaixa.MAIOR_FAIXA,
areaConstruida));
filtroAreaConstruidaFaixa.adicionarParametro(new MenorQue(
FiltroAreaConstruidaFaixa.MENOR_FAIXA,
areaConstruida));
areasConstruidasFaixas = fachada.pesquisar(
filtroAreaConstruidaFaixa,
AreaConstruidaFaixa.class.getName());
if (areasConstruidasFaixas != null
&& !areasConstruidasFaixas.isEmpty()) {
Iterator areaContruidaFaixaIterator = areasConstruidasFaixas
.iterator();
areaConstruidaFaixa = (AreaConstruidaFaixa) areaContruidaFaixaIterator
.next();
}
}
}
// recupera os dados do form
String complementoEndereco = (String) economiaPopupActionForm
.getComplementoEndereco();
Short numeroMoradores = null;
if (economiaPopupActionForm.getNumeroMorador() != null
&& !economiaPopupActionForm.getNumeroMorador().equalsIgnoreCase("")){
numeroMoradores = (new Short(economiaPopupActionForm
.getNumeroMorador().toString()));
}
Short numeroPontoUtilizacao = null;
if (economiaPopupActionForm.getNumeroPontosUtilizacao() != null
&& !economiaPopupActionForm.getNumeroPontosUtilizacao().equalsIgnoreCase("")){
numeroPontoUtilizacao = (new Short(economiaPopupActionForm
.getNumeroPontosUtilizacao().toString()));
}
String numeroIptu = null;
if (economiaPopupActionForm.getNumeroIptu() != null
&& !economiaPopupActionForm.getNumeroIptu().equals("")) {
// verifica se existe no imovel, no imovelEconomia ou na cole��o
// que ser�
// inserida se existe algum iptu cadastrado com o numero do iptu
// digitado no
// mesmo municipio
fachada.verificarExistenciaIPTU(
colecaoImovelEconomiasModificadas, imovel,
economiaPopupActionForm.getNumeroIptu(), new Date());
numeroIptu = Util.formatarIPTU(economiaPopupActionForm
.getNumeroIptu().toString());
}
Long numeroContratoEnergia = null;
if (economiaPopupActionForm.getNumeroCelpe() != null
&& !economiaPopupActionForm.getNumeroCelpe().equals("")) {
// verifica se existe no imovel, no imovelEconomia ou na cole��o
// que ser�
// inserida se existe algum iptu cadastrado com o numero da
// celpe digitado
fachada.verificarExistenciaCelpe(
colecaoImovelEconomiasModificadas, imovel,
economiaPopupActionForm.getNumeroCelpe(), new Date());
numeroContratoEnergia = (new Long(economiaPopupActionForm
.getNumeroCelpe().toString()));
}
ImovelEconomia imovelEconomia = new ImovelEconomia(
complementoEndereco, numeroMoradores,
numeroPontoUtilizacao, numeroIptu, numeroContratoEnergia,
areaConstruida, new Date(), areaConstruidaFaixa,
imovelSubCategoria, new HashSet(
colecaoClientesImoveisEconomia));
// seta um codigo modificado para quando for atualizado esse imovel
// economia
// n�o colocar na cole��o de colecaoImovelEconomiasModificadas
imovelEconomia.setCodigoModificado(imovelEconomia.getHashCode());
if (!imovelEconomias.contains(imovelEconomia)) {
imovelEconomias.add(imovelEconomia);
imovelSubCategoria.setImovelEconomias(new HashSet(
imovelEconomias));
colecaoImovelEconomiasModificadas.add(imovelEconomia);
} else {
throw new ActionServletException(
"atencao.ja_cadastrado.imovel_economia");
}
// para incluir mais rela��es entre cliente e imoveis, se preciso
sessao.setAttribute("colecaoClientesImoveisEconomia",
new ArrayList());
// manda a cole��o para a sess�o
sessao.setAttribute("colecaoImovelEconomiasModificadas",
colecaoImovelEconomiasModificadas);
// inicializa o property idClienteImovelUsuarioEconomias para a
// inclus�o de
// novas rela��es entre cliente imovel do tipo usu�rio
economiaPopupActionForm.setIdClienteImovelUsuario(null);
// inicializa todos os propertys para nulo
economiaPopupActionForm.setComplementoEndereco(null);
economiaPopupActionForm.setNumeroPontosUtilizacao(null);
economiaPopupActionForm.setNumeroMorador(null);
economiaPopupActionForm.setNumeroIptu(null);
economiaPopupActionForm.setNumeroCelpe(null);
economiaPopupActionForm.setAreaConstruida(null);
economiaPopupActionForm.setIdAreaConstruidaFaixa(null);
economiaPopupActionForm.setIdCliente(null);
economiaPopupActionForm.setNomeCliente(null);
if (httpServletRequest.getParameter("testeInserir")
.equalsIgnoreCase("true")) {
httpServletRequest.setAttribute("testeInserir", "true");
}
// Manda a cole��o do imovel_inserir_economia_popup
// com a cole��o de cliente, imovel e tipo da rela��o
sessao.setAttribute("contIdentificadorTemp", new Integer(
imovelEconomias.size() + 1));
} else {
throw new ActionServletException(
"atencao.quantidade_ultrapassada.imovel_economia", null,
new Integer(imovelSubCategoria.getImovelEconomias().size())
.toString());
}
return retorno;
}
}