package gcom.gui.operacional;
import gcom.fachada.Fachada;
import gcom.gui.ActionServletException;
import gcom.gui.GcomAction;
import gcom.operacional.DistritoOperacional;
import gcom.operacional.FiltroDistritoOperacional;
import gcom.operacional.FiltroZonaPressao;
import gcom.operacional.ZonaPressao;
import gcom.util.ConstantesSistema;
import gcom.util.Util;
import gcom.util.filtro.ComparacaoTexto;
import gcom.util.filtro.ComparacaoTextoCompleto;
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;
/**
* [UC0797]Filtrar Zona Pressao
*
* @author Vin�cius Medeiros
* @date 20/05/2008
*/
public class FiltrarZonaPressaoAction extends GcomAction {
public ActionForward execute(ActionMapping actionMapping,
ActionForm actionForm, HttpServletRequest httpServletRequest,
HttpServletResponse httpServletResponse) {
ActionForward retorno = actionMapping
.findForward("exibirManterZonaPressao");
HttpSession sessao = httpServletRequest.getSession(false);
Fachada fachada = Fachada.getInstancia();
FiltrarZonaPressaoActionForm filtrarZonaPressaoActionForm = (FiltrarZonaPressaoActionForm) actionForm;
FiltroZonaPressao filtroZonaPressao = new FiltroZonaPressao();
boolean peloMenosUmParametroInformado = false;
String id = filtrarZonaPressaoActionForm.getId();
String descricao = filtrarZonaPressaoActionForm.getDescricao();
String descricaoAbreviada = filtrarZonaPressaoActionForm.getDescricaoAbreviada();
String distritoOperacionalID = filtrarZonaPressaoActionForm.getDistritoOperacionalID();
String indicadorUso = filtrarZonaPressaoActionForm.getIndicadorUso();
String tipoPesquisa = filtrarZonaPressaoActionForm.getTipoPesquisa();
// ID
if (id != null && !id.trim().equals("")) {
boolean achou = fachada.verificarExistenciaAgente(new Integer(id));
if (achou) {
peloMenosUmParametroInformado = true;
filtroZonaPressao.adicionarParametro(new ParametroSimples(
FiltroZonaPressao.ID, id));
}
}
// Descricao
if (descricao != null && !descricao.trim().equalsIgnoreCase("")) {
peloMenosUmParametroInformado = true;
if (tipoPesquisa != null
&& tipoPesquisa
.equals(ConstantesSistema.TIPO_PESQUISA_COMPLETA
.toString())) {
filtroZonaPressao
.adicionarParametro(new ComparacaoTextoCompleto(
FiltroZonaPressao.DESCRICAO, descricao));
} else {
filtroZonaPressao.adicionarParametro(new ComparacaoTexto(
FiltroZonaPressao.DESCRICAO, descricao));
}
}
// Descricao Abreviada
if (descricaoAbreviada != null
&& !descricaoAbreviada.trim().equalsIgnoreCase("")) {
peloMenosUmParametroInformado = true;
filtroZonaPressao
.adicionarParametro(new ComparacaoTextoCompleto(
FiltroZonaPressao.DESCRICAO_ABREVIADA,
descricaoAbreviada));
}
// Distrito Operacional
if (distritoOperacionalID != null && !distritoOperacionalID.equalsIgnoreCase("")) {
pesquisarDistritoOperacional(filtrarZonaPressaoActionForm,fachada,distritoOperacionalID);
peloMenosUmParametroInformado = true;
filtroZonaPressao.adicionarParametro(new ParametroSimples(
FiltroZonaPressao.DISTRITO_OPERACIONAL_ID, new Integer(distritoOperacionalID)));
}
// Indicador uso
if (indicadorUso != null && !indicadorUso.trim().equals("")) {
peloMenosUmParametroInformado = true;
filtroZonaPressao.adicionarParametro(new ParametroSimples(
FiltroZonaPressao.INDICADOR_USO, indicadorUso));
}
Collection colecaoZonaPressao = fachada
.pesquisar(filtroZonaPressao, ZonaPressao.class
.getName());
// Verificar a existencia de uma zona de pressao
if (colecaoZonaPressao.isEmpty()) {
throw new ActionServletException(
"atencao.pesquisa_inexistente", null,"Zona de Press�o");
}
// Filtragem sem parametros
if (!peloMenosUmParametroInformado == true) {
throw new ActionServletException(
"atencao.filtro.nenhum_parametro_informado");
}
// Pesquisa sem registros
if (colecaoZonaPressao == null
|| colecaoZonaPressao.isEmpty()) {
throw new ActionServletException(
"atencao.pesquisa.nenhumresultado", null, "Zona de Press�o");
} else {
httpServletRequest.setAttribute("colecaoZonaPressao",
colecaoZonaPressao);
ZonaPressao zonaPressao = new ZonaPressao();
zonaPressao = (ZonaPressao) Util
.retonarObjetoDeColecao(colecaoZonaPressao);
String idRegistroAtualizacao = zonaPressao.getId().toString();
sessao.setAttribute("idRegistroAtualizacao", idRegistroAtualizacao);
}
sessao.setAttribute("filtroZonaPressao", filtroZonaPressao);
httpServletRequest.setAttribute("filtroZonaPressao",
filtroZonaPressao);
return retorno;
}
private void pesquisarDistritoOperacional(
FiltrarZonaPressaoActionForm filtrarZonaPressaoActionForm,
Fachada fachada, String distritoOperacionalID) {
Collection colecaoPesquisa;
FiltroDistritoOperacional filtroDistritoOperacional = new FiltroDistritoOperacional();
filtroDistritoOperacional.adicionarParametro(new ParametroSimples(
FiltroDistritoOperacional.ID, distritoOperacionalID));
//Retorna localidade
colecaoPesquisa = fachada.pesquisar(filtroDistritoOperacional,
DistritoOperacional.class.getName());
if (colecaoPesquisa == null || colecaoPesquisa.isEmpty()) {
//DistritoOperacional nao encontrada
//Limpa o campo distritoOperacionalID do formul�rio
filtrarZonaPressaoActionForm.setDistritoOperacionalID("");
filtrarZonaPressaoActionForm.setDistritoOperacionalDescricao("Distrito Operacional inexistente.");
throw new ActionServletException("atencao.pesquisa_inexistente",
null,"Distrito Operacional");
}else {
DistritoOperacional objetoDistritoOperacional = (DistritoOperacional) Util
.retonarObjetoDeColecao(colecaoPesquisa);
filtrarZonaPressaoActionForm.setDistritoOperacionalID(String
.valueOf(objetoDistritoOperacional.getId()));
filtrarZonaPressaoActionForm
.setDistritoOperacionalDescricao(objetoDistritoOperacional.getDescricao());
}
}
}