package gcom.gui.cadastro.imovel; import gcom.cadastro.imovel.ImovelEconomia; import gcom.cadastro.imovel.ImovelSubcategoria; import gcom.gui.GcomAction; import java.util.Collection; 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 que remove a o objeto selecionado de cliente imovel economia que est� * com o imovel economia * * @author S�vio Luiz * @created 20 de Maio de 2004 */ public class RemoverEconomiaAction 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) { // Prepara o retorno da A��o ActionForward retorno = actionMapping.findForward("informarEconomia"); // Obt�m a inst�ncia da sess�o HttpSession sessao = httpServletRequest.getSession(false); //Fachada fachada = Fachada.getInstancia(); // Cria variaveis Collection colecaoImovelSubCategoriasCadastradas = (Collection) sessao .getAttribute("colecaoImovelSubCategoriasCadastradas"); Collection colecaoImovelEconomiasModificadas = (Collection) sessao .getAttribute("colecaoImovelEconomiasModificadas"); String codigoImovelEconomia = (String) httpServletRequest .getParameter("codigoImovelEconomia"); Collection colecaoImovelSubCategoriaNova = new HashSet(); // Verifica se veio algum parametro no economia_inserir.jsp // caso tenha vindo pega o parametro e procura na cole��o um objeto // que tenha um hashCode igual ao do parametro if (httpServletRequest.getParameter("codigoImovelEconomia") != null && !httpServletRequest.getParameter("codigoImovelEconomia") .trim().equals("")) { Iterator imovelSubCategoriaIterator = colecaoImovelSubCategoriasCadastradas .iterator(); while (imovelSubCategoriaIterator.hasNext()) { ImovelSubcategoria imovelSubCategoria = null; imovelSubCategoria = (ImovelSubcategoria) imovelSubCategoriaIterator .next(); Iterator imovelEconomiaIterator = imovelSubCategoria .getImovelEconomias().iterator(); Collection colecaoImovelEconomiaiNaoRemovidas = new HashSet(); while (imovelEconomiaIterator.hasNext()) { ImovelEconomia imovelEconomia = (ImovelEconomia) imovelEconomiaIterator .next(); if (imovelEconomia.getUltimaAlteracao().getTime() == Long .parseLong(codigoImovelEconomia)) { // caso o imovel economia tenha codigo igual a nulo if (imovelEconomia.getId() == null || imovelEconomia.getId().equals("")) { // remove o imovel economia s� da cole��o // pois n�o existe na base ainda. imovelEconomiaIterator.remove(); // caso o imovel economia tenha codigo n�o seja // igual a nulo } else { // remove o imovel economia s� da cole��o // e como ja existe na base tamb�m remove da // base //fachada.removerImovelEconomia(imovelEconomia); if (sessao.getAttribute("colecaoRemovidas") != null){ Collection colecaoRemovidas = (Collection) sessao.getAttribute("colecaoRemovidas"); colecaoRemovidas.add(imovelEconomia); sessao.setAttribute("colecaoRemovidas", colecaoRemovidas); } else { Collection<ImovelEconomia> colecaoRemovidas = new HashSet(); colecaoRemovidas.add(imovelEconomia); sessao.setAttribute("colecaoRemovidas", colecaoRemovidas); } imovelEconomiaIterator.remove(); } } else { if (imovelSubCategoria.getComp_id().getSubcategoria() .getId().equals( imovelEconomia.getImovelSubcategoria() .getComp_id().getSubcategoria() .getId())) { colecaoImovelEconomiaiNaoRemovidas .add(imovelEconomia); imovelEconomiaIterator.remove(); } } } imovelSubCategoria.setImovelEconomias(new HashSet( colecaoImovelEconomiaiNaoRemovidas)); colecaoImovelSubCategoriaNova.add(imovelSubCategoria); } } // � preciso remover , caso o getTime da ultimaAltera��o sej� igual,os // im�veis economia // da colecao de imovelEconomiasModificadas que foi removido. Iterator imoveisEconomiaModificadasIterator = colecaoImovelEconomiasModificadas .iterator(); while (imoveisEconomiaModificadasIterator.hasNext()) { ImovelEconomia imovelEconomiaModificada = (ImovelEconomia) imoveisEconomiaModificadasIterator .next(); if (imovelEconomiaModificada.getUltimaAlteracao().getTime() == Long .parseLong(codigoImovelEconomia)) { imoveisEconomiaModificadasIterator.remove(); break; } } sessao.setAttribute("colecaoImovelSubCategoriasCadastradas", colecaoImovelSubCategoriaNova); return retorno; } }