package gcom.gui.relatorio.micromedicao.hidrometro;
import gcom.fachada.Fachada;
import gcom.gui.ActionServletException;
import gcom.gui.micromedicao.hidrometro.HidrometroActionForm;
import gcom.micromedicao.FiltrarHidrometroHelper;
import gcom.micromedicao.hidrometro.FiltroHidrometro;
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.FiltroHidrometroTipo;
import gcom.micromedicao.hidrometro.Hidrometro;
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.HidrometroTipo;
import gcom.relatorio.ExibidorProcessamentoTarefaRelatorio;
import gcom.relatorio.RelatorioVazioException;
import gcom.relatorio.micromedicao.hidrometro.RelatorioManterHidrometro;
import gcom.seguranca.acesso.usuario.Usuario;
import gcom.tarefa.TarefaRelatorio;
import gcom.util.SistemaException;
import gcom.util.filtro.ParametroSimples;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Collection;
import java.util.Date;
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;
/**
* Description of the Class
*
* @author compesa
* @created 26 de Setembro de 2005
*/
public class GerarRelatorioHidrometroManterAction extends ExibidorProcessamentoTarefaRelatorio {
/**
* < <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) {
// cria a vari�vel de retorno
ActionForward retorno = null;
// Mudar isso quando tiver esquema de seguran�a
HttpSession sessao = httpServletRequest.getSession(false);
// HidrometroActionForm hidrometroActionForm =
// (HidrometroActionForm) actionForm;
HidrometroActionForm hidrometroActionForm = (HidrometroActionForm) sessao
.getAttribute("HidrometroActionForm");
Fachada fachada = Fachada.getInstancia();
FiltroHidrometro filtroHidrometro = (FiltroHidrometro) sessao
.getAttribute("filtroHidrometro");
// Inicio da parte que vai mandar os parametros para o relat�rio
String fixo = (String) sessao.getAttribute("fixo");
String faixaInicial = (String) sessao.getAttribute("faixaInicial");
String faixaFinal = (String) sessao.getAttribute("faixaFinal");
FiltrarHidrometroHelper helper = (FiltrarHidrometroHelper) sessao.getAttribute("helper");
Hidrometro hidrometroParametros = new Hidrometro();
if (hidrometroActionForm != null) {
String numero = null;
String numeroPesquisar = (String) hidrometroActionForm
.getNumeroHidrometro();
if (numeroPesquisar != null && !numeroPesquisar.equals("")) {
numero = numeroPesquisar;
}
Date dataAquisicao = null;
String dataAquisicaoPesquisar = hidrometroActionForm
.getDataAquisicao();
if (dataAquisicaoPesquisar != null
&& !dataAquisicaoPesquisar.equals("")) {
SimpleDateFormat format = new SimpleDateFormat("dd/MM/yyyy");
try {
dataAquisicao = format.parse(dataAquisicaoPesquisar);
} catch (ParseException ex) {
throw new ActionServletException("erro.sistema");
}
}
Short anoFabricacao = null;
if (hidrometroActionForm.getAnoFabricacao() != null
&& !hidrometroActionForm.getAnoFabricacao().equals("")) {
anoFabricacao = new Short(""
+ hidrometroActionForm.getAnoFabricacao());
}
Short finalidade = null;
if (hidrometroActionForm.getIndicadorMacromedidor() != null
&& !hidrometroActionForm.getIndicadorMacromedidor().equals(
"")) {
finalidade = new Short(""
+ hidrometroActionForm.getIndicadorMacromedidor());
}
String classeMetrologica = (String) hidrometroActionForm
.getIdHidrometroClasseMetrologica();
HidrometroClasseMetrologica hidrometroClasseMetrologica = null;
if (classeMetrologica != null && !classeMetrologica.equals("")) {
FiltroHidrometroClasseMetrologica filtroHidrometroClasseMetrologica = new FiltroHidrometroClasseMetrologica();
filtroHidrometroClasseMetrologica
.adicionarParametro(new ParametroSimples(
FiltroHidrometroClasseMetrologica.ID,
classeMetrologica));
Collection classesMetrologicas = fachada.pesquisar(
filtroHidrometroClasseMetrologica,
HidrometroClasseMetrologica.class.getName());
if (classesMetrologicas != null
&& !classesMetrologicas.isEmpty()) {
// Classe Metrologica Foi Encontrada
Iterator classeMetrologicaIterator = classesMetrologicas
.iterator();
hidrometroClasseMetrologica = (HidrometroClasseMetrologica) classeMetrologicaIterator
.next();
} else {
hidrometroClasseMetrologica = new HidrometroClasseMetrologica();
}
}
String marca = (String) hidrometroActionForm.getIdHidrometroMarca();
HidrometroMarca hidrometroMarca = null;
if (marca != null && !marca.equals("")) {
FiltroHidrometroMarca filtroHidrometroMarca = new FiltroHidrometroMarca();
filtroHidrometroMarca.adicionarParametro(new ParametroSimples(
FiltroHidrometroMarca.ID, marca));
Collection marcas = fachada.pesquisar(filtroHidrometroMarca,
FiltroHidrometroMarca.class.getName());
if (marcas != null && !marcas.isEmpty()) {
// Marca Foi Encontrada
Iterator marcaIterator = marcas.iterator();
hidrometroMarca = (HidrometroMarca) marcaIterator.next();
} else {
hidrometroMarca = new HidrometroMarca();
}
}
String diametro = (String) hidrometroActionForm
.getIdHidrometroDiametro();
HidrometroDiametro hidrometroDiametro = null;
if (diametro != null && !diametro.equals("")) {
FiltroHidrometroDiametro filtroHidrometroDiametro = new FiltroHidrometroDiametro();
filtroHidrometroDiametro
.adicionarParametro(new ParametroSimples(
FiltroHidrometroDiametro.ID, diametro));
Collection diametros = fachada.pesquisar(
filtroHidrometroDiametro, HidrometroDiametro.class
.getName());
if (diametros != null && !diametros.isEmpty()) {
// Diametro Foi Encontrado
Iterator diametroIterator = diametros.iterator();
hidrometroDiametro = (HidrometroDiametro) diametroIterator
.next();
} else {
hidrometroDiametro = new HidrometroDiametro();
}
}
String capacidade = (String) hidrometroActionForm
.getIdHidrometroCapacidade();
HidrometroCapacidade hidrometroCapacidade = null;
if (capacidade != null && !capacidade.equals("")) {
FiltroHidrometroCapacidade filtroHidrometroCapacidade = new FiltroHidrometroCapacidade();
filtroHidrometroCapacidade
.adicionarParametro(new ParametroSimples(
FiltroHidrometroCapacidade.ID, capacidade));
Collection capacidades = fachada.pesquisar(
filtroHidrometroCapacidade, HidrometroCapacidade.class
.getName());
if (capacidades != null && !capacidades.isEmpty()) {
// Capacidade Foi Encontrada
Iterator capacidadeIterator = capacidades.iterator();
hidrometroCapacidade = (HidrometroCapacidade) capacidadeIterator
.next();
}
} else {
hidrometroCapacidade = new HidrometroCapacidade();
}
String tipo = (String) hidrometroActionForm.getIdHidrometroTipo();
HidrometroTipo hidrometroTipo = null;
if (tipo != null && !tipo.equals("")) {
FiltroHidrometroTipo filtroHidrometroTipo = new FiltroHidrometroTipo();
filtroHidrometroTipo.adicionarParametro(new ParametroSimples(
FiltroHidrometroTipo.ID, tipo));
Collection tipos = fachada.pesquisar(filtroHidrometroTipo,
HidrometroTipo.class.getName());
if (tipos != null && !tipos.isEmpty()) {
// Tipo Foi Encontrado
Iterator tipoIterator = tipos.iterator();
hidrometroTipo = (HidrometroTipo) tipoIterator.next();
}
} else {
hidrometroTipo = new HidrometroTipo();
}
String idLocalArmazenagem = (String) hidrometroActionForm
.getIdLocalArmazenagem();
HidrometroLocalArmazenagem hidrometroLocalArmazenagem = null;
if (idLocalArmazenagem != null && !idLocalArmazenagem.equals("")) {
FiltroHidrometroLocalArmazenagem filtroHidrometroLocalArmazenagem = new FiltroHidrometroLocalArmazenagem();
filtroHidrometroLocalArmazenagem
.adicionarParametro(new ParametroSimples(
FiltroHidrometroLocalArmazenagem.ID,
idLocalArmazenagem));
Collection locaisArmazenagens = fachada.pesquisar(
filtroHidrometroLocalArmazenagem,
HidrometroLocalArmazenagem.class.getName());
if (locaisArmazenagens != null && !locaisArmazenagens.isEmpty()) {
// O Local de Armazenagem foi encontrado
Iterator localArmazenagemIterator = locaisArmazenagens
.iterator();
hidrometroLocalArmazenagem = (HidrometroLocalArmazenagem) localArmazenagemIterator
.next();
} else {
throw new ActionServletException(
"atencao.pesquisa_inexistente", null,
"Local Armazenagem");
}
} else {
hidrometroLocalArmazenagem = new HidrometroLocalArmazenagem();
}
// seta os parametros que ser�o mostrados no relat�rio
hidrometroParametros.setNumero(numero);
hidrometroParametros.setDataAquisicao(dataAquisicao);
hidrometroParametros.setAnoFabricacao(anoFabricacao);
hidrometroParametros.setIndicadorMacromedidor(finalidade);
hidrometroParametros
.setHidrometroClasseMetrologica(hidrometroClasseMetrologica);
hidrometroParametros.setHidrometroMarca(hidrometroMarca);
hidrometroParametros.setHidrometroDiametro(hidrometroDiametro);
hidrometroParametros.setHidrometroCapacidade(hidrometroCapacidade);
hidrometroParametros.setHidrometroTipo(hidrometroTipo);
hidrometroParametros
.setHidrometroLocalArmazenagem(hidrometroLocalArmazenagem);
}
// Fim da parte que vai mandar os parametros para o relat�rio
// cria uma inst�ncia da classe do relat�rio
RelatorioManterHidrometro relatorioManterHidrometro = new RelatorioManterHidrometro(
(Usuario)(httpServletRequest.getSession(false)).getAttribute("usuarioLogado"));
relatorioManterHidrometro.addParametro("filtroHidrometro",
filtroHidrometro);
relatorioManterHidrometro.addParametro("hidrometroParametros",
hidrometroParametros);
relatorioManterHidrometro.addParametro("fixo", fixo);
relatorioManterHidrometro.addParametro("faixaInicial", faixaInicial);
relatorioManterHidrometro.addParametro("faixaFinal", faixaFinal);
relatorioManterHidrometro.addParametro("helper",helper);
// chama o met�do de gerar relat�rio passando o c�digo da analise
// como par�metro
String tipoRelatorio = httpServletRequest.getParameter("tipoRelatorio");
if (tipoRelatorio == null) {
tipoRelatorio = TarefaRelatorio.TIPO_PDF + "";
}
relatorioManterHidrometro.addParametro("tipoFormatoRelatorio", Integer
.parseInt(tipoRelatorio));
try {
retorno = processarExibicaoRelatorio(relatorioManterHidrometro,
tipoRelatorio, httpServletRequest, httpServletResponse,
actionMapping);
} catch (SistemaException ex) {
// manda o erro para a p�gina no request atual
reportarErros(httpServletRequest, "erro.sistema");
// seta o mapeamento de retorno para a tela de erro de popup
retorno = actionMapping.findForward("telaErroPopup");
} catch (RelatorioVazioException ex1) {
// manda o erro para a p�gina no request atual
reportarErros(httpServletRequest, "erro.relatorio.vazio");
// seta o mapeamento de retorno para a tela de aten��o de popup
retorno = actionMapping.findForward("telaAtencaoPopup");
}
// devolve o mapeamento contido na vari�vel retorno
return retorno;
}
}