package gcom.gui.atendimentopublico.registroatendimento;
import gcom.atendimentopublico.registroatendimento.EspecificacaoImovSitCriterio;
import gcom.atendimentopublico.registroatendimento.EspecificacaoImovelSituacao;
import gcom.atendimentopublico.registroatendimento.FiltroEspecificacaoImovelSituacao;
import gcom.atendimentopublico.registroatendimento.FiltroEspecificacaoImovelSituacaoCriterio;
import gcom.fachada.Fachada;
import gcom.gui.GcomAction;
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;
/**
* [UC0404] - Manter Especifica��o da Situa��o do Im�vel
* [SB0001] - Atualizar Especifica��o da situa��o
*
* @author Rafael Pinto
*
* @date 09/11/2006
*/
public class ExibirAtualizarEspecificacaoSituacaoImovelAction extends GcomAction {
public ActionForward execute(ActionMapping actionMapping,
ActionForm actionForm, HttpServletRequest httpServletRequest,
HttpServletResponse httpServletResponse) {
ActionForward retorno = actionMapping.findForward("atualizarEspecificacaoSituacaoImovel");
AtualizarEspecificacaoSituacaoImovelActionForm form =
(AtualizarEspecificacaoSituacaoImovelActionForm) actionForm;
String tipoOperacao = httpServletRequest.getParameter("tipoOperacao");
if (form.getDeleteSituacaoCriterioImovel() != null && !form.getDeleteSituacaoCriterioImovel().equals("")) {
this.removeSituacaoCriterioImovel(form);
}else if (tipoOperacao == null || tipoOperacao.equals("")){
HttpSession sessao = httpServletRequest.getSession(false);
Fachada fachada = Fachada.getInstancia();
EspecificacaoImovelSituacao especificacaoImovelSituacao = null;
String idEspecificacao = form.getIdEspecificacao();
if (idEspecificacao == null || idEspecificacao.equals("")){
if (httpServletRequest.getAttribute("idRegistroAtualizar") == null){
idEspecificacao = (String) sessao.getAttribute("idRegistroAtualizar");
}else{
idEspecificacao = (String) httpServletRequest.getAttribute("idRegistroAtualizar").toString();
}
}
if (idEspecificacao != null && !idEspecificacao.equals("")) {
FiltroEspecificacaoImovelSituacao filtro = new FiltroEspecificacaoImovelSituacao();
filtro.adicionarParametro(new ParametroSimples(FiltroEspecificacaoImovelSituacao.ID, idEspecificacao));
Collection colecao =
fachada.pesquisar(filtro, EspecificacaoImovelSituacao.class.getName());
if (colecao != null && !colecao.isEmpty()) {
especificacaoImovelSituacao = (EspecificacaoImovelSituacao) Util.retonarObjetoDeColecao(colecao);
}
}
FiltroEspecificacaoImovelSituacaoCriterio filtro =
new FiltroEspecificacaoImovelSituacaoCriterio();
filtro.adicionarParametro(
new ParametroSimples(
FiltroEspecificacaoImovelSituacaoCriterio.ESPECIFICAO_SITUACAO_IMOVEL_ID, idEspecificacao));
filtro.adicionarCaminhoParaCarregamentoEntidade("ligacaoEsgotoSituacao");
filtro.adicionarCaminhoParaCarregamentoEntidade("ligacaoAguaSituacao");
Collection<EspecificacaoImovSitCriterio> colecaoEspecificacaoImovelSituacaoCriterio =
fachada.pesquisar(filtro,EspecificacaoImovSitCriterio.class.getName());
form.setIdEspecificacao(""+especificacaoImovelSituacao.getId());
form.setDescricaoEspecificacao(especificacaoImovelSituacao.getDescricao());
form.setEspecificacaoImovelSituacaoCriterio(colecaoEspecificacaoImovelSituacaoCriterio);
form.setTamanhoColecao(""+colecaoEspecificacaoImovelSituacaoCriterio.size());
sessao.setAttribute("especificacaoImovelSituacao",especificacaoImovelSituacao);
}
resetPopup(form);
return retorno;
}
/**
* Remove Situacao Criterio Imovel da Cole��o
*
* @author Rafael Pinto
* @date 03/08/2006
*
* @param AtualizarEspecificacaoSituacaoImovelActionForm
*/
private void removeSituacaoCriterioImovel(AtualizarEspecificacaoSituacaoImovelActionForm form) {
Collection newSituacaoCriterioImovelCollection = new ArrayList();
int index = 0;
for (Iterator iter = form.getEspecificacaoImovelSituacaoCriterio().iterator(); iter.hasNext();) {
index++;
EspecificacaoImovSitCriterio element = (EspecificacaoImovSitCriterio) iter.next();
if (index != new Integer(form.getDeleteSituacaoCriterioImovel()).intValue()) {
newSituacaoCriterioImovelCollection.add(element);
}else{
if(element.getId() != null){
form.getEspecificacaoImovelSituacaoCriterioRemovidas().add(element);
}
}
}
form.setEspecificacaoImovelSituacaoCriterio(newSituacaoCriterioImovelCollection);
form.setTamanhoColecao(newSituacaoCriterioImovelCollection.size()+"");
form.setDeleteSituacaoCriterioImovel(null);
resetPopup(form);
}
/**
* Reseta informa��es vindas do popup
*
* @author Rafael Pinto
* @date 03/08/2006
*
* @param inserirEspecificacaoSituacaoImovelActionForm
*/
private void resetPopup(AtualizarEspecificacaoSituacaoImovelActionForm form) {
form.setIndicadorHidrometroLigacaoAgua(null);
form.setIndicadorHidrometroPoco(null);
form.setSituacaoLigacaoAgua(null);
form.setSituacaoLigacaoEsgoto(null);
}
}