package gcom.gui.micromedicao.hidrometro;
import gcom.fachada.Fachada;
import gcom.gui.GcomAction;
import gcom.micromedicao.hidrometro.FiltroHidrometroCapacidade;
import gcom.micromedicao.hidrometro.FiltroHidrometroClasseMetrologica;
import gcom.micromedicao.hidrometro.FiltroHidrometroDiametro;
import gcom.micromedicao.hidrometro.FiltroHidrometroLocalArmazenagem;
import gcom.micromedicao.hidrometro.FiltroHidrometroMarca;
import gcom.micromedicao.hidrometro.FiltroHidrometroRelojoaria;
import gcom.micromedicao.hidrometro.FiltroHidrometroTipo;
import gcom.micromedicao.hidrometro.HidrometroCapacidade;
import gcom.micromedicao.hidrometro.HidrometroClasseMetrologica;
import gcom.micromedicao.hidrometro.HidrometroDiametro;
import gcom.micromedicao.hidrometro.HidrometroLocalArmazenagem;
import gcom.micromedicao.hidrometro.HidrometroMarca;
import gcom.micromedicao.hidrometro.HidrometroRelojoaria;
import gcom.micromedicao.hidrometro.HidrometroTipo;
import gcom.util.ConstantesSistema;
import gcom.util.Util;
import gcom.util.filtro.ParametroSimples;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Iterator;
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;
/**
* < <Descri��o da Classe>>
*
* @author Administrador
*/
public class ExibirInserirHidrometroAction extends GcomAction {
/**
* < <Descri��o do m�todo>>
*
* @param actionMapping
* Descri��o do par�metro
* @param actionForm
* Descri��o do par�metro
* @param httpServletRequest
* Descri��o do par�metro
* @param httpServletResponse
* Descri��o do par�metro
* @return Descri��o do retorno
*/
public ActionForward execute(ActionMapping actionMapping,
ActionForm actionForm, HttpServletRequest httpServletRequest,
HttpServletResponse httpServletResponse) {
// Obt�m o action form
HidrometroActionForm hidrometroActionForm = (HidrometroActionForm) actionForm;
Collection colecaoHidrometroCapacidade = null;
// Seta a a��o de retorno
ActionForward retorno = actionMapping.findForward("inserirHidrometro");
// Obt�m a sess�o
HttpSession sessao = httpServletRequest.getSession(false);
// Caso o form esteja na sess�o � removido
// sessao.removeAttribute("HidrometroActionForm");
// Obt�m a facahda
Fachada fachada = Fachada.getInstancia();
// Obt�m o objetoCosulta vindo na sess�o
String objetoConsulta = (String) httpServletRequest
.getParameter("objetoConsulta");
// Chamou a funcionalidade pela 1� vez.
// O usu�rio pode chamar o filtro de hidr�metro que carrega objetos na
// sess�o
// e depois chamar o inserir hidr�metro. Necess�rio remover os objetos
// da sess�o deixados pelo filtro.
String limpaSessao = (String) httpServletRequest
.getParameter("limpaSessao");
if (limpaSessao != null && !limpaSessao.trim().equalsIgnoreCase("")
&& (Integer.parseInt(limpaSessao)) == 1) {
// remove objetos da sess�o vindos do filtro
sessao.removeAttribute("colecaoHidrometroClasseMetrologica");
sessao.removeAttribute("colecaoHidrometroMarca");
sessao.removeAttribute("colecaoHidrometroDiametro");
sessao.removeAttribute("colecaoHidrometroCapacidade");
sessao.removeAttribute("colecaoHidrometroTipo");
sessao.removeAttribute("colecaoHidrometroRelojoaria");
}
// Verifica se o objeto � diferente de nulo
if (objetoConsulta != null
&& !objetoConsulta.trim().equalsIgnoreCase("")
&& (Integer.parseInt(objetoConsulta)) == 1) {
// Filtro para obter o local de armazenagem ativo de id informado
FiltroHidrometroLocalArmazenagem filtroHidrometroLocalArmazenagem = new FiltroHidrometroLocalArmazenagem();
filtroHidrometroLocalArmazenagem
.adicionarParametro(new ParametroSimples(
FiltroHidrometroLocalArmazenagem.ID, new Integer(
hidrometroActionForm
.getIdLocalArmazenagem()),
ParametroSimples.CONECTOR_AND));
filtroHidrometroLocalArmazenagem
.adicionarParametro(new ParametroSimples(
FiltroHidrometroLocalArmazenagem.INDICADOR_USO,
ConstantesSistema.INDICADOR_USO_ATIVO));
// Pesquisa de acordo com os par�metros informados no filtro
Collection colecaoHidrometroLocalArmazenagem = fachada.pesquisar(
filtroHidrometroLocalArmazenagem,
HidrometroLocalArmazenagem.class.getName());
// Verifica se a pesquisa retornou algum objeto para a cole��o
if (colecaoHidrometroLocalArmazenagem != null
&& !colecaoHidrometroLocalArmazenagem.isEmpty()) {
// Obt�m o objeto da cole��o pesquisada
HidrometroLocalArmazenagem hidrometroLocalArmazenagem = (HidrometroLocalArmazenagem) Util
.retonarObjetoDeColecao(colecaoHidrometroLocalArmazenagem);
// Exibe o c�digo e a descri��o pesquisa na p�gina
httpServletRequest.setAttribute("corLocalArmazenagem", "valor");
hidrometroActionForm
.setIdLocalArmazenagem(hidrometroLocalArmazenagem
.getId().toString());
hidrometroActionForm
.setLocalArmazenagemDescricao(hidrometroLocalArmazenagem
.getDescricao());
} else {
// Exibe mensagem de c�digo inexiste e limpa o campo de c�digo
httpServletRequest.setAttribute("corLocalArmazenagem",
"exception");
hidrometroActionForm.setIdLocalArmazenagem("");
hidrometroActionForm
.setLocalArmazenagemDescricao("Local de Armazenagem Inexistente");
}
} else if (sessao.getAttribute("colecaoHidrometroClasseMetrologica") == null
&& sessao.getAttribute("colecaoHidrometroMarca") == null
&& sessao.getAttribute("colecaoHidrometroDiametro") == null
&& sessao.getAttribute("colecaoHidrometroCapacidade") == null
&& sessao.getAttribute("colecaoHidrometroTipo") == null
&& sessao.getAttribute("colecaoHidrometroRelojoaria") == null) {
// Remove objeto da sess�o
sessao.removeAttribute("HidrometroActionForm");
// Filtro de hidr�metro classe metrol�gica para obter todas as
// classes metrol�gicas ativas
FiltroHidrometroClasseMetrologica filtroHidrometroClasseMetrologica = new FiltroHidrometroClasseMetrologica();
filtroHidrometroClasseMetrologica
.adicionarParametro(new ParametroSimples(
FiltroHidrometroClasseMetrologica.INDICADOR_USO,
ConstantesSistema.INDICADOR_USO_ATIVO));
filtroHidrometroClasseMetrologica
.setCampoOrderBy(FiltroHidrometroClasseMetrologica.DESCRICAO);
// Pesquisa a cole��o de classe metrol�gica
Collection colecaoHidrometroClasseMetrologica = fachada.pesquisar(
filtroHidrometroClasseMetrologica,
HidrometroClasseMetrologica.class.getName());
// Filtro de hidr�metro marca para obter todas as marcas de
// hidr�metros ativas
FiltroHidrometroMarca filtroHidrometroMarca = new FiltroHidrometroMarca();
filtroHidrometroMarca.adicionarParametro(new ParametroSimples(
FiltroHidrometroMarca.INDICADOR_USO,
ConstantesSistema.INDICADOR_USO_ATIVO));
filtroHidrometroMarca
.setCampoOrderBy(FiltroHidrometroMarca.DESCRICAO);
// Pesquisa a cole��o de hidr�metro marca
Collection colecaoHidrometroMarca = fachada.pesquisar(
filtroHidrometroMarca, HidrometroMarca.class.getName());
// Filtro de hidr�metro di�metro para obter todos os di�metros de
// hidr�metros ativos
FiltroHidrometroDiametro filtroHidrometroDiametro = new FiltroHidrometroDiametro();
filtroHidrometroDiametro.adicionarParametro(new ParametroSimples(
FiltroHidrometroDiametro.INDICADOR_USO,
ConstantesSistema.INDICADOR_USO_ATIVO));
filtroHidrometroDiametro
.setCampoOrderBy(FiltroHidrometroDiametro.NUMERO_ORDEM);
// Pesquisa a cole��o de hidr�metro capacidade
Collection colecaoHidrometroDiametro = fachada.pesquisar(
filtroHidrometroDiametro, HidrometroDiametro.class
.getName());
// Filtro de hidr�metro capacidade para obter todos as capacidade de
// hidr�metros ativas
FiltroHidrometroCapacidade filtroHidrometroCapacidade = new FiltroHidrometroCapacidade();
filtroHidrometroCapacidade.adicionarParametro(new ParametroSimples(
FiltroHidrometroCapacidade.INDICADOR_USO,
ConstantesSistema.INDICADOR_USO_ATIVO));
filtroHidrometroCapacidade
.setCampoOrderBy(FiltroHidrometroCapacidade.NUMERO_ORDEM);
// Pesquisa a cole��o de hidr�metro capacidade
colecaoHidrometroCapacidade = fachada.pesquisar(
filtroHidrometroCapacidade, HidrometroCapacidade.class
.getName());
// Filtro de hidr�metro tipo para obter todos os tipos de
// hidr�metros ativos
FiltroHidrometroTipo filtroHidrometroTipo = new FiltroHidrometroTipo();
filtroHidrometroTipo.adicionarParametro(new ParametroSimples(
FiltroHidrometroTipo.INDICADOR_USO,
ConstantesSistema.INDICADOR_USO_ATIVO));
filtroHidrometroTipo
.setCampoOrderBy(FiltroHidrometroTipo.DESCRICAO);
// Pesquisa a cole��o de hidr�metro tipo
Collection colecaoHidrometroTipo = fachada.pesquisar(
filtroHidrometroTipo, HidrometroTipo.class.getName());
// Filtro de hidr�metro relojoaria para obter todos os tipos de
// hidr�metros relojoaria ativos
FiltroHidrometroRelojoaria filtroHidrometroRelojoaria = new FiltroHidrometroRelojoaria();
filtroHidrometroRelojoaria.adicionarParametro(new ParametroSimples(
FiltroHidrometroRelojoaria.INDICADOR_USO,
ConstantesSistema.INDICADOR_USO_ATIVO));
filtroHidrometroRelojoaria
.setCampoOrderBy(FiltroHidrometroRelojoaria.DESCRICAO);
// Pesquisa a cole��o de hidr�metro tipo
Collection colecaoHidrometroRelojoaria = fachada.pesquisar(
filtroHidrometroRelojoaria, HidrometroRelojoaria.class.getName());
hidrometroActionForm.setIndicadorMacromedidor("" + ConstantesSistema.NUMERO_NAO_INFORMADO);
// Envia as cole��es na sess�o
sessao.setAttribute("colecaoHidrometroClasseMetrologica",
colecaoHidrometroClasseMetrologica);
sessao.setAttribute("colecaoHidrometroMarca",
colecaoHidrometroMarca);
sessao.setAttribute("colecaoHidrometroDiametro",
colecaoHidrometroDiametro);
sessao.setAttribute("colecaoHidrometroCapacidade",
colecaoHidrometroCapacidade);
sessao.setAttribute("colecaoHidrometroTipo", colecaoHidrometroTipo);
sessao.setAttribute("colecaoHidrometroRelojoaria", colecaoHidrometroRelojoaria);
}
// Filtro de hidr�metro capacidade para obter capacidade de hidr�metro
// de acordo com o id
FiltroHidrometroCapacidade filtroHidrometroCapacidadeNumeroDigitos = new FiltroHidrometroCapacidade();
// Verifica se a cole��o de hidrometro capacidade � diferente de null
if (colecaoHidrometroCapacidade != null
&& !colecaoHidrometroCapacidade.isEmpty()) {
// Obt�m o primeiro objeto da collection
Iterator colecaoHidrometroCapacidadeIterator = colecaoHidrometroCapacidade
.iterator();
HidrometroCapacidade hidrometroCapacidade = (HidrometroCapacidade) colecaoHidrometroCapacidadeIterator
.next();
// Filtra pelo primeiro objeto da collection
filtroHidrometroCapacidadeNumeroDigitos
.adicionarParametro(new ParametroSimples(
FiltroHidrometroCapacidade.ID, hidrometroCapacidade
.getId()));
} else {
// Filtra pelo id selecionado no combobox
filtroHidrometroCapacidadeNumeroDigitos
.adicionarParametro(new ParametroSimples(
FiltroHidrometroCapacidade.ID, new Integer(
hidrometroActionForm
.getIdHidrometroCapacidade())));
}
// Pesquisa o n�mero de d�gitos de acordo com o filtro
Collection colecaoHidrometroCapacidadeNumeroDigitos = fachada
.pesquisar(filtroHidrometroCapacidadeNumeroDigitos,
HidrometroCapacidade.class.getName());
if(colecaoHidrometroCapacidadeNumeroDigitos != null && !colecaoHidrometroCapacidadeNumeroDigitos.isEmpty())
{
// Retorna o objeto pesquisado
HidrometroCapacidade hidrometroCapacidadeNumeroDigitos = (HidrometroCapacidade) Util
.retonarObjetoDeColecao(colecaoHidrometroCapacidadeNumeroDigitos);
Integer leituraMinimo = 0;
Integer leituraMaximo = 0;
// Obt�m as leituras
if(!hidrometroCapacidadeNumeroDigitos.getLeituraMinimo().equals(""))
{
leituraMinimo = new Integer(hidrometroCapacidadeNumeroDigitos
.getLeituraMinimo().toString());
}
if(!hidrometroCapacidadeNumeroDigitos.getLeituraMaximo().equals(""))
{
leituraMaximo = new Integer(hidrometroCapacidadeNumeroDigitos
.getLeituraMaximo().toString());
}
// Obt�m a quantidade da diferen�a
int quantidade = (leituraMaximo.intValue() - leituraMinimo.intValue()) + 1;
Collection colecaoIntervalo = new ArrayList();
// Adiciona a quantidade da diferen�a na cole��o
for (int i = 0; i < quantidade; i++) {
colecaoIntervalo.add(new Integer(leituraMinimo.intValue() + i));
}
sessao.setAttribute("colecaoIntervalo", colecaoIntervalo);
}
return retorno;
}
}