package gcom.gui.faturamento.conta;
import java.util.Collection;
import java.util.Date;
import java.util.Iterator;
import gcom.fachada.Fachada;
import gcom.faturamento.conta.ContaMotivoRetificacao;
import gcom.faturamento.conta.ContaMotivoRetificacaoColuna;
import gcom.faturamento.conta.ContaMotivoRetificacaoColunaPK;
import gcom.faturamento.conta.FiltroContaMotivoRetificacao;
import gcom.gui.ActionServletException;
import gcom.gui.GcomAction;
import gcom.util.Util;
import gcom.util.filtro.ParametroSimples;
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 AtualizarMotivoRetificacaoAction extends GcomAction {
/**
* Description of the Method
*
* @param actionMapping
* Description of the Parameter
* @param actionForm
* Description of the Parameter
* @param httpServletRequest
* Description of the Parameter
* @param httpServletResponse
* Description of the Parameter
* @return Description of the Return Value
*/
public ActionForward execute(ActionMapping actionMapping,
ActionForm actionForm, HttpServletRequest httpServletRequest,
HttpServletResponse httpServletResponse) {
// Mudar isso quando tiver esquema de seguran�a
HttpSession sessao = httpServletRequest.getSession(false);
// Obt�m a inst�ncia da Fachada
Fachada fachada = Fachada.getInstancia();
// Set no mapeamento de retorno
ActionForward retorno = actionMapping.findForward("telaSucesso");
AtualizarMotivoRetificacaoActionForm form = (AtualizarMotivoRetificacaoActionForm) actionForm;
// [FS0004] - Verificar preenchimento dos campos
if(form.getDescricao() == null){
throw new ActionServletException("atencao.naoinformado",null, "Descri��o");
}
if(form.getIndicadorCompetenciaConsumo() == null){
throw new ActionServletException("atencao.naoinformado",null, "Indicativo de Validar Compet�ncia de Consumo");
}
if(form.getIndicadorUso() == null){
throw new ActionServletException("atencao.naoinformado",null, "Indicativo de Uso");
}
ContaMotivoRetificacao contaMotivoRetificacao = (ContaMotivoRetificacao) sessao.getAttribute("objetoContaMotivoRetificacao");
// [FS0006] - Atualiza��o realizada por outro usu�rio
FiltroContaMotivoRetificacao filtroContaMotivoRetificacao = new FiltroContaMotivoRetificacao();
filtroContaMotivoRetificacao.adicionarParametro(
new ParametroSimples(FiltroContaMotivoRetificacao.CODIGO, contaMotivoRetificacao.getId()));
Collection colecaoContaMotivoRetificacao = fachada
.pesquisar(filtroContaMotivoRetificacao, ContaMotivoRetificacao.class.getName());
if (colecaoContaMotivoRetificacao != null && !colecaoContaMotivoRetificacao.isEmpty()){
ContaMotivoRetificacao motivoRetificacao = (ContaMotivoRetificacao) Util.retonarObjetoDeColecao(colecaoContaMotivoRetificacao);
if (motivoRetificacao.getUltimaAlteracao()
.after(contaMotivoRetificacao.getUltimaAlteracao())) {
throw new ActionServletException("atencao.naoinformado", null, "Motivo de Retifica��o da Conta");
}
}
contaMotivoRetificacao.setDescricao(form.getDescricao());
contaMotivoRetificacao.setIndicadorCompetenciaConsumo(
new Short(form.getIndicadorCompetenciaConsumo()));
contaMotivoRetificacao.setIndicadorUso(
new Short(form.getIndicadorUso()));
if(form.getNumeroOcorrenciasNoAno() != null
&& !form.getNumeroOcorrenciasNoAno().equals("")){
contaMotivoRetificacao.setNumeroOcorrenciasNoAno(
new Integer(form.getNumeroOcorrenciasNoAno()));
}
Collection<ContaMotivoRetificacaoColuna> colecaoContaMotivoRetificacaoColuna = null;
Collection<ContaMotivoRetificacaoColuna> colecaoCamposRemover = null;
if (sessao.getAttribute("colecaoCamposRemover") != null
&& !sessao.getAttribute("colecaoCamposRemover").equals("")) {
colecaoCamposRemover = (Collection<ContaMotivoRetificacaoColuna>)sessao.getAttribute("colecaoCamposRemover");
Iterator iterator = colecaoCamposRemover.iterator();
while(iterator.hasNext()) {
ContaMotivoRetificacaoColuna motivoRetificacaoColuna = (ContaMotivoRetificacaoColuna)iterator.next();
fachada.remover(motivoRetificacaoColuna);
}
}
if (sessao.getAttribute("colecaoContaMotivoRetificacaoColuna") != null
&& !sessao.getAttribute("colecaoContaMotivoRetificacaoColuna").equals("")) {
colecaoContaMotivoRetificacaoColuna = (Collection<ContaMotivoRetificacaoColuna>)sessao.getAttribute("colecaoContaMotivoRetificacaoColuna");
Iterator iterator = colecaoContaMotivoRetificacaoColuna.iterator();
while(iterator.hasNext()) {
ContaMotivoRetificacaoColuna motivoRetificacaoColuna = (ContaMotivoRetificacaoColuna)iterator.next();
if (motivoRetificacaoColuna.getUltimaAlteracao() == null){
ContaMotivoRetificacaoColunaPK compId = new ContaMotivoRetificacaoColunaPK();
compId.setContaMotivoRetificacaoId(motivoRetificacaoColuna.getContaMotivoRetificacao().getId());
compId.setTabelaColunaId(motivoRetificacaoColuna.getTabelaColuna().getId());
motivoRetificacaoColuna.setComp_id(compId);
motivoRetificacaoColuna.setUltimaAlteracao(new Date());
fachada.inserir(motivoRetificacaoColuna);
} else {
motivoRetificacaoColuna.setUltimaAlteracao(new Date());
fachada.atualizar(motivoRetificacaoColuna);
}
}
}
fachada.atualizar(contaMotivoRetificacao);
sessao.removeAttribute("colecaoCamposRemover");
sessao.removeAttribute("colecaoContaMotivoRetificacaoColuna");
sessao.removeAttribute("objetoContaMotivoRetificacao");
sessao.removeAttribute("idContaMotivoRetificacao");
montarPaginaSucesso(httpServletRequest,
"Motivo de Retifica��o "
+ contaMotivoRetificacao.getDescricao()
+ " atualizado com sucesso!",
"Manter outro Motivo de Retifica��o",
"exibirFiltrarMotivoRetificacaoAction.do?menu=sim");
return retorno;
}
}