package gcom.gui.micromedicao.hidrometro;
import gcom.fachada.Fachada;
import gcom.gui.ActionServletException;
import gcom.gui.GcomAction;
import gcom.micromedicao.hidrometro.FiltroHidrometroCapacidade;
import gcom.micromedicao.hidrometro.HidrometroCapacidade;
import gcom.seguranca.acesso.Operacao;
import gcom.seguranca.acesso.OperacaoEfetuada;
import gcom.seguranca.acesso.usuario.Usuario;
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 InserirCapacidadeHidrometroAction extends GcomAction {
/**
* Este caso de uso permite inserir uma Capacidade de Hidrometro
*
* [UC0515] Inserir Ag�ncia Capacidade Hidrometro
*
* @param actionMapping
* @param actionForm
* @param httpServletRequest
* @param httpServletResponse
* @return
* @author Thiago Ten�rio
*/
public ActionForward execute(ActionMapping actionMapping,
ActionForm actionForm, HttpServletRequest httpServletRequest,
HttpServletResponse httpServletResponse) {
// Seta o retorno
ActionForward retorno = actionMapping.findForward("telaSucesso");
// Obt�m a inst�ncia da fachada
Fachada fachada = Fachada.getInstancia();
// Obt�m a sess�o
HttpSession sessao = httpServletRequest.getSession(false);
Usuario usuarioLogado = (Usuario) sessao.getAttribute("usuarioLogado");
InserirCapacidadeHidrometroActionForm inserirCapacidadeHidrometroActionForm = (InserirCapacidadeHidrometroActionForm) actionForm;
Operacao operacao = new Operacao();
operacao.setId(Operacao.OPERACAO_CAPACIDADE_HIDROMETRO_INSERIR);
OperacaoEfetuada operacaoEfetuada = new OperacaoEfetuada();
operacaoEfetuada.setOperacao(operacao);
// ------------ REGISTRAR TRANSA��O ----------------
// String identificador = inserirCapacidadeHidrometroActionForm
// .getIdentificador();
String descricao = inserirCapacidadeHidrometroActionForm.getDescricao();
String abreviatura = inserirCapacidadeHidrometroActionForm
.getAbreviatura();
String numMinimo = inserirCapacidadeHidrometroActionForm.getNumMinimo();
String numMaximo = inserirCapacidadeHidrometroActionForm.getNumMaximo();
String numOrdem = inserirCapacidadeHidrometroActionForm.getNumOrdem();
String codigo = inserirCapacidadeHidrometroActionForm.getCodigo();
HidrometroCapacidade hidrometroCapacidadeInserir = new HidrometroCapacidade();
Collection colecaoPesquisa = null;
// // O c�digo da Capacidade do Hidrometro � obrigat�rio.
// if (identificador == null || identificador.equalsIgnoreCase("")) {
// throw new ActionServletException("atencao.required", null,
// "Identificador da capacidade de hidr�metro");
// }
// O c�digo da Capacidade do Hidrometro � obrigat�rio.
if (codigo == null || codigo.equalsIgnoreCase("")) {
throw new ActionServletException("atencao.required", null,
"C�digo da capacidade do hidr�metro");
}
// A descri��o da Capacidade do Hidr�metro � obrigat�rio.
if (descricao == null || descricao.equalsIgnoreCase("")) {
throw new ActionServletException("atencao.required", null,
"Descri��o da capacidade de hidr�metro");
}
// A descri��o Abreviada da Capacidade do Hidr�metro � obrigat�rio.
if (abreviatura != null && !abreviatura.equalsIgnoreCase("")) {
hidrometroCapacidadeInserir.setDescricaoAbreviada(abreviatura);
}
// O numero minimo de digitos de leitura do hidr�metro � obrigat�rio.
if (numMinimo == null || numMinimo.equalsIgnoreCase("")) {
throw new ActionServletException("atencao.required", null,
"N�mero m�nimo de digitos de leitura do hidr�metro");
}
// O numero maximo de digitos de leitura do hidr�metro � obrigat�rio.
if (numMaximo != null && !numMaximo.equalsIgnoreCase("")) {
if (new Integer(numMaximo).intValue() < new Integer(numMinimo).intValue()) {
throw new ActionServletException(
"atencao.numero_minimo_nao_pode_ser_maior_que_numero_maximo",
null, "Numero maximo de digitos de leitura do hidr�metro");
} else {
hidrometroCapacidadeInserir.setLeituraMaximo(new Short(numMaximo));
}
}
// // O numero maximo de digitos de leitura do hidr�metro � obrigat�rio.
// if (numMaximo == null || numMaximo.equalsIgnoreCase("")) {
// throw new ActionServletException("atencao.required", null,
// "N�mero maximo de digitos de leitura do hidr�metro");
// }
// hidrometroCapacidadeInserir.setId(new Integer(identificador));
hidrometroCapacidadeInserir.setCodigoHidrometroCapacidade(codigo);
hidrometroCapacidadeInserir.setDescricao(descricao);
hidrometroCapacidadeInserir.setDescricaoAbreviada(abreviatura);
hidrometroCapacidadeInserir.setLeituraMinimo(new Short(numMinimo));
hidrometroCapacidadeInserir.setLeituraMaximo(new Short(numMaximo));
hidrometroCapacidadeInserir.setNumeroOrdem(new Short(numOrdem));
// Indicador de uso
Short iu = 1;
hidrometroCapacidadeInserir.setIndicadorUso(iu);
// Ultima altera��o
hidrometroCapacidadeInserir.setUltimaAlteracao(new Date());
FiltroHidrometroCapacidade filtroHidrometroCapacidade = new FiltroHidrometroCapacidade();
filtroHidrometroCapacidade.adicionarParametro(new ParametroSimples(
FiltroHidrometroCapacidade.NUMERO_ORDEM,
hidrometroCapacidadeInserir.getNumeroOrdem()));
// Verificar exist�ncia do N�mero de ordem da capacidade do hidr�metro
colecaoPesquisa = fachada.pesquisar(filtroHidrometroCapacidade,
HidrometroCapacidade.class.getName());
if (colecaoPesquisa != null && !colecaoPesquisa.isEmpty()) {
// N�mero de ordem da capacidade do hidr�metro j� existe
throw new ActionServletException(
"atencao.pesquisa_numero_de_ordem_da_capacidade_do_hidrometro_ja_cadastrada",
null, numOrdem);
}
filtroHidrometroCapacidade.adicionarParametro(new ParametroSimples(
FiltroHidrometroCapacidade.CODIGO_HIDROMETRO_CAPACIDADE,
hidrometroCapacidadeInserir.getCodigoHidrometroCapacidade()));
// Verificar exist�ncia da Capacidade do Hidrometro
colecaoPesquisa = fachada.pesquisar(filtroHidrometroCapacidade,
HidrometroCapacidade.class.getName());
if (colecaoPesquisa != null && !colecaoPesquisa.isEmpty()) {
// Capacidade de hidrometro j� existe
throw new ActionServletException(
"atencao.pesquisa_capacidade_do_hidrometro_ja_cadastrada",
null, codigo);
} else {
Integer idHidrometroCapacidade = null;
idHidrometroCapacidade = fachada.inserirCapacidadeHidrometro(
hidrometroCapacidadeInserir, usuarioLogado);
montarPaginaSucesso(
httpServletRequest,
"Capacidade do Hidr�metro de c�digo "
+ hidrometroCapacidadeInserir
.getCodigoHidrometroCapacidade()
+ " inserida com sucesso.",
"Inserir outra Capacidade do Hidr�metro",
"exibirInserirCapacidadeHidrometroAction.do?menu=sim",
"exibirAtualizarCapacidadeHidrometroAction.do?inserir=sim&idRegistroAtualizacao="
+ idHidrometroCapacidade,
"Atualizar Capacidade do Hidr�metro Inserida");
}
// devolve o mapeamento de retorno
return retorno;
}
}