package gcom.gui.micromedicao;
import gcom.fachada.Fachada;
import gcom.gui.ActionServletException;
import gcom.gui.GcomAction;
import gcom.interceptor.RegistradorOperacao;
import gcom.micromedicao.AtualizarItemServicoActionForm;
import gcom.micromedicao.FiltroItemServico;
import gcom.micromedicao.ItemServico;
import gcom.seguranca.acesso.Operacao;
import gcom.seguranca.acesso.usuario.Usuario;
import gcom.seguranca.acesso.usuario.UsuarioAcao;
import gcom.seguranca.acesso.usuario.UsuarioAcaoUsuarioHelper;
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;
/**
* Atualizar Item de Servico
*
* @author Rodrigo de Abreu Cabral
* @date 04/08/2010
*/
public class AtualizarItemServicoAction extends GcomAction{
public ActionForward execute(ActionMapping actionMapping,
ActionForm actionForm, HttpServletRequest httpServletRequest,
HttpServletResponse httpServletResponse) {
ActionForward retorno = actionMapping.findForward("telaSucesso");
AtualizarItemServicoActionForm form = (AtualizarItemServicoActionForm) actionForm;
Fachada fachada = Fachada.getInstancia();
HttpSession sessao = httpServletRequest.getSession(false);
Usuario usuario = (Usuario) sessao.getAttribute("usuarioLogado");
String id = form.getId();
String descricao = form.getDescricao();
String descricaoAbreviada = form.getDescricaoAbreviada();
String codigoItem = form.getCodigoItem();
if(descricao == null || descricao.equals("")){
//Descri��o n�o informada
throw new ActionServletException("atencao.descricao_sistema_abastecimento_nao_informado");
} else{
//[FS0005] - Verificar descri��o do item j� informado.
FiltroItemServico filtroItemServico = new FiltroItemServico();
filtroItemServico.adicionarParametro(
new ParametroSimples(FiltroItemServico.DESCRICAO, descricao));
Collection colecaoItemServico = Fachada.getInstancia().pesquisar(
filtroItemServico, ItemServico.class.getName());
if ( colecaoItemServico != null && !colecaoItemServico.isEmpty()) {
ItemServico itemServico = (ItemServico) Util.retonarObjetoDeColecao(colecaoItemServico);
if (!itemServico.getId().toString().equals(id) ) {
throw new ActionServletException("atencao.descricao_existente",null,descricao);
}
}
}
if(descricaoAbreviada == null || descricaoAbreviada.equals("")){
//Descri��o Abreviada n�o informada
throw new ActionServletException("atencao.descricao_abreviada_nao_informada");
//[FS0006] - Verificar descri��o abreviada do item j� informado.
} else if (descricaoAbreviada != null && !descricaoAbreviada.equals("")){
FiltroItemServico filtroItemServico = new FiltroItemServico();
filtroItemServico.adicionarParametro(
new ParametroSimples(FiltroItemServico.DESCRICAO_ABREVIADA, descricaoAbreviada));
Collection colecaoItemServico = Fachada.getInstancia().pesquisar(
filtroItemServico, ItemServico.class.getName());
if ( colecaoItemServico != null && !colecaoItemServico.isEmpty() ) {
ItemServico itemServico = (ItemServico) Util.retonarObjetoDeColecao(colecaoItemServico);
if (!itemServico.getId().toString().equals(id) ) {
throw new ActionServletException("atencao.descricao_abreviada_tipo_debito_ja_existente",null,descricaoAbreviada);
}
}
}
//[FS0007] - Verificar c�digo do item j� informado.
if(codigoItem != null && !codigoItem.equals("")){
FiltroItemServico filtroItemServico = new FiltroItemServico();
filtroItemServico.adicionarParametro(
new ParametroSimples(FiltroItemServico.CODIGO_ITEM, codigoItem));
Collection colecaoItemServico = Fachada.getInstancia().pesquisar(
filtroItemServico, ItemServico.class.getName());
if ( colecaoItemServico != null && !colecaoItemServico.isEmpty()) {
ItemServico itemServico = (ItemServico) Util.retonarObjetoDeColecao(colecaoItemServico);
if (!itemServico.getId().toString().equals(id) ) {
throw new ActionServletException("atencao.codigo_existente",null,form.getCodigoItem());
}
}
}
ItemServico itemServico = (ItemServico) sessao.getAttribute("atualizarItemServico");
//Atualiza a entidade com os valores do formul�rio
itemServico.setDescricao(form.getDescricao());
itemServico.setDescricaoAbreviada(form.getDescricaoAbreviada());
itemServico.setIndicadorUso(new Short(form.getIndicadorUso()));
if (form.getCodigoConstanteCalculo() != null && !form.getCodigoConstanteCalculo().equals("")){
itemServico.setCodigoConstanteCalculo(new Integer(form.getCodigoConstanteCalculo()));
}
if (codigoItem != null && !codigoItem.equals("")){
itemServico.setCodigoItem(new Long(codigoItem));
}
itemServico.setUltimaAlteracao(new Date());
//------------ REGISTRAR TRANSA��O ----------------
RegistradorOperacao registradorOperacao = new RegistradorOperacao(
Operacao.OPERACAO_MANTER_ITEM_SERVICO,
itemServico.getId(),itemServico.getId(),
new UsuarioAcaoUsuarioHelper(usuario, UsuarioAcao.USUARIO_ACAO_EFETUOU_OPERACAO));
registradorOperacao.registrarOperacao(itemServico);
//------------ REGISTRAR TRANSA��O ----------------
//atualiza na base de dados de Item de Servi�o
fachada.atualizar(itemServico);
//Monta a p�gina de sucesso
montarPaginaSucesso(httpServletRequest, "Item de Contrato " + itemServico.getDescricao() +
" atualizado com sucesso.",
"Realizar outra Manuten��o de Item de Contrato",
"exibirFiltrarItemServicoAction.do?menu=sim");
return retorno;
}
}