package gcom.gui.cadastro.localidade;
import gcom.cadastro.geografico.FiltroMunicipio;
import gcom.cadastro.geografico.Municipio;
import gcom.cadastro.localidade.FiltroLocalidade;
import gcom.cadastro.localidade.FiltroSetorComercial;
import gcom.cadastro.localidade.Localidade;
import gcom.cadastro.localidade.SetorComercial;
import gcom.gui.ActionServletException;
import gcom.gui.GcomAction;
import gcom.operacional.FiltroFonteCaptacao;
import gcom.operacional.FonteCaptacao;
import gcom.seguranca.acesso.PermissaoEspecial;
import gcom.seguranca.acesso.usuario.Usuario;
import gcom.util.ConstantesSistema;
import gcom.util.Util;
import gcom.util.filtro.ParametroSimples;
import java.util.ArrayList;
import java.util.Collection;
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;
public class ExibirAtualizarSetorComercialAction extends GcomAction {
public ActionForward execute(ActionMapping actionMapping,
ActionForm actionForm, HttpServletRequest httpServletRequest,
HttpServletResponse httpServletResponse) {
//Seta o retorno
ActionForward retorno = actionMapping.findForward("exibirAtualizarSetorComercial");
//Obt�m a sess�o
HttpSession sessao = this.getSessao(httpServletRequest);
PesquisarAtualizarSetorComercialActionForm form =
(PesquisarAtualizarSetorComercialActionForm) actionForm;
String setorComercialID = (String) httpServletRequest.getParameter("setorComercialID");
if (setorComercialID == null){
if (httpServletRequest.getAttribute("setorComercialID") != null){
setorComercialID = (String) httpServletRequest.getAttribute("setorComercialID").toString();
}
}
//PERMISS�O PARA BLOQUEIO ALTERA��O DE IM�VEIS
boolean permissaoEspecialBloqueio = this.getFachada().verificarPermissaoEspecial(PermissaoEspecial.BLOQUEAR_ALTERACAO_IMOVEIS,(Usuario)sessao.getAttribute(Usuario.USUARIO_LOGADO));
if (permissaoEspecialBloqueio){
httpServletRequest.setAttribute("pemissaoIndicadorBloqueio", SetorComercial.BLOQUEIO_INSERIR_IMOVEL_SIM.intValue());
}else{
httpServletRequest.setAttribute("pemissaoIndicadorBloqueio", SetorComercial.BLOQUEIO_INSERIR_IMOVEL_NAO.intValue());
if (form != null){
if (form.getIndicadorBloqueio() != null
&& form.getIndicadorBloqueio().equals("1")){
httpServletRequest.setAttribute("bloqueio", true);
}else{
httpServletRequest.setAttribute("bloqueio", false);
}
}
}
String objetoConsulta = (String) httpServletRequest.getParameter("objetoConsulta");
String acao = (String) httpServletRequest.getParameter("acao");
Collection colecaoPesquisa = null;
if (objetoConsulta != null && !objetoConsulta.trim().equalsIgnoreCase("")) {
String localidadeID = null;
switch (Integer.parseInt(objetoConsulta)) {
//Localidade
case 1:
FiltroLocalidade filtroLocalidade = new FiltroLocalidade();
//Recebe o valor do campo localidadeID do formul�rio.
localidadeID = form.getLocalidadeID();
filtroLocalidade.adicionarParametro(
new ParametroSimples(
FiltroLocalidade.ID, localidadeID));
filtroLocalidade.adicionarParametro(
new ParametroSimples(
FiltroLocalidade.INDICADORUSO,
ConstantesSistema.INDICADOR_USO_ATIVO));
//Retorna localidade
colecaoPesquisa =
this.getFachada().pesquisar(filtroLocalidade,
Localidade.class.getName());
if (colecaoPesquisa == null || colecaoPesquisa.isEmpty()) {
//Localidade nao encontrada
//Limpa os campos localidadeID e localidadeNome do
// formul�rio
httpServletRequest.setAttribute("corLocalidade","exception");
form.setLocalidadeID("");
form.setLocalidadeNome("Localidade inexistente.");
} else {
httpServletRequest.setAttribute("corLocalidade", "valor");
Localidade objetoLocalidade =
(Localidade) Util.retonarObjetoDeColecao(colecaoPesquisa);
form.setLocalidadeID(String.valueOf(objetoLocalidade.getId()));
form.setLocalidadeNome(objetoLocalidade.getDescricao());
}
break;
//Municipio
case 2:
FiltroMunicipio filtroMunicipio = new FiltroMunicipio();
//Recebe o valor do campo municipioID do formul�rio.
String municipioID = form.getMunicipioID();
filtroMunicipio.adicionarParametro(
new ParametroSimples(
FiltroMunicipio.ID,
municipioID));
filtroMunicipio.adicionarParametro(
new ParametroSimples(
FiltroMunicipio.INDICADOR_USO,
ConstantesSistema.INDICADOR_USO_ATIVO));
//Retorna municipio
colecaoPesquisa =
this.getFachada().pesquisar(filtroMunicipio,
Municipio.class.getName());
if (colecaoPesquisa == null || colecaoPesquisa.isEmpty()) {
//Municipio nao encontrado
//Limpa os campos municipioID e municipioNome do formul�rio
httpServletRequest.setAttribute("corMunicipio", "exception");
form.setMunicipioID("");
form.setMunicipioNome("Munic�pio inexistente.");
} else {
httpServletRequest.setAttribute("corMunicipio", "valor");
Municipio objetoMunicipio =
(Municipio) Util.retonarObjetoDeColecao(colecaoPesquisa);
form.setMunicipioID(String.valueOf(objetoMunicipio.getId()));
form.setMunicipioNome(objetoMunicipio.getNome());
}
break;
case 3:
FonteCaptacao objetoFonteCaptacao =
this.pesquisarFonteCaptacao(form.getFonteCaptacao());
if (objetoFonteCaptacao == null) {
form.setFonteCaptacao("");
form.setDescricaoFonteCaptacao("Fonte de Capta��o inexistente.");
}else{
form.setFonteCaptacao(String.valueOf(objetoFonteCaptacao.getId()));
form.setDescricaoFonteCaptacao(objetoFonteCaptacao.getDescricao());
httpServletRequest.setAttribute("fonteCaptacaoEncontrada", true);
}
break;
default:
break;
}
} else if(acao != null && !acao.trim().equalsIgnoreCase("") && acao.equals("A")){
this.montarColecaoFonte(httpServletRequest,form.getFonteCaptacao());
form.setFonteCaptacao("");
form.setDescricaoFonteCaptacao("");
} else if(acao != null && !acao.trim().equalsIgnoreCase("") && acao.equals("R")){
String idRemover = (String) httpServletRequest.getParameter("idRemover");
this.removerColecaoFonte(httpServletRequest,idRemover);
} else {
if (setorComercialID == null || setorComercialID.equalsIgnoreCase("")) {
//ID do setor comercial n�o informado
throw new ActionServletException("atencao.codigo_setor_comercial_nao_informado");
} else {
FiltroSetorComercial filtroSetorComercial = new FiltroSetorComercial();
//Objetos que ser�o retornados pelo hibernate
filtroSetorComercial.adicionarCaminhoParaCarregamentoEntidade("localidade");
filtroSetorComercial.adicionarCaminhoParaCarregamentoEntidade("municipio");
filtroSetorComercial.adicionarParametro(new ParametroSimples(
FiltroSetorComercial.ID, setorComercialID));
//Retorna setor comercial
colecaoPesquisa =
this.getFachada().pesquisar(filtroSetorComercial,
SetorComercial.class.getName());
if (colecaoPesquisa == null || colecaoPesquisa.isEmpty()) {
//Setor comercial n�o cadastrado
throw new ActionServletException("atencao.processo.setorComercialNaoCadastrada");
} else {
SetorComercial setorComercial = (SetorComercial) Util
.retonarObjetoDeColecao(colecaoPesquisa);
//Colocando o objeto na sess�o
sessao.setAttribute("setorComercialManter", setorComercial);
form.setSetorComercialID(setorComercialID);
form.setLocalidadeID(String.valueOf(setorComercial.getLocalidade().getId()));
form.setLocalidadeNome(setorComercial.getLocalidade().getDescricao());
form.setSetorComercialCD(String.valueOf(setorComercial.getCodigo()));
form.setSetorComercialNome(setorComercial.getDescricao());
form.setMunicipioID(String.valueOf(setorComercial.getMunicipio().getId()));
form.setMunicipioNome(setorComercial.getMunicipio().getNome());
form.setIndicadorUso(String.valueOf(setorComercial.getIndicadorUso()));
form.setIndicadorBloqueio(String.valueOf(setorComercial.getIndicadorBloqueio()));
if (setorComercial.getIndicadorBloqueio().intValue() == SetorComercial.BLOQUEIO_INSERIR_IMOVEL_SIM.intValue()){
httpServletRequest.setAttribute("bloqueio", true);
}else{
httpServletRequest.setAttribute("bloqueio", false);
}
form.setIndicadorSetorAlternativo(String.valueOf(setorComercial.getIndicadorSetorAlternativo()));
Collection colecaoSetor = new ArrayList();
colecaoSetor.add(setorComercial);
Collection colecaoFonteCaptacao =
this.getFachada().pesquisarFonteCaptacao(colecaoSetor);
if(colecaoFonteCaptacao != null && !colecaoFonteCaptacao.isEmpty()){
this.getSessao(httpServletRequest).setAttribute("colecaoFonteCaptacao",colecaoFonteCaptacao);
}else{
this.getSessao(httpServletRequest).removeAttribute("colecaoFonteCaptacao");
}
}
}
}
if (httpServletRequest.getAttribute("voltar") == null){
if(sessao.getAttribute("manter") == null)
{
httpServletRequest.setAttribute("voltar", "filtrarNovo");
sessao.setAttribute("indicadorAtualizar","1");
}else
{
httpServletRequest.setAttribute("voltar", "manter");
}
}
httpServletRequest.setAttribute("setorComercialID", setorComercialID);
this.setaRequest(httpServletRequest,form);
//devolve o mapeamento de retorno
return retorno;
}
private FonteCaptacao pesquisarFonteCaptacao(String fonte){
Collection colecaoPesquisa = null;
FonteCaptacao objetoFonteCaptacao = null;
FiltroFonteCaptacao filtroFonteCaptacao = new FiltroFonteCaptacao();
filtroFonteCaptacao.adicionarParametro(
new ParametroSimples(
FiltroFonteCaptacao.ID,
fonte));
filtroFonteCaptacao.adicionarParametro(
new ParametroSimples(
FiltroFonteCaptacao.INDICADOR_USO,
ConstantesSistema.INDICADOR_USO_ATIVO));
//Retorna a fonte de captacao
colecaoPesquisa =
this.getFachada().pesquisar(
filtroFonteCaptacao,
FonteCaptacao.class.getName());
if (colecaoPesquisa != null && !colecaoPesquisa.isEmpty()) {
objetoFonteCaptacao =
(FonteCaptacao) Util.retonarObjetoDeColecao(colecaoPesquisa);
}
return objetoFonteCaptacao;
}
private void montarColecaoFonte(HttpServletRequest httpServletRequest,String fonte){
Collection colecaoFonte = (Collection)
this.getSessao(httpServletRequest).getAttribute("colecaoFonteCaptacao");
if(colecaoFonte != null && !colecaoFonte.isEmpty()){
Iterator itera = colecaoFonte.iterator();
boolean jaExisteFonte = false;
while (itera.hasNext()) {
FonteCaptacao element = (FonteCaptacao) itera.next();
if(fonte.equals(""+element.getId())){
jaExisteFonte = true;
break;
}
}
if(!jaExisteFonte){
FonteCaptacao objetoFonteCaptacao =
this.pesquisarFonteCaptacao(fonte);
colecaoFonte.add(objetoFonteCaptacao);
}
}else{
colecaoFonte = new ArrayList();
FonteCaptacao objetoFonteCaptacao =
this.pesquisarFonteCaptacao(fonte);
colecaoFonte.add(objetoFonteCaptacao);
this.getSessao(httpServletRequest).setAttribute("colecaoFonteCaptacao",colecaoFonte);
}
}
private void removerColecaoFonte(HttpServletRequest httpServletRequest,String fonte){
Collection colecaoFonte = (Collection)
this.getSessao(httpServletRequest).getAttribute("colecaoFonteCaptacao");
Iterator itera = colecaoFonte.iterator();
while (itera.hasNext()) {
FonteCaptacao element = (FonteCaptacao) itera.next();
if(fonte.equals(""+element.getId())){
itera.remove();
break;
}
}
}
/**
* Seta os request com os id encontrados
*
* @author Rafael Pinto
* @date 16/10/2006
*/
private void setaRequest(HttpServletRequest httpServletRequest,
PesquisarAtualizarSetorComercialActionForm form) {
// Fonte de Captacao
if (form.getFonteCaptacao() != null &&
!form.getFonteCaptacao().equals("") &&
form.getDescricaoFonteCaptacao() != null &&
!form.getDescricaoFonteCaptacao().equals("")) {
httpServletRequest.setAttribute("fonteCaptacaoEncontrada", true);
}
}
}