package gcom.gui.operacional;
import gcom.gui.ActionServletException;
import gcom.gui.GcomAction;
import gcom.interceptor.RegistradorOperacao;
import gcom.operacional.FiltroFonteCaptacao;
import gcom.operacional.FiltroTipoCaptacao;
import gcom.operacional.FonteCaptacao;
import gcom.operacional.SistemaAbastecimento;
import gcom.operacional.TipoCaptacao;
import gcom.seguranca.acesso.Operacao;
import gcom.seguranca.acesso.OperacaoEfetuada;
import gcom.seguranca.acesso.usuario.Usuario;
import gcom.seguranca.acesso.usuario.UsuarioAcao;
import gcom.seguranca.acesso.usuario.UsuarioAcaoUsuarioHelper;
import gcom.util.ConstantesSistema;
import gcom.util.Util;
import gcom.util.filtro.ParametroSimples;
import java.util.Collection;
import java.util.Date;
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 InserirSistemaAbastecimentoAction extends GcomAction {
public ActionForward execute(ActionMapping actionMapping,
ActionForm actionForm, HttpServletRequest httpServletRequest,
HttpServletResponse httpServletResponse) {
//Seta o retorno
ActionForward retorno = actionMapping.findForward("telaSucesso");
InserirSistemaAbastecimentoActionForm form = (InserirSistemaAbastecimentoActionForm) actionForm;
HttpSession sessao = httpServletRequest.getSession(false);
Usuario usuario = (Usuario) sessao.getAttribute("usuarioLogado");
//------------ REGISTRAR TRANSA��O ----------------
RegistradorOperacao registradorOperacao = new RegistradorOperacao(
Operacao.OPERACAO_SISTEMA_ABASTECIMENTO_INSERIR,
new UsuarioAcaoUsuarioHelper(usuario,
UsuarioAcao.USUARIO_ACAO_EFETUOU_OPERACAO));
Operacao operacao = new Operacao();
operacao.setId(Operacao.OPERACAO_SISTEMA_ABASTECIMENTO_INSERIR);
OperacaoEfetuada operacaoEfetuada = new OperacaoEfetuada();
operacaoEfetuada.setOperacao(operacao);
//------------ REGISTRAR TRANSA��O ----------------
String descricao = form.getDescricao();
String descricaoAbreviada = form.getDescricaoAbreviada();
String fonteCaptacaoId = form.getFonteCaptacao();
String tipoCaptacaoId = form.getTipoCaptacao();
if(descricao == null || descricao.equals("")){
//Descri��o n�o informada
throw new ActionServletException("atencao.descricao_sistema_abastecimento_nao_informado");
} else if(descricaoAbreviada == null || descricaoAbreviada.equals("")){
//Descri��o Abreviada n�o informada
throw new ActionServletException("atencao.descricao_abreviada_sistema_abastecimento_nao_informado");
} else{
//Fonte de Captacao
FonteCaptacao fonteCaptacao = new FonteCaptacao();
if (Util.verificarNaoVazio(fonteCaptacaoId)) {
Collection colecaoPesquisaFonteCaptacao = null;
FiltroFonteCaptacao filtroFonteCaptacao = new FiltroFonteCaptacao();
filtroFonteCaptacao.adicionarParametro(new ParametroSimples(FiltroFonteCaptacao.ID,
fonteCaptacaoId));
filtroFonteCaptacao.adicionarParametro(
new ParametroSimples(
FiltroFonteCaptacao.INDICADOR_USO,
ConstantesSistema.INDICADOR_USO_ATIVO));
//Retorna Fonte de Capta��o
colecaoPesquisaFonteCaptacao =
this.getFachada().pesquisar(filtroFonteCaptacao,
FonteCaptacao.class.getName());
if (colecaoPesquisaFonteCaptacao == null || colecaoPesquisaFonteCaptacao.isEmpty()) {
//Fonte de Captacao inexistente
throw new ActionServletException("atencao.pesquisa.fonte_captacao_inexistente");
} else {
fonteCaptacao =(FonteCaptacao) Util.retonarObjetoDeColecao(colecaoPesquisaFonteCaptacao);
}
}
//Tipo de Captacao
//TipoCaptacao tipoCaptacao = new TipoCaptacao();
if (Util.verificarNaoVazio(tipoCaptacaoId)) {
Collection colecaoPesquisaTipoCaptacao = null;
FiltroTipoCaptacao filtroTipoCaptacao = new FiltroTipoCaptacao();
filtroTipoCaptacao.adicionarParametro(new ParametroSimples(FiltroTipoCaptacao.ID,
tipoCaptacaoId));
filtroTipoCaptacao.adicionarParametro(
new ParametroSimples(
FiltroTipoCaptacao.INDICADOR_USO,
ConstantesSistema.INDICADOR_USO_ATIVO));
//Retorna Tipo de Capta��o
colecaoPesquisaTipoCaptacao =
this.getFachada().pesquisar(filtroTipoCaptacao,
TipoCaptacao.class.getName());
if (colecaoPesquisaTipoCaptacao == null || colecaoPesquisaTipoCaptacao.isEmpty()) {
//Tipo de Captacao inexistente
throw new ActionServletException("atencao.pesquisa.tipo_captacao_inexistente");
} /*else {
tipoCaptacao =(TipoCaptacao) Util.retonarObjetoDeColecao(colecaoPesquisaTipoCaptacao);
}*/
}
//Criar o objeto sistemaAbastecimento que ser� inserido na base
SistemaAbastecimento sistemaAbastecimento = new SistemaAbastecimento();
sistemaAbastecimento.setDescricao(descricao);
sistemaAbastecimento.setDescricaoAbreviada(descricaoAbreviada);
sistemaAbastecimento.setIndicadorUso(ConstantesSistema.INDICADOR_USO_ATIVO);
sistemaAbastecimento.setUltimaAlteracao(new Date());
sistemaAbastecimento.setFonteCaptacao(fonteCaptacao);
//------------ REGISTRAR TRANSA��O ----------------
sistemaAbastecimento.setOperacaoEfetuada(operacaoEfetuada);
sistemaAbastecimento.adicionarUsuario(usuario,UsuarioAcao.USUARIO_ACAO_EFETUOU_OPERACAO);
registradorOperacao.registrarOperacao(sistemaAbastecimento);
//------------ REGISTRAR TRANSA��O ----------------
Integer codigoSistemaAbastecimentoInserido =
(Integer) this.getFachada().inserir(sistemaAbastecimento);
montarPaginaSucesso(httpServletRequest,
"Sistema de Abastecimento de c�digo " + sistemaAbastecimento.getId()
+ " - " + sistemaAbastecimento.getDescricao().toUpperCase()
+ " inserido com sucesso.",
"Inserir outro Sistema Abastecimento",
"exibirInserirSistemaAbastecimentoAction.do?menu=sim",
"exibirAtualizarSistemaAbastecimentoAction.do?menu=sim&sistemaAbastecimentoId=" +
codigoSistemaAbastecimentoInserido, "Atualizar Sistema de Abastecimento Inserido");
}
//devolve o mapeamento de retorno
return retorno;
}
}