package gcom.gui.cadastro.imovel;
import gcom.cadastro.imovel.Categoria;
import gcom.cadastro.imovel.CategoriaTipo;
import gcom.cadastro.imovel.FiltroCategoria;
import gcom.cadastro.imovel.FiltroCategoriaTipo;
import gcom.cadastro.imovel.FiltroImovelPerfil;
import gcom.cadastro.imovel.FiltroSubCategoria;
import gcom.cadastro.imovel.ImovelPerfil;
import gcom.cadastro.imovel.Subcategoria;
import gcom.fachada.Fachada;
import gcom.gui.ActionServletException;
import gcom.gui.GcomAction;
import gcom.util.ConstantesSistema;
import gcom.util.Util;
import gcom.util.filtro.ParametroSimples;
import java.util.Collection;
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 ExibirFiltrarImovelCurvaAbcDebitosCaracteristicas extends GcomAction {
public ActionForward execute(ActionMapping actionMapping,
ActionForm actionForm, HttpServletRequest httpServletRequest,
HttpServletResponse httpServletResponse) {
ActionForward retorno = actionMapping
.findForward("filtrarImovelCurvaAbcDebitosCaracteristicas");
//obt�m a inst�ncia da sess�o
HttpSession sessao = httpServletRequest.getSession(false);
ImovelCurvaAbcDebitosActionForm imovelCurvaAbcDebitosActionForm = (ImovelCurvaAbcDebitosActionForm) actionForm;
Fachada fachada = Fachada.getInstancia();
Collection<ImovelPerfil> collectionImovelPerfil = null;
Collection<CategoriaTipo> collectionCategoriaTipo = null;
Collection<Categoria> collectionImovelCategoria= null;
Collection<Subcategoria> collectionImovelSubcategoria = null;
Integer idTipoCategoria = 0;
Integer idCategoria = 0;
Integer categoria = null;
if (sessao.getAttribute("idTipoCategoria") != null) {
idTipoCategoria = Util.converterStringParaInteger(sessao.getAttribute("idTipoCategoria").toString());
}
if (sessao.getAttribute("idCategoria") != null) {
idCategoria = Util.converterStringParaInteger(sessao.getAttribute("idCategoria").toString());
}
if (imovelCurvaAbcDebitosActionForm.getCategoria() != null) {
categoria = new Integer(imovelCurvaAbcDebitosActionForm.getCategoria()[0]);
}
if (imovelCurvaAbcDebitosActionForm.getIdTipoCategoria() != null &&
!imovelCurvaAbcDebitosActionForm.getIdTipoCategoria().trim().equalsIgnoreCase("" + ConstantesSistema.NUMERO_NAO_INFORMADO) &&
!imovelCurvaAbcDebitosActionForm.getIdTipoCategoria().trim().equals("") &&
Util.converterStringParaInteger(imovelCurvaAbcDebitosActionForm.getIdTipoCategoria()) != idTipoCategoria) {
FiltroCategoria filtroCategoria = new FiltroCategoria();
filtroCategoria.adicionarParametro(new ParametroSimples(FiltroCategoria.TIPO_CATEGORIA,
imovelCurvaAbcDebitosActionForm.getIdTipoCategoria()));
filtroCategoria.setCampoOrderBy(FiltroCategoria.DESCRICAO);
collectionImovelCategoria = fachada.pesquisar(filtroCategoria, Categoria.class.getName());
if (idCategoria != 0) {
FiltroSubCategoria filtroSubcategoria = new FiltroSubCategoria();
filtroSubcategoria.setCampoOrderBy(FiltroSubCategoria.DESCRICAO);
collectionImovelSubcategoria = fachada.pesquisar(filtroSubcategoria, Subcategoria.class.getName());
sessao.setAttribute("collectionImovelSubcategoria", collectionImovelSubcategoria);
}
sessao.setAttribute("collectionImovelCategoria", collectionImovelCategoria);
sessao.setAttribute("idTipoCategoria", imovelCurvaAbcDebitosActionForm.getIdTipoCategoria());
}else if (categoria != null && categoria != idCategoria) {
FiltroSubCategoria filtroSubcategoria = new FiltroSubCategoria();
if (!categoria.toString().trim().equalsIgnoreCase("" + ConstantesSistema.NUMERO_NAO_INFORMADO)) {
filtroSubcategoria.adicionarParametro(new ParametroSimples(FiltroSubCategoria.CATEGORIA_ID, categoria));
}else {
filtroSubcategoria.setCampoOrderBy(FiltroSubCategoria.DESCRICAO);
}
filtroSubcategoria.setCampoOrderBy(FiltroSubCategoria.DESCRICAO);
collectionImovelSubcategoria = fachada.pesquisar(filtroSubcategoria, Subcategoria.class.getName());
sessao.setAttribute("collectionImovelSubcategoria", collectionImovelSubcategoria);
sessao.setAttribute("idCategoria", categoria);
}else {
FiltroImovelPerfil filtroImovelPerfil = new FiltroImovelPerfil();
filtroImovelPerfil.setCampoOrderBy(FiltroImovelPerfil.DESCRICAO);
collectionImovelPerfil = fachada.pesquisar(filtroImovelPerfil, ImovelPerfil.class.getName() );
if(collectionImovelPerfil == null || collectionImovelPerfil.isEmpty()){
throw new ActionServletException("atencao.naocadastrado", null, "Perfil do Im�vel");
}
FiltroCategoriaTipo filtroCategoriaTipo = new FiltroCategoriaTipo();
filtroCategoriaTipo.setCampoOrderBy(FiltroCategoriaTipo.DESCRICAO);
collectionCategoriaTipo = fachada.pesquisar(filtroCategoriaTipo , CategoriaTipo.class.getName());
if (collectionCategoriaTipo == null || collectionCategoriaTipo.isEmpty()) {
throw new ActionServletException("atencao.naocadastrado", null, "Tipo da Categoria");
}
FiltroCategoria filtroCategoria = new FiltroCategoria();
filtroCategoria.setCampoOrderBy(FiltroCategoria.DESCRICAO);
collectionImovelCategoria = fachada.pesquisar(filtroCategoria, Categoria.class.getName() );
if(collectionImovelCategoria == null || collectionImovelCategoria.isEmpty()){
throw new ActionServletException("atencao.naocadastrado", null, "Categoria");
}
FiltroSubCategoria filtroSubcategoria = new FiltroSubCategoria();
filtroSubcategoria.setCampoOrderBy(FiltroSubCategoria.DESCRICAO);
collectionImovelSubcategoria = fachada.pesquisar(filtroSubcategoria, Subcategoria.class.getName() );
if(collectionImovelSubcategoria == null || collectionImovelSubcategoria.isEmpty()){
throw new ActionServletException("atencao.naocadastrado", null, "Subcategoria");
}
sessao.setAttribute("collectionImovelPerfil", collectionImovelPerfil);
sessao.setAttribute("collectionCategoriaTipo", collectionCategoriaTipo);
sessao.setAttribute("collectionImovelCategoria", collectionImovelCategoria);
sessao.setAttribute("collectionImovelSubcategoria", collectionImovelSubcategoria);
sessao.removeAttribute("idTipoCategoria");
sessao.removeAttribute("idCategoria");
}
// Usado para fazer o controle de navegacao por conta da Aba Local
sessao.setAttribute("abaAtual", "CARACTERISTICAS");
if (imovelCurvaAbcDebitosActionForm.getClassificacao() != null) {
httpServletRequest.setAttribute("classificacao", imovelCurvaAbcDebitosActionForm.getClassificacao());
}
return retorno;
}
}