package gcom.gui.faturamento.conta;
import gcom.cadastro.imovel.Categoria;
import gcom.cadastro.imovel.FiltroSubCategoria;
import gcom.cadastro.imovel.Subcategoria;
import gcom.cadastro.sistemaparametro.SistemaParametro;
import gcom.fachada.Fachada;
import gcom.gui.GcomAction;
import gcom.util.Util;
import gcom.util.filtro.ParametroSimples;
import java.util.Collection;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;
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 RemoverSelecaoCategoriaAction extends GcomAction {
public ActionForward execute(ActionMapping actionMapping,
ActionForm actionForm, HttpServletRequest httpServletRequest,
HttpServletResponse httpServletResponse) {
//Define o caso de uso que receber� o resultado desta remo��o
String mapeamentoStruts = httpServletRequest.getParameter("mapeamento");
//Seta o mapeamento de retorno
ActionForward retorno = actionMapping
.findForward(mapeamentoStruts);
//Mudar isso quando tiver esquema de seguran�a
HttpSession sessao = httpServletRequest.getSession(false);
String idCategoria = httpServletRequest.getParameter("idCategoria");
this.removerCategoria(idCategoria, sessao);
String idSubcategoria = httpServletRequest.getParameter("idSubcategoria");
this.removerSubcategoria(idSubcategoria, sessao);
//Obt�m a inst�ncia da fachada
Fachada fachada = Fachada.getInstancia();
/*
* Colocado por Raphael Rossiter em 29/03/2007
* Objetivo: Manipula��o dos objetos que ser�o exibidos no formul�rio de acordo com a empresa
*/
SistemaParametro sistemaParametro = fachada.pesquisarParametrosDoSistema();
httpServletRequest.setAttribute("empresaNome", sistemaParametro.getNomeAbreviadoEmpresa().trim());
return retorno;
}
private void removerCategoria(String idCategoria, HttpSession sessao){
if (idCategoria != null && !idCategoria.equalsIgnoreCase("") &&
sessao.getAttribute("colecaoCategoria") != null){
Collection colecaoCategoria = (Collection) sessao.getAttribute("colecaoCategoria");
Categoria categoriaSelect = new Categoria();
categoriaSelect.setId(new Integer(idCategoria));
colecaoCategoria.remove(categoriaSelect);
if(colecaoCategoria.isEmpty() || colecaoCategoria == null){
sessao.setAttribute("colecao", 1);
sessao.removeAttribute("adicionar");
}
else{
sessao.removeAttribute("existeColecao");
}
}
}
private void removerSubcategoria(String idSubcategoria, HttpSession sessao){
if (idSubcategoria != null && !idSubcategoria.equalsIgnoreCase("") &&
sessao.getAttribute("colecaoSubcategoria") != null){
Collection colecaoSubcategoria = (Collection) sessao.getAttribute("colecaoSubcategoria");
//Pesquisa a subcategoria selecionada para carregar os atributos.
FiltroSubCategoria filtroSubCategoria = new FiltroSubCategoria();
filtroSubCategoria.adicionarCaminhoParaCarregamentoEntidade("categoria");
filtroSubCategoria.adicionarParametro(new ParametroSimples(FiltroSubCategoria.ID,
idSubcategoria));
Collection colecaoSubCategoriaSelected = Fachada.getInstancia().pesquisar(filtroSubCategoria,
Subcategoria.class.getName());
Subcategoria subcategoriaSelect = (Subcategoria) Util.retonarObjetoDeColecao(colecaoSubCategoriaSelected);
colecaoSubcategoria.remove(subcategoriaSelect);
if(colecaoSubcategoria.isEmpty() || colecaoSubcategoria == null){
sessao.setAttribute("colecao", 1);
sessao.removeAttribute("adicionar");
}
else{
sessao.removeAttribute("existeColecao");
}
Collections.sort((List) colecaoSubcategoria, new Comparator() {
public int compare(Object a, Object b) {
Subcategoria subcategoria1 = (Subcategoria) a;
Subcategoria subcategoria2 = (Subcategoria) b;
int comparacaoCategoria = subcategoria1.getCategoria().getDescricao()
.compareTo(subcategoria2.getCategoria().getDescricao());
if (comparacaoCategoria == 0){
return subcategoria1.getDescricao()
.compareTo(subcategoria2.getDescricao());
}
else{
return comparacaoCategoria;
}
}
});
}
}
}