package gcom.gui.micromedicao.hidrometro;
import gcom.fachada.Fachada;
import gcom.gui.ActionServletException;
import gcom.gui.GcomAction;
import gcom.micromedicao.hidrometro.FiltroHidrometro;
import gcom.micromedicao.hidrometro.FiltroHidrometroMovimentacao;
import gcom.micromedicao.hidrometro.FiltroHidrometroMovimentado;
import gcom.micromedicao.hidrometro.Hidrometro;
import gcom.micromedicao.hidrometro.HidrometroMovimentacao;
import gcom.micromedicao.hidrometro.HidrometroMovimentado;
import gcom.util.filtro.ParametroSimples;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Iterator;
import java.util.List;
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;
/**
* action respons�vel pela exibi��o da tela de consultar cr�dito a realizar
*
* @author Fernanda Paiva
* @created 17 de Janeiro de 2006
*/
public class ExibirMovimentacaoHidrometroAction extends GcomAction {
public ActionForward execute(ActionMapping actionMapping,
ActionForm actionForm, HttpServletRequest httpServletRequest,
HttpServletResponse httpServletResponse) {
// cria a vari�vel de retorno e seta o mapeamento para a tela de
// consultar Movimentacao Hidrometro
ActionForward retorno = actionMapping
.findForward("movimentacaoHidrometro");
// cria uma inst�ncia da fachada
Fachada fachada = Fachada.getInstancia();
// cria uma inst�ncia da sess�o
HttpSession sessao = httpServletRequest.getSession(false);
// recupera o c�digo da conta do request
String idMovimentacao = httpServletRequest
.getParameter("idRegistroAtualizacao");
// se o c�digo n�o for nulo
if (idMovimentacao != null && !idMovimentacao.equalsIgnoreCase("")) {
// remove a cole��o de movimentac�es da sess�o
sessao.removeAttribute("colecaoMovimentacaoHidrometro");
}
/*
* Pesquisando a movimentacao
* =====================================================================
*/
// se n�o existir a cole��o na sess�o
// cria o filtro de cr�ditos a realizar
FiltroHidrometroMovimentacao filtroHidrometroMovimentacao = new FiltroHidrometroMovimentacao();
// carrega o motivo
filtroHidrometroMovimentacao
.adicionarCaminhoParaCarregamentoEntidade("hidrometroMotivoMovimentacao");
// carrega o local de armazenagem origem
filtroHidrometroMovimentacao
.adicionarCaminhoParaCarregamentoEntidade("hidrometroLocalArmazenagemOrigem");
// carrega o local de armazenagem destino
filtroHidrometroMovimentacao
.adicionarCaminhoParaCarregamentoEntidade("hidrometroLocalArmazenagemDestino");
// carrega o local de armazenagem origem
filtroHidrometroMovimentacao
.adicionarCaminhoParaCarregamentoEntidade("usuario");
// seta o c�digo do imovel no filtro
filtroHidrometroMovimentacao.adicionarParametro(new ParametroSimples(
FiltroHidrometroMovimentacao.ID, idMovimentacao));
// pesquisa a cole��o de cr�ditos a realizar
Collection<HidrometroMovimentacao> colecaoMovimentacaoHidrometro = fachada
.pesquisar(filtroHidrometroMovimentacao,
HidrometroMovimentacao.class.getName());
Collection colecaoHidrometroMovimentado = null;
if (!colecaoMovimentacaoHidrometro.isEmpty()) {
Iterator hidrometroMovimentacaoIterator = colecaoMovimentacaoHidrometro.iterator();
while (hidrometroMovimentacaoIterator.hasNext()) {
HidrometroMovimentacao hidrometroMovimentacao = (HidrometroMovimentacao) hidrometroMovimentacaoIterator.next();
FiltroHidrometroMovimentado filtroHidrometroMovimentado = new FiltroHidrometroMovimentado();
filtroHidrometroMovimentado
.adicionarCaminhoParaCarregamentoEntidade("hidrometro");
filtroHidrometroMovimentado
.adicionarParametro(new ParametroSimples(
FiltroHidrometroMovimentado.HIDROMETRO_MOVIMENTACAO_ID,
hidrometroMovimentacao.getId()));
filtroHidrometroMovimentado.setConsultaSemLimites(true);
colecaoHidrometroMovimentado = fachada.pesquisar(
filtroHidrometroMovimentado,
HidrometroMovimentado.class.getName());
Integer quantidade = colecaoHidrometroMovimentado.size();
if (!colecaoHidrometroMovimentado.isEmpty())
{
String faixaInicial = ((HidrometroMovimentado) ((List) colecaoHidrometroMovimentado).get(0)).getHidrometro().getNumero();
String faixaFinal = ((HidrometroMovimentado) ((List) colecaoHidrometroMovimentado).get(quantidade-1)).getHidrometro().getNumero();
if(faixaInicial != null)
{
Integer tamanhoFaixaInicial = faixaInicial.length();
if(tamanhoFaixaInicial > 4)
{
String fixo = faixaInicial.substring(0,4);
hidrometroMovimentacao.setFixo(fixo);
}
faixaInicial = faixaInicial.substring(4,tamanhoFaixaInicial-1);
}
if(faixaFinal != null)
{
Integer tamanhoFaixaFinal = faixaFinal.length();
faixaFinal = faixaFinal.substring(4,tamanhoFaixaFinal-1);
}
hidrometroMovimentacao.setFaixaInicial(faixaInicial);
hidrometroMovimentacao.setFaixaFinal(faixaFinal);
}
hidrometroMovimentacao.setQuantidade(quantidade.toString());
}
}
Collection colecaoHidrometro = null;
Collection colecaoObterHidrometro = new ArrayList();
if (!colecaoHidrometroMovimentado.isEmpty()) {
Iterator hidrometroMovimentadoIterator = colecaoHidrometroMovimentado.iterator();
while (hidrometroMovimentadoIterator.hasNext()) {
HidrometroMovimentado hidrometroMovimentado = (HidrometroMovimentado) hidrometroMovimentadoIterator.next();
FiltroHidrometro filtroHidrometro = new FiltroHidrometro();
filtroHidrometro
.adicionarParametro(new ParametroSimples(
FiltroHidrometro.ID,
hidrometroMovimentado.getHidrometro().getId()));
filtroHidrometro
.adicionarCaminhoParaCarregamentoEntidade("hidrometroMarca");
filtroHidrometro
.adicionarCaminhoParaCarregamentoEntidade("hidrometroCapacidade");
filtroHidrometro
.adicionarCaminhoParaCarregamentoEntidade("hidrometroSituacao");
filtroHidrometro
.setCampoOrderBy(FiltroHidrometro.NUMERO_HIDROMETRO);
colecaoHidrometro = fachada.pesquisar(
filtroHidrometro, Hidrometro.class.getName());
if (!colecaoHidrometro.isEmpty())
{
colecaoObterHidrometro.addAll(colecaoHidrometro);
}
}
}
// ====================================================================
if (colecaoMovimentacaoHidrometro == null
|| colecaoMovimentacaoHidrometro.isEmpty()) {
throw new ActionServletException("atencao.naocadastrado", null,
"Movimenta��o de Hidr�metro");
} else {
// seta a cole��o de movimenta��es na sess�o
sessao.setAttribute("colecaoMovimentacaoHidrometro",
colecaoMovimentacaoHidrometro);
sessao.setAttribute("colecaoObterHidrometro",
colecaoObterHidrometro);
}
// retorna o mapeamento contido na vari�vel retorno
return retorno;
}
}