Upload
lamphuc
View
215
Download
0
Embed Size (px)
Citation preview
UNIVERSIDADE FEDERAL DE SANTA CATARINA
Uma Aplicação para WEB de Apoio ao Gerenciamento de Grupos de Canto Coral Baseado em Tecnologias de Código
Aberto
MARCELO DE ANDRADE MACHADO
JUNHO/2004
2
UNIVERSIDADE FEDERAL DE SANTA CATARINA DEPARTAMENTO DE INFORMÁTICA E ESTATÍSTICA CURSO CIÊNCIAS DA COMPUTAÇÃO
MARCELO DE ANDRADE MACHADO
Uma Aplicação para WEB de Apoio ao Gerenciamento de Grupos de Canto Coral Baseado em Tecnologias de Código
Aberto
Florianópolis, 15 de outubro de 2004.
____________________________________ Prof. Leandro J. Komosinski
Orientador
_____________________________________ José Leomar Todesco
Banca
_____________________________________ Maria Marta Leite
Banca
Sumário
Resumo ................................................................................................................................... 5
Capítulo 1 – Introdução .......................................................................................................... 6
1.1 Uma Aplicação para WEB de Apoio ao Gerenciamento de Grupos de Canto Coral... 7 1.2 Solução ......................................................................................................................... 8 1.3 Objetivo Geral .............................................................................................................. 9 1.4 Objetivos Específicos ................................................................................................... 9
Capítulo 2 - Contextualização .............................................................................................. 10
2.1 Sobre a Solução .......................................................................................................... 10 2.2 Ferramentas Utilizadas ............................................................................................... 12
2.2.1 JSP (Java Server Pages)....................................................................................... 12 2.2.2 JasperReports....................................................................................................... 13 2.2.3 Hibernate ............................................................................................................. 14 2.2.4 MySQL ................................................................................................................ 16 2.2.5 Struts.................................................................................................................... 17 2.2.6 Microsoft Visio.................................................................................................... 17
2.3 Requisitos do Sistema................................................................................................. 17 Capítulo 3 – Base de Dados.................................................................................................. 19
3.1 Modelagem ................................................................................................................. 19 3.1.1 Tabela Pessoa ...................................................................................................... 21 3.1.2 Tabela Grupo ....................................................................................................... 21 3.1.3 Tabela Cantor ...................................................................................................... 22
3.2 Mapeamento ............................................................................................................... 22 3.2.1 Vantagens do Hibernate ...................................................................................... 23
Capítulo 4 - Desenvolvimento.............................................................................................. 24
4.1 Atores do Sistema....................................................................................................... 24 4.1.1 Maestro ................................................................................................................ 24 4.1.2 Professor .............................................................................................................. 24 4.1.3 Cantor .................................................................................................................. 24
4.2 Análise ........................................................................................................................ 25 4.2.1 Casos de Uso ....................................................................................................... 25
4.3 Projeto......................................................................................................................... 30 4.3.1 Pessoa .................................................................................................................. 31 4.3.2 Cantor .................................................................................................................. 31
4
4.3.3 Maestro ................................................................................................................ 31 4.3.4 Professor .............................................................................................................. 31 4.3.5 Administrador...................................................................................................... 32
4.4 Implementação............................................................................................................ 32 4.4.1 Camada de Apresentação..................................................................................... 32 4.4.2 Camada Lógica .................................................................................................... 35 4.4.3 Camada de Persistência ....................................................................................... 38
Capítulo 5 – Funcionamento da Aplicação .......................................................................... 42
5.1 Antes de Logado......................................................................................................... 42 5.2 Após Logado .............................................................................................................. 46
Conclusão ............................................................................................................................. 55
Referências Bibliográficas.................................................................................................... 56
5
MACHADO, Marcelo de Andrade. Uma Aplicação para WEB de Apoio ao Gerenciamento de Grupos de Canto Coral Baseado em Tecnologias de Código Aberto. 2004. 57p. Trabalho de Conclusão de Curso – Centro de Informática e Estatística, Universidade Federal de Santa Catarina, 2004.
Resumo
Desenvolve uma aplicação WEB que realiza o gerenciamento de alunos em grupos
de canto, além de gerar relatórios dos alunos matriculados nesses grupos. São utilizadas tecnologias de código aberto construídas em Java com exceção do banco de dados. As ferramentas utilizadas para desenvolver essa aplicação foram: Java, JSP, JasperReports, MySQL, Hibernate e Struts. As funcionalidades que a aplicação deve satisfazer foram informadas por um cliente, pessoa ao qual o programa é destinado. Os resultados obtidos são de grande valia tanto para os usuários do sistema como para o desenvolvedor. Grandes conhecimentos foram adquiridos na pesquisa e na implementação das tecnologias, elas facilitam muito o trabalho e deixam mais simples a forma de programar.
6
Capítulo 1 – Introdução
Na década de 90, a Internet atraiu a atenção de todos, com a promessa de sistemas
revolucionários, de acesso e processamento de informações de qualquer lugar do planeta.
Vários sistemas passaram a ser desenvolvidos em plataformas distribuídas e de código
aberto, usufruindo das vantagens da velocidade, segurança e confiabilidade.
A WEB continuou se popularizando e a cada dia novos usuários descobrem o
emocionante prazer de navegar na Internet. Ela fornece uma vasta biblioteca de
informações e serviços que, muitos deles, podem ser usados gratuitamente.
Ao longo dos anos, o processo de desenvolvimento de sistemas tem mudado,
elevando significativamente a maturidade desta área. Novas tecnologias surgiram para
reduzir os custos e acelerar o desenvolvimento, dentre elas a Java 2 Plataform, Enterprise
Edition (J2EE) (Sun, 2004), que oferece um modelo de aplicação distribuída em
multicamada baseada em componentes.
As informações de uma aplicação são armazenadas normalmente em uma ou mais
base de dados. A integridade dos dados seria afetada se múltiplos programas pudessem
atualizar os dados simultaneamente. Uma falha de sistema durante o processamento de uma
transação causaria um afeto parcial dos dados, gerando problemas de consistência. As
transações do banco de dados precisam ser precisas, atuais e confiáveis. Deve prover o
controle de acesso concorrente aos dados por múltiplos programas e, em caso de falha do
sistema, devem certificar que após a recuperação os dados estarão em um estado
consistente.
7
Para se construir uma aplicação WEB existe uma série de ferramentas que podem
ser utilizadas. A escolha é baseada nos benefícios que cada uma pode trazer para o projeto e
se o “custo-benefício” vale a pena.
O cadastro de cantores nos grupos de canto ainda é feito a mão através de uma ficha
de inscrição. Além disso, surgiu a necessidade de emitir relatórios de alunos matriculados.
Com o intuito de facilitar a vida das pessoas e agilizar seu trabalho foi pensado em uma
aplicação WEB de apoio ao gerenciamento de grupos de Canto Coral.
Não foi possível encontrar nenhuma aplicação que correspondesse exatamente ao
problema proposto. O site de busca utilizado foi o Google.
Porém existem algumas ferramentas que, se utilizados em conjunto, podem ajudar a
resolvê-lo. Esses serão apresentados em seguida.
1.1 Uma Aplicação para WEB de Apoio ao Gerenciamento de
Grupos de Canto Coral.
Esse projeto pretende resolver basicamente 2 problemas.
1. Para se cadastrar num grupo Coral, o Cantor tem que preencher uma ficha e
entrega-la a pessoa responsável. Esse sistema não possui uma forma muito prática de
cadastramento, pelo fato dele ser feito a mão através de uma ficha de inscrição.
2. Muitas vezes é preciso fornecer listagens impressas com apenas algumas
informações dos membros. Por exemplo: num dia é necessário gerar uma listagem onde
apareça apenas nome, RG e número do passaporte dos integrantes. Noutro dia é preciso
8
gerar outra listagem com nome, RG e curso (caso ele esteja ingressado em uma faculdade).
Ás vezes a lista deve estar em ordem alfabética pelos nomes, outras vezes deve estar em
ordem alfabética pelo curso, etc.
1.2 Solução
Uma aplicação para a WEB seria de grande ajuda e apoio a todos os participantes do
grupo Coral e também àqueles que pretendem ingressar no grupo. O maestro, pessoa que
realiza o cadastro dos membros, encontraria nessa aplicação um ambiente favorável para a
administração dos mesmos, ganhando assim tempo para realizar atividades mais
importantes.
A solução para os problemas propostos segue respectivamente:
1. O cadastro de uma pessoa será realizado via WEB. O interessado em entrar no
grupo acessará uma página na Internet e preencherá seus dados cadastrais. Após isso,
receberá um e-mail para confirmar sua inscrição no grupo. Isso efetivaria o cadastro,
permitindo assim, o acesso ao sistema e o ingresso no grupo.
2. Os relatórios com informações dos membros também será obtida via Internet. O
professor (única pessoa autorizada a emitir relatórios) apenas informará o que a listagem
deve conter, por exemplo o nome, RG e idade do cantor. Após isso, bastaria clicar em um
botão para que o relatório fosse gerado e apresentado ao professor.
Para o armazenamento dos dados da pessoa(nome, endereço, curso, etc) será
utilizado um banco de dados que possa ser facilmente adaptado, ou seja, a medida que haja
9
necessidade de inserir novos registros, é possível definir novas tabelas (ou também excluí-
las) sem ter que mudar toda a base de dados nem a aplicação.
1.3 Objetivo Geral
Desenvolver uma aplicação WEB de apoio ao gerenciamento de grupos de canto
coral utilizando tecnologias de código aberto.
1.4 Objetivos Específicos
Estudar o funcionamento das tecnologias Java, em especial Struts, JasperReports e
Hibernate.
Desenvolver uma aplicação que facilite o trabalho das pessoas.
10
Capítulo 2 - Contextualização
Aplicações WEB são aplicações que usam a infra-estrutura da Internet, ou seja, a
interface de comunicação com o usuário é um programa cliente WEB (navegadores,
clienteftp, etc).
Para que uma aplicação seja bem sucedida, é necessário obter a requisição do cliente
através da Internet (o que o usuário quer fazer), como tratar e executar as ações que estes
dados demandam (o que fazer), garantir a segurança que as ações não possam comprometer
todo o sistema (o que não se pode fazer), tratar a resposta e formatar a saída de maneira que
o usuário possa ler (diagramação da saída em formato HTML).
2.1 Sobre a Solução
A fim de solucionar o problema acima mencionado, será desenvolvida uma
aplicação cujo principal intuito é de facilitar o trabalho das pessoas que fazem parte do
grupo de canto Coral.
Para resolver o problema do cadastro de pessoas será construído, portanto um
sistema gerenciador de cadastros. Essa aplicação funcionará da seguinte forma: um cantor
se cadastra via WEB no sistema. Nesse cadastro, além dos campos regulares, também
haverá um campo de login e um de senha. Para garantir que o login seja único, ele será o e-
mail da pessoa. Isso garante que o cantor que se cadastrou é o mesmo que possui o e-mail.
Caso o indivíduo não possua endereço de e-mail, ele não poderá mudar seus dados
11
cadastrais pessoalmente, pois as informações contidas nesses dois campos serão utilizadas
para validar o usuário no sistema.
Uma vez cadastrado, o cantor pode acessar o sistema informando seu login e sua
senha. Dentro do sistema, é possível mudar seus dados cadastrais bem como sua senha e se
excluir do grupo.
Caso a pessoa seja um professor, ela acessará uma tela diferente onde apenas
digitará seu nome, e-mail (que servirá como login) e senha. Após isso, receberá um e-mail
para confirmar sua inscrição que, depois de confirmado, poderá acessar automaticamente o
sistema sem necessidade de autorização do administrador. Lá dentro, ele poderá visualizar a
ficha de todos os integrantes.
A ferramenta que será utilizada para o desenvolvimento dessa aplicação será o JSP.
Para resolver o problema de emissão de relatórios, optou-se pela utilização de um
software desenvolvido também em JAVA, o JasperReports. Ele será utilizada da seguinte
forma: haverá uma página dentro do sistema em que o usuário selecionará os atributos que
o relatório irá apresentar. Por exemplo: o usuário informa que será um relatório de
integrantes, depois informa quais atributos desse integrantes (nome, sexo, endereço)
deverão ser apresentados e, para cada um, se existe alguma restrição. Caso ele deseje por
exemplo selecionar apenas aquelas pessoas cujo nome comece com a letra A ou aquelas
que se cadastraram no mês de Abril, etc.
O Banco de Dados utilizado será o MySQL e, para fazer a persistência dos dados,
será utilizado o Hibernate.
12
2.2 Ferramentas Utilizadas
As ferramentas utilizadas para desenvolver essa aplicação são todas gratuitas. São
elas: JSP, JasperReports, MySQL, Hibernate, Struts e Microsoft Visio.
2.2.1 JSP (Java Server Pages)
Os motivos para escolher JSP para desenvolver essa aplicação foram que Java
(linguagem base do JSP) é uma linguagem de programação multi-plataforma, ou seja, um
programa feito em Java pode rodar em qualquer sistema operacional. Isso é possível devido
a um componente chamado Java Virtual Machine (JVM). O JVM trabalha como um
tradutor Java que processa os bytecodes (código gerado após a compilação) nos arquivos
.class (classes compiladas) e os executa.
Java foi apresentado comercialmente em 1995. Desde então, o número de
programadores dessa linguagem vem crescendo consideravelmente.
JSP é uma tecnologia que permite criar páginas WEB dinamicamente. Por ser uma
tecnologia Java, uma página JSP pode ser acessada em qualquer plataforma não importando
o tipo de navegador utilizado. Além disso, Java possui uma vasta biblioteca de classes que
facilitam e agilizam o trabalho.
JSP é ainda ferramenta baseada em scripts, cuja sintaxe une Java e HTML. Dentre
as vantagens da tecnologia Java para a WEB, podemos citar:
• Portabilidade – Todas as aplicações Java seguem e adotam uma API bem
definida e aceita;
13
• Recursos de linguagem – A linguagem Java oferece uma grande variedade
de recursos prontos, por exemplo, acesso a rede, compactação de dados, uso
de aplicações distribuídas em servidores distintos;
• Uso simples e eficiente – Um servlet é carregado na memória como uma
única instância de objeto, que fica na memória, independente da quantidade
de requisições.
O JSP funciona da seguinte forma: o usuário faz uma requisição, através de seu
navegador, de uma página JSP. Essa requisição é interpretada por um servidor que, através
do JSP Engine, a página é compilada e transformada em um servlet. Servlets são classes
Java, que tem a propriedade especial de serem executadas em um servidor. Esse, por suas
vez, se encarrega de gerar o HTML que é retornado ao usuário.
2.2.2 JasperReports
JasperReports é uma ferramenta para geração de relatórios escrita inteiramente em
Java que recebe como entrada uma descrição estruturada do relatório. Essa descrição é
armazenada num arquivo XML que contém toda a descrição do relatório e, ao ser
compilado, gera um arquivo com extensão jasper. Ele possui, por exemplo, as definições da
página (altura, largura, margem, etc), possui também a definição dos parâmetros que são
utilizados no SQL de consulta, que também deve ficar nesse arquivo. Ele contém a
descrição de cada campo do banco de dados, ou seja, se o campo é do tipo String, Integer
ou Boolean, entre outras informações.
14
Os relatórios podem ser montados de duas formas: Através da criação de um
arquivo XML totalmente escrito por um editor de texto, ou através de uma ferramenta
conhecida como iReport que possui uma interface gráfica para construção de relatórios,
gerando automaticamente o arquivo XML.
Os relatórios podem ser impressos em vários formatos, incluindo PDF, HTML, XLS
ou CSV. Além disso, o JasperReport possui um formato padrão que, se nenhum dos outros
formatos tiver sido informado, o relatório é gerado no formato padrão.
2.2.3 Hibernate
Segundo o conteúdo da página http://www.hibernate.org.br, Hibernate é uma
ferramenta para aplicações Java que possibilita uma relação Objeto-Relacional com o
Banco de Dados. Ele proporciona o mapeamento do conjunto de dados de um banco de
dados para uma linguagem Orientada a Objetos.
Ao iniciar a aplicação, o Hibernate obtém todas as informações do Banco de Dados
e os “transforma” em objetos. Ao se fazer uma consulta basta apenas se referenciar ao
objeto específico. Dessa forma, as atualizações e inserções se tornam muito mais práticas.
O programador pode portanto escrever código em Java que, transparentemente,
acessa a base de dados sem utilizar SQL.
A Figura 1 possui um modelo da arquitetura do relacionamento do Hibernate com o
Banco de Dados e o mundo Orientado a Objetos.
15
Figura 1- “Arquitetura do Hibernate” - Extraída do arquivo hibernate.pdf [Peinado, pg 10]
O Hibernate pode ser utilizado com vários bancos de dados. No caso de MySQL,
por exemplo, basta apenas informar o usuário (user), a senha (password) e sua localização
(localhost) no arquivo de configuração do Hibernate “hibernate.properties”. Isso faz do
Hibernate uma ferramenta prática e fácil de se utilizar, permitindo um desenvolvimento
mais rápido e um processo de manutenção mais simples, mesmo para os desenvolvedores
que não tenham familiaridade com SQL.
Com o intuito de aprender o funcionamento do Hibernate foi utilizado 3
ferramentas: o Eclipse, que é uma IDE Java, o Ant, que é uma ferramenta Java para
construção de projetos (build) onde a configuração é feita em XML, e o XDoclet que é uma
ferramenta de geração de código. O que o XDoclet faz é gerar um arquivo XML para cada
classe da aplicação. Essa classe contém todos os campos de uma tabela no banco de dados.
O XML gerado é o arquivo que contém a descrição de cada campo da tabela.
16
2.2.4 MySQL
“Um banco de dados é uma coleção de dados estruturados. Ele pode ser qualquer
coisa desde uma simples lista de compras a uma galeria de imagens ou a uma grande
quantidade de informação da sua rede coorporativa. Para adicionar, acessar, e processar
dados armazenados em um banco de dados de um computador, você necessita de um
sistema de gerenciamento de bancos de dados como o Servidor MySQL. Como os
computadores são muito bons em lidar com grandes quantidades de dados, o gerenciamento
de bancos de dados funciona como a engrenagem central na computação, seja como
utilitários independentes ou como partes de outras aplicações.”( MySQL AB, 2004)
O MySQL é uma banco de dados relacional gratuito. Um banco de dados funciona
como um “armário” que armazena informações em tabelas. Essas tabelas normalmente
armazenam informações textuais, porém, também podem armazenar arquivos. Por
exemplo, em um banco de dados pode ser criada uma tabela nomeada Pessoa. Dentro desta
pode haver informações relacionadas a uma pessoa, como nome, idade, endereço, etc.
“Um banco de dados relacional armazena dados em tabelas separadas em vez de
colocar todos os dados um só local. Isso proporciona velocidade e flexibilidade. A parte
SQL do MySQL atende pela “Structured Query Language” - Linguagem Estrutural de
Consultas''. SQL é a linguagem padrão mais comum usada para acessar banco de dados e é
definida pelo Padrão ANSI/ISO SQL. .”( MySQL AB, 2004)
17
2.2.5 Struts O Struts é um framework Java baseada na arquitetura Modelo 2 (Model 2, 2004).
Ele possui um controlador que permite trabalhar tanto com a interface da aplicação (JSP),
quanto com tecnologias de acesso a dados como JDBC, EJB e Hibernate.
Struts permite a troca de informações entre a interface e a lógica da aplicação
através das suas classes Action e Form declarados em um arquivo XML.
2.2.6 Microsoft Visio O Visio é uma ferramenta de modelagem que utiliza notação UML. Ele pode ser
utilizado por exemplo para se modelar as tabelas de um banco de dados.
2.3 Requisitos do Sistema
Os requisitos do sistema são as funcionalidades que a aplicação deve ter. São eles:
Requisito 1: Cadastrar Cantor;
Requisito 2: Autenticar Pessoa;
Requisito 3: Editar Cantor;
Requisito 4: Alterar Senha;
Requisito 5: Excluir Cantor;
Requisito 6: Administrar Pessoa (Administrador);
19
Capítulo 3 – Base de Dados
Toda aplicação deve conter uma base de dados para guardar as informações
relativas ao cliente que a usufrui. As transações do banco devem ser precisas, atuais e
confiáveis. Deve prover o controle de acesso concorrente aos dados por múltiplos
programas e, em caso de falha do sistema, devem certificar que após a recuperação os
dados estarão em um estado consistente.
Neste capítulo serão abordados os detalhes de mapeamento e modelagem das
tabelas da base de dados e a forma em que o Hibernate mapeia as informações contidas
numa base de dados relacional para um “mundo” orientado a objetos.
3.1 Modelagem
Para se desenhar a modelagem das tabelas de um banco, é necessário entender quais
informações serão relevantes e que devem ser armazenadas.
A Figura 3 apresenta a modelagem desenvolvida para o programa. Essa modelagem
foi feita com o auxílio da ferramenta Microsoft Visio.
20
Figura 3- Modelagem das Tabelas do Banco de Dados.
A sigla PK ao lado do nome do atributo da tabela significa “chave primária”
(Primary Key). Esse atributo é responsável por identificar uma única tupla na tabela. A
sigla FK significa “chave estrangeira” (Foreign Key). Esse atributo faz a ligação entre duas
tabelas. Por exemplo a tabela Idiomas possui a chave estrangeira id_cantor. Portanto, cada
21
cantor pode possuir 1 ou mais Idiomas. As flechas entre as tabelas representam o
relacionamento entre elas.
Como pode ser visto, o banco é dividido em 8 tabelas. As tabelas mais importantes e
seus relacionamentos serão explicados a seguir.
3.1.1 Tabela Pessoa
Nessa tabela são armazenadas todas as informações referentes a uma pessoa. Ela
ainda possui uma referência a tabela Endereço de 1 para 1, ou seja, uma pessoa pode ter
apenas um endereço e vice-versa, um endereço pode pertencer a apenas uma pessoa.
Ela possui relação com as demais tabelas Cantor, Professor, Administrador e
Maestro. Cada uma dessas tabelas é um tipo particular de pessoa. O atributo “tipo_pessoa”
(Veja a tabela Pessoa) identifica cada tipo de pessoa, Cantor, Professor, Administrador ou
Maestro. Sem ele, seria necessário realizar várias consultas no banco para saber a quem
pertencem o e-mail e a senha informados na autenticação, por exemplo.
3.1.2 Tabela Grupo
Nessa tabela são registrados os grupos de canto Coral. As únicas tabelas que
possuem relação com ela são o Cantor e o Maestro, pois são as únicas pessoas que podem
participar de um grupo.
22
3.1.3 Tabela Cantor
Essa tabela possui as informações específicas de um cantor, assim como o grupo em
que ele participa.
3.2 Mapeamento
Para que o mapeamento da base de dados através do Hibernate fosse possível, foi
necessário a realização de 3 procedimentos:
Primeiro: Criar uma classe Java para cada tabela do banco. No comentário de cada
método descrever as propriedades do atributo necessárias para o mapeamento.
Segundo: Criar os arquivos XML para cada classe contendo a descrição de cada
atributo, o tipo e a coluna relacionada, além de outras propriedades.
Terceiro: Geração da classe de persistência. Essa classe é quem faz a conexão entre
o mundo orientado a objetos e o mundo relacional. Isso funciona da seguinte forma: Ao se
fazer uma seleção na base de dados de uma pessoa por exemplo, a tupla referente a ela será
instanciada num objeto da classe Pessoa. Portanto, cada atributo da tabela será mapeado
para o atributo dessa classe. Caso haja alguma inconsistência entre as duas partes, por
exemplo na classe Pessoa foi esquecido de declarar o atributo nome, ocorrerá um erro e
nenhum registro do banco será mapeado.
23
Portanto, todas as informações contidas no banco devem ser declaradas
corretamente tanto na classe Java como no arquivo XML. Para que não ocorra um erro de
mapeamento.
3.2.1 Vantagens do Hibernate
O Hibernate trata todas as tabelas como objetos. Para alterar os dados de um
registro de uma tabela, basta apenas instanciar (pegar da base de dados) esse objeto,
modificá-lo e salvá-lo novamente no banco. Para salvar ou remover é ainda mais fácil. No
primeiro basta apenas criar um novo objeto, preenchê-lo e salvá-lo no banco. No segundo,
basta informar a sua chave primária e chamar o método que remove um registro do banco.
O Hibernate utiliza o HQL (Hibernate Query Language), uma linguagem de
consulta parecida com o SQL, porém orientado a objetos. Os atributos informados no HQL
não são os atributos da tabela, mas sim do objeto instanciado. Por utilizar uma linguagem
de consulta própria, o Banco de Dados pode ser alterado sem modificação do código fonte.
Basta apenas modificar o arquivo “hibernate.properties”, comentado no capítulo 2.
24
Capítulo 4 - Desenvolvimento
Neste capítulo serão relatado as etapas do desenvolvimento da aplicação: a Análise,
o Projeto e a Implementação.
4.1 Atores do Sistema
Ao analisar o funcionamento da aplicação pode-se perceber que existem três atores:
4.1.1 Maestro
Pessoa que ministra um curso.
4.1.2 Professor
Pessoa que pode emitir relatórios dos cantores do sistema.
4.1.3 Cantor
Pessoa que preenche um formulário de cadastro para ingressar num grupo.
25
4.2 Análise
Nesse sistema foram identificados os seguintes objetos: grupo de canto coral,
maestro, cantor e professor. O grupo de canto coral é o grupo em que o cantor entra quando
se cadastra no sistema. Além disso, o grupo de canto é ministrado por um maestro. O
maestro é o administrador do sistema, é quem decide se um cantor pode ou não entrar no
grupo. Ele também pode emitir relatórios e têm acesso as informações de todos os
integrantes do grupo. O cantor é o integrante do grupo, podendo apenas modificar seus
dados cadastrais e sua senha. O professor é um usuário que pode emitir relatórios e
visualizar as informações dos cantores.
4.2.1 Casos de Uso
Casos de Uso são as funções exercidas pelos atores do sistema. É uma descrição do
processo que o sistema pode executar. Um caso de uso pode possuir os atributos Ator, que é
quem executa a função do caso de uso, Descrição, que descreve o caso de uso e Tipo,
atributo que indica a importância do caso de uso.
A seguir serão definidos os casos de uso para os requisitos “Cadastrar Cantor”,
“Editar Cantor”, “Alterar Senha”, “Autenticar Pessoa”, “Excluir Cantor”, “Administrar
Pessoa”, “Emitir Relatório”, “Cadastrar Grupo”, “Cadastrar Professor”:
Caso de Uso: Cadastro no Sistema
26
Ator: Cantor
Descrição: O cantor, após preencher seus dados cadastrais e submeter o
formulário receberá um e-mail para confirmar sua inscrição.
Tipo: Primário
• Seqüência dos eventos:
1. O cantor acessa o sistema e em seguida acessa a página de cadastro.
2. O cantor informa seus dados cadastrais e submete o formulário.
3. O sistema processa os dados e verifica se há algum erro.
4. O sistema efetiva o cadastro do cantor.
Caso de Uso: Editar Dados Cadastrais
Ator: Cantor
Descrição: O cantor, após autenticado no sistema, pode alterar seus dados
cadastrais.
Tipo: Secundário
• Seqüência dos eventos:
1. O cantor acessa o formulário de alteração de dados cadastrais.
2. O cantor altera seus dados cadastrais.
3. O sistema verifica se não há erros nos dados alterados.
4. O sistema efetiva a alteração.
27
Caso de Uso: Alterar Senha
Ator: Cantor, Maestro e Professor
Descrição: A pessoa, após autenticada no sistema, pode alterar suasenha.
Tipo: Secundário
• Seqüência dos eventos:
1. A pessoa acessa o formulário de alteração senha.
2. A pessoa altera sua senha.
3. O sistema verifica se não há erros.
4. O sistema efetiva a alteração.
Caso de Uso: Autenticar Pessoa
Ator: Cantor, Maestro e Professor
Descrição: A pessoa é autenticada no sistema através de seu e-mail e de sua
senha.
Tipo: Primário
• Seqüência dos eventos:
1. A pessoa preenche os campos e-mail e senha e clica no botão entrar.
28
2. O sistema verifica se essa pessoa possui cadastro no sistema.
3. O sistema permite a entrada da pessoa apresentando a tela de entrada.
Caso de Uso: Excluir Cantor
Ator: Maestro
Descrição: O cantor é excluído do sistema pelo maestro.
Tipo: Secundário
• Seqüência dos eventos:
1. O maestro informa qual cantor ele deseja excluir.
2. O sistema exclui o cantor da base de dados.
Caso de Uso: Administrar Pessoa
Ator: Maestro
Descrição: O maestro tem permissão para executar as seguintes funções:
visualizar e excluir cantor, emitir relatórios, cadastrar Grupo e
cadastrar Professor.
Tipo: Primário
• Seqüência dos eventos:
1. O maestro se autentica no sistema.
29
2. O maestro clica no link cuja função ele deseja executar.
3. O sistema atende ao pedido.
Caso de Uso: Emitir Relatórios
Ator: Maestro e Professor
Descrição: O maestro ou o professor pode emitir relatórios dos alunos
cadastrados no sistema.
Tipo: Primário
• Seqüência dos eventos:
1. O maestro ou o professor se autentica no sistema.
2. O maestro ou o professor clica no link emitir relatório.
3. O sistema apresenta a tela para emissão de relatório.
4. O maestro ou o professor seleciona os parâmetros do relatório e clica no
botão Emitir.
5. O sistema emite o relatório apresentando-o na tela.
Caso de Uso: Cadastrar Grupo
Ator: Maestro
Descrição: O maestro pode cadastrar um grupo no sistema
Tipo: Secundário
30
• Seqüência dos eventos:
1. O maestro se autentica no sistema.
2. O maestro clica no link Cadastrar Grupo.
3. O sistema apresenta a tela de cadastramento de um novo grupo.
4. O maestro informa os dados do novo grupo e clica no botão Cadastrar.
5. O sistema salva o novo grupo no banco de dados.
Caso de Uso: Cadastrar Professor
Ator: Maestro
Descrição: O maestro pode cadastrar um professor no sistema
Tipo: Secundário
• Seqüência dos eventos:
1. O maestro se autentica no sistema.
2. O maestro clica no link Cadastrar Professor.
3. O maestro informa os dados do professor e clica no botão Cadastrar.
4. O sistema salva o professor no banco de dados.
4.3 Projeto
31
Feito a análise do sistema, a solução adotada foi à criação dos seguintes objetos:
4.3.1 Pessoa
Objeto principal do sistema. Dele é herdado o Cantor, Maestro, Professor e
Administrador. Esse objeto possui todas as informações relacionadas a uma Pessoa.
4.3.2 Cantor
Objeto que possui todas as informações relacionadas a um cantor. Todos os cantores
são uma pessoa.
4.3.3 Maestro
Objeto que possui apenas a identificação do maestro e da pessoa. As informações
necessárias de um maestro estão no objeto pessoa.
4.3.4 Professor
Objeto que possui apenas a identificação do professor e da pessoa. As informações
necessárias de um professor estão no objeto pessoa.
32
4.3.5 Administrador
Objeto que possui apenas a identificação do administrador e da pessoa. As
informações necessárias de um administrador estão no objeto pessoa.
4.4 Implementação
A implementação do projeto foi feita em três camadas: Camada de Apresentação,
Camada Lógica e Camada de Persistência.
4.4.1 Camada de Apresentação
A camada de apresentação é formada pelas páginas dinâmicas do sistema (arquivos
com extensão jsp). Os principais arquivos estão listados abaixo.
4.4.1.1 index.jsp
O index.jsp é o arquivo de entrada no sistema. Ele é um frame que divide a página
em três outros arquivos: login.jsp, paginaNordeste.jsp e paginaSudeste.jsp.
33
4.4.1.2 login.jsp
O login.jsp é a página de entrada do sistema. Onde se é informado o email e a
senha.
4.4.1.3 paginaNordeste.jsp
A paginaNordeste.jsp é uma página fixa em que apresenta um texto representativo
da aplicação, “Sistema de Apoio aos Grupos do Movimento Coral”.
4.4.1.4 paginaSudeste.jsp
A paginaSudeste.jsp é onde apresenta as telas de cadastro do sistema.
4.4.1.5 cadastroParte1.jsp
Essa é a página que contém a primeira parte do cadastro de um cantor.
4.4.1.6 cadastroParte2.jsp
Essa é a página que contém a segunda parte do cadastro de um cantor.
4.4.1.7 cadastroParte3.jsp
34
Essa é a página que contém a terceira e última parte do cadastro de um cantor.
4.4.1.8 alteraSenha.jsp
A página alteraSenha.jsp possui os campos para alteração de senha.
4.4.1.9 atualizaDados.jsp
O atializaDados.jsp possui o formulário de alteração de dados de uma pessoa. 4.4.1.10 cadastraGrupo.jsp
A página cadastraGrupo.jsp possui os campos para criação de um novo grupo
4.4.1.11 cadastraProfessor.jsp
A página cadastraProfessor.jsp possui os campos para cadastro de professor.
4.4.1.12 gerarRelatorio.jsp
A página gerarRelatorio.jsp possui os campos para se gerar um relatório.
4.4.1.13 funcoesJavaScript.js
O arquivo funcoesJavaScript.js possui o código JavaScript utilizado na aplicação.
4.4.1.14 estiloCoral.css
O arquivo estiloCoral.css possui as propriedades de um campo ou texto da
aplicação. Como por exemplo cor, tamanho, fonte, entre outros.
35
4.4.2 Camada Lógica
A Camada Lógica é formada pelos arquivos que tratam da lógica da aplicação. Os
principais estão listados abaixo.
4.4.2.1 Pessoa.java
Classe que possui as informações relacionadas a uma pessoa.
4.4.2.2 Cantor.java
Classe que possui as informações relacionadas a um cantor.
4.4.2.3 Professor.java
Classe que possui as informações relacionadas a um professor.
4.4.2.4 Maestro.java
Classe que possui as informações relacionadas a um maestro.
4.4.2.5 Administrador.java
Classe que possui as informações relacionadas a um administrador.
4.4.2.6 Endereco.java
36
Classe que possui o endereço de uma pessoa
4.4.2.7 Idiomas.java
Classe que possui as os idiomas falados por um cantor.
4.4.2.8 Grupo.java
Classe que possui as informações relacionadas a um grupo.
4.4.2.9 ConstantesCoral.java
Classe que possui as constantes da aplicação.
4.4.2.10 Principal.java
Classe que possui os principais algoritmos do programa.
4.4.2.11 LoginAction.java
Classe que estende a classe Action do Struts, responsável por efetivar a autenticação
da pessoa.
4.4.2.12 LoginActionForm.java
Classe que estende a classe ActionForm do Struts, responsável por trazer da página
login.jsp os valores dos campos e-mail e senha.
37
4.4.2.13 AlteraSenha.java
Classe que estende a classe Action do Struts, responsável por alterar a senha da
pessoa.
4.4.2.14 CadastroParte1Action.java
Classe que estende a classe Action do Struts, responsável por armazenar as
informações da primeira parte do formulário de cadastro.
4.4.2.15 CadastroParte2.java
Classe que estende a classe Action do Struts, responsável por armazenar as
informações da segunda parte do formulário de cadastro.
4.4.2.16 CadastroParte3.java
Classe que estende a classe Action do Struts, responsável por armazenar as
informações da terceira parte do formulário de cadastro e efetiva-lo.
4.4.2.17 AtualizaDadosAction.java
Classe que estende a classe Action do Struts, responsável por efetivar a atualização
dos dados da pessoa.
38
4.4.2.18 Mensagens.propesties
Arquivo que contém as mensagens do programa. Como por exemplo, a mensagem
mostrada na figura 6.
4.4.2.19 GerarRelatorioAction.java
Gera o relatório e apresenta na tela.
4.4.2.20 nome_email.jasper
Arquivo utilizado pelo JasperReports para geração do relatório.
4.4.2.21 struts-config.xml
Arquivo onde se configura o mapeamento das classes Action e ActionForm do
Struts.
4.4.3 Camada de Persistência
Na camada de persistência encontram-se os arquivos que interagem com a base de
dados. Os principais estão listados abaixo.
39
4.4.3.1 Pessoa.hbm.xml
Arquivo em que se declara o mapeamento da tabela Pessoa para a classe Pessoa.
4.4.3.2 Cantor.hbm.xml
Arquivo em que se declara o mapeamento da tabela Cantor para a classe Cantor.
4.4.3.3 Professor.hbm.xml
Arquivo em que se declara o mapeamento da tabela Professor para a classe
Professor.
4.4.3.4 Maestro.hbm.xml
Arquivo em que se declara o mapeamento da tabela Maestro para a classe Maestro.
4.4.3.5 Administrador.hbm.xml
Arquivo em que se declara o mapeamento da tabela Administrador para a classe
Administrador.
4.4.3.6 Endereco.hbm.xml
40
Arquivo em que se declara o mapeamento da tabela Endereco para a classe
Endereco.
4.4.3.7 Idiomas.hbm.xml
Arquivo em que se declara o mapeamento da tabela Idiomas para a classe Idiomas.
4.4.3.8 Grupo.hbm.xml
Arquivo em que se declara o mapeamento da tabela Grupo para a classe Grupo.
4.4.3.9 BaseDAO.java
Arquivo que interage com o banco de dados, inserindo, atualizando, removendo e
buscando registros.
4.4.3.10 HibernateSession.java
Arquivo que abre a conexão com o banco de dados.
4.4.3.11 DAOPessoa.java
Classe que estende a BaseDAO. Ela obtém e salva os dados de uma pessoa.
41
4.4.3.12 DAOCantor.java
Classe que estende a BaseDAO. Ela obtém e salva os dados de um cantor.
4.4.3.13 DAOMaestro.java
Classe que estende a BaseDAO. Ela obtém e salva os dados de um maestro.
4.4.3.14 HQL.java
Interface que contém os HQLs do hibernate já declarados.
4.4.3.15 hibernate.properties
Arquivo que contém a configuração de acesso ao banco de dados.
42
Capítulo 5 – Funcionamento da Aplicação
Todo programa desenvolvido para um cliente, possui uma interface amigável de
fácil compreensão. Não basta apenas ser eficiente, deve também ser prática. Nesse capítulo
será descrito todo o funcionamento do programa do ponto de vista do usuário.
5.1 Antes de Logado
A Figura 4 representa a tela de “boas vindas” da aplicação. O frame inferior direito
possui uma breve explicação do que se trata o Movimento Coral.
Figura 4- “Tela de Entrada da Aplicação”.
43
Essa tela ainda possui o link “Não sou cadastrado”. Esse link direciona para a tela
de cadastro de alluno (Figura 5).
O cadastro de aluno é dividido em 3 partes para uma melhor visualização e
compreensão do formulário. Na primeira parte, Figura 5, o cantor deve informar seus dados
para login (Email e Senha), seus dados pessoais (Nome, Data de Nascimento, Rg,
Endereço, Telefone, etc) e clicar no botão enviar.
Figura 5- “Tela de Cadastro de Aluno. Passo 1/3”.
Caso o campo e-mail ou senha, fundamentais para efetuar o login após o cadastro,
não tenham sido informados ou o e-mail for inválido, uma mensagem de erro aparecerá
impedindo que o usuário avance para o próximo passo. Veja Figura 6.
44
Figura 6- “Tela de Cadastro de Aluno apresentando erro no e-mail”.
Após os campos serem preenchidos corretamente, o usuário passará para o próximo
passo. O segundo formulário (Figura 7) contém informações referentes a um aluno, como
seu naipe, empresa que trabalha, grau de instrução, etc. Essa tela não possui nenhum campo
obrigatório. Dessa forma o aluno pode clicar em enviar sem preencher nenhum campo.
45
Figura 7- “Tela de Cadastro de Aluno. Passo 2/3”.
E finalmente, para se efetivar o cadastro o aluno deve responder três perguntas e
informar seu conhecimento em outras línguas, se tiver. Além disso, ele pode informar a
qual grupo ele pertence, caso ele saiba. Se não souber, basta selecionar a opção “Não sei”
que depois o maestro o colocará em algum grupo. Veja Figura 8.
46
Figura 8- “Tela de Cadastro de Aluno. Passo 3/3”.
Após clicar em enviar, o aluno efetiva seu cadastro e já está apto a entrar no sistema.
Figura 9.
5.2 Após Logado
Para se logar, o usuário deve informar seu e-mail e senha, seja ele cantor, professor,
maestro ou administrador. Caso ambos estejam informados corretamente ele entra no
sistema. As funcionalidades que uma pessoa pode exercer dentro do sistema depende do
47
tipo de pessoa que ela é. Se ela for um cantor, ele terá permissão apenas para Atualizar seus
dados cadastrais e atualizar sua senha. Veja Figura 10.
Figura 9- “Tela Cadastro Realizado com Sucesso”.
48
Figura 10- “Tela de Entrada do cantor após sua autenticação”.
Ao clicar no link Alterar Dados, o sistema abrirá o formulário de alteração de dados.
Nele aparecerão todas as informações do cadastro do aluno. Assim, basta alterar os campos
desejados e clicar em alterar. Veja Figuras 11, 12 e 13.
Figura 11- “Tela de Alteração de Dados”.
49
Figura 12- “Tela de Alteração de Dados (Continuação)”.
Figura 13- “Tela de Alteração de Dados (Continuação)”.
50
Além disso, o aluno ainda pode alterar sua senha clicando no link Alterar Senha. Ele
deve informar sua senha antiga, a nova senha, a confirmação da nova senha e clicar em
alterar. Veja Figura 14.
Figura 14- “Tela de Alteração de Senha”.
Caso a pessoa entre no sistema sendo um administrador, aparecerão novas
funcionalidades: Cadastro de Professor e Cadastro de Grupo.
No Cadastro de Professor, o administrador pode cadastrar um novo professor ao
sistema informando os parâmetros de entrada: e-mail e senha. Veja Figura 15.
No Cadastro de Grupo, o administrador pode cadastrar um novo grupo informando
o nome e a descrição do grupo. Veja Figura 16.
52
Caso alguma pessoa tente acessar alguma página digitando o caminho por extenso
no navegador e ela não tiver permissão para acessá-la, o sistema apresentará uma
mensagem de erro e em 4 segundos a página será redirecionada para a página inicial. Veja
figura 17.
Figura 17- “Tela de Página de Erro”.
Caso a pessoa logada seja um professor ela pode gerar relatórios dos cantores
cadastrados no sistema. Para isso, ela deve acessar o link “Gerar Relatório”, escolher qual
conjunto de parâmetros ele quer que apareça no relatório e clicar no botão “Gerar” (Figura
18).
Nessa primeira versão foram criados 5 tipos de relatórios contendo diferentes
atributos de um cantor. Os dados nome, email e data de inclusão (como no exemplo da
53
figura 19) são colhidos do banco de dados e representam todos os cantores cadastrados sem
restrição, pois não é possível escolher a quantidade de cantores que devem ser
apresentados.
Após o professor clicar no botão “Gerar”, o relatório vai aparecer no JasperViewer,
um tipo de visualizador de relatório do JasperReports (Figura 19). Nesse visualizador o
professor pode imprimir o relatório ou salvá-lo no seu computador.
Figura 18- “Tela de Geração de Relatório”.
54
Figura 19- “Tela Relatório de Cantores”.
Essa é a funcionalidade dessa versão do sistema de gerenciamento de grupos de
canto coral.
55
Conclusão
A Internet vem crescendo cada vez mais e a cada dia novas páginas são anexadas a
esse mundo. O desenvolvimento de aplicativos para Web implementadas em Java é
relativamente novo. Novas tecnologias foram e estão sendo lançadas em um período de
tempo bastante curto, o que torna essa área ainda mais interessante, pois propicia um campo
amplo para novos estudos.
A realização do presente trabalho proporcionou um grande aprendizado na área de
desenvolvimento de uma aplicação utilizando ferramentas de código aberto. Entre elas,
Java/Jsp, Struts, Hibernate e JasperReports.
É importante ressaltar que a aplicação desenvolvida vem a facilitar a vida de
professores, maestros alunos e também outras pessoas que pretendam utilizar esse
programa.
Na aplicação desenvolvida, novas funcionalidades podem ser implementadas, ou
aquelas que já foram implementadas, podem ser aprimoradas.
56
Referências Bibliográficas
1. Peinado, Fernando Kasten. Hibernate. Disponível em
<http://www.ime.usp.br/~reverbel/SMA/trabalhos/seminarios/hibernate.pdf>
Acessado em 08 mar 2004.
2. Java. Disponível em <http://java.sun.com/>. Acessado em 08 mar 2004.
3. Sun Microsystems. Java 2 Platform, Enterprise Edition (J2EE).
Disponível em <http://java.sun.com/j2ee/>. Acessado em 05 out 2004.
4. JSP. Disponível em <http://java.sun.com/products/jsp/>. Acessado em 08
mar 2004.
5. Danciu , Teodor. JasperReports. Disponível em
<http://jasperreports.sourceforge.net/>. Acessado em 08 mar 2004.
6. Hibernate. Disponível em <http://www.hibernate.org/>. Acessado em 08
mar 2004.
7. Heudecker, Nick. Introduction to Hibernate. Disponível em
<http://www.systemmobile.com/articles/IntroductionToHibernate.html#How
%20Hibernate%20Works>. Acessado em 08 mar 2004.
8. Chapter 1. Quickstart with Tomcat. Disponível em
<http://www.hibernate.org/hib_docs/reference/en/html/quickstart.html>.
Acessado em 08 mar 2004.
9. Castor, Opening A JDO Database. Disponível em
<http://www.castor.org/jdo.html>. Acessado em 08 mar 2004.
57
10. Jakarta Tomcat: Guia Rápido de Instalação e Configuração. Revista
MundoJava, no. 02, ano1, pp - 07;
11. Alur, Deepak; Crupi, John; Malks,Dan. CORE J2EE PATTERNS AS
MELHORES PRÁTICAS E ESTRATÉGIAS DE DESIGN. Pág.5;
12. Bodoff, Stephanie; Green, Dale; Haase, Kim; Jendrock, Eric; Pawlan,
Monica; Stearns, Beth. TUTORIAL DO J2EE;
13. MySQL AB. Visão Geral do Sistema de Gerenciamento de Banco de
Dados MySQL. Disponível em <http://dev.mysql.com/doc/mysql/pt/What-
is.html>. Acessado em 08 mar 2004.
14. Google. Disponível em <http://www.google.com.br/>. Acessado em 08 mar
2004.
15. Agrorede. Disponível em <http://www.agrorede.org.br>. Acessado em 08
mar 2004.
16. Struts. Disponível em <http://struts.apache.org>. Acessado em 16 out 2004.
17. Model 2. Disponível em <http://www.javaworld.com/javaworld/jw-12-
1999/jw-12-ssj-jspmvc.html>. Acessado em 16 out 2004.
58
Apêndice – A: Artigo
Uma Aplicação para WEB de Apoio ao Gerenciamento de Grupos de Canto Coral Baseado em Tecnologias de Código
Aberto
Marcelo de Andrade Machado
Curso de Bacharelado em Ciências da Computação Departamento de Informática e Estatística
Universidade Federal de Santa Catarina (UFSC), Brasil, 88040-900 Fone (0XX48)333-9999, Fax (0XX48)333-9999
RESUMO
Desenvolve uma aplicação WEB que realiza o gerenciamento de alunos em grupos de canto, além de gerar relatórios dos alunos matriculados nesses grupos. São utilizadas tecnologias de código aberto construídas em Java com exceção do banco de dados. As ferramentas utilizadas para desenvolver essa aplicação foram: Java, JSP, JasperReports, MySQL, Hibernate e Struts. As funcionalidades que a aplicação deve satisfazer foram informadas por um cliente, pessoa ao qual o programa é destinado. Os resultados obtidos são de grande valia tanto para os usuários do sistema como para o desenvolvedor. Grandes conhecimentos foram adquiridos na pesquisa e na implementação das tecnologias, elas facilitam muito o trabalho e deixam mais simples a forma de programar.
59
Introdução
Na década de 90, a Internet atraiu a atenção de todos, com a promessa de sistemas revolucionários, de acesso e processamento de informações de qualquer lugar do planeta. Vários sistemas passaram a ser desenvolvidos em plataformas distribuídas e de código aberto, usufruindo das vantagens da velocidade, segurança e confiabilidade.
Ao longo dos anos, o processo de desenvolvimento de sistemas tem mudado, elevando significativamente a maturidade desta área. Novas tecnologias surgiram para reduzir os custos e acelerar o desenvolvimento, dentre elas a Java 2 Plataform, Enterprise Edition (J2EE) (Sun, 2004), que oferece um modelo de aplicação distribuída em multicamada baseada em componentes.
Para se construir uma aplicação WEB existe uma série de ferramentas que podem ser utilizadas. A escolha é baseada nos benefícios que cada uma pode trazer para o projeto e se o “custo-benefício” vale a pena.
O cadastro de cantores nos grupos de canto ainda é feito a mão através de uma ficha de inscrição. Além disso, surgiu a necessidade de emitir relatórios de alunos matriculados. Com o intuito de facilitar a vida das pessoas e agilizar seu trabalho foi pensado em uma aplicação WEB de apoio ao gerenciamento de grupos de Canto Coral. Não foi possível encontrar nenhuma aplicação que correspondesse exatamente ao problema proposto. O site de busca utilizado foi o Google.
Porém existem algumas ferramentas que, se utilizados em conjunto, podem ajudar a resolvê-lo.
Uma Aplicação para WEB de Apoio ao Gerenciamento de Grupos de Canto Coral.
Esse projeto pretende resolver
basicamente 2 problemas. 3. Para se cadastrar num grupo
Coral, o Cantor tem que preencher uma ficha e entrega-la a pessoa responsável. Esse sistema não possui uma forma muito prática de cadastramento, pelo fato dele ser feito a mão através de uma ficha de inscrição.
4. Muitas vezes é preciso fornecer listagens impressas com apenas algumas informações dos membros. Por exemplo: num dia é necessário gerar uma listagem onde apareça apenas nome, RG e número do passaporte dos integrantes. Noutro dia é preciso gerar outra listagem com nome, RG e curso (caso ele esteja ingressado em uma faculdade). Ás vezes a lista deve estar em ordem alfabética pelos nomes, outras vezes deve estar em ordem alfabética pelo curso, etc.
Solução
Uma aplicação para a WEB seria de grande ajuda e apoio a todos os participantes do grupo Coral e também àqueles que pretendem ingressar no grupo. O maestro, pessoa que realiza o cadastro dos membros, encontraria nessa aplicação um ambiente favorável para a administração dos mesmos, ganhando assim tempo para realizar atividades mais importantes.
60
A solução para os problemas propostos segue respectivamente:
3. O cadastro de uma pessoa será realizado via.
4. Os relatórios com informações dos membros também será obtida via Internet.
Para o armazenamento dos dados da pessoa(nome, endereço, curso, etc) será utilizado um banco de dados que possa ser facilmente adaptado, ou seja, a medida que haja necessidade de inserir novos registros, é possível definir novas tabelas (ou também excluí-las) sem ter que mudar toda a base de dados nem a aplicação.
Objetivo Geral Desenvolver uma aplicação WEB de apoio ao gerenciamento de grupos de canto coral utilizando tecnologias de código aberto.
Objetivos Específicos Estudar o funcionamento das tecnologias Java, em especial Struts, JasperReports e Hibernate. Desenvolver uma aplicação que facilite o trabalho das pessoas.
Sobre a Solução
A fim de solucionar o problema acima mencionado, será desenvolvida uma aplicação cujo principal intuito é de facilitar o trabalho das pessoas que fazem parte do grupo de canto Coral. Para resolver o problema do cadastro de pessoas será construído, portanto um sistema gerenciador de cadastros. Essa aplicação funcionará da seguinte forma: um cantor se cadastra via WEB no sistema. Nesse cadastro, além dos campos regulares, também haverá um campo de login e um de senha. Para garantir que o login seja único, ele será o e-mail da pessoa. Isso garante que o cantor que se cadastrou é o mesmo que possui o e-mail. Caso o indivíduo não possua endereço de e-mail, ele não poderá mudar seus dados cadastrais pessoalmente, pois as informações contidas nesses dois campos serão utilizadas para validar o usuário no sistema. Uma vez cadastrado, o cantor pode acessar o sistema informando seu login e sua senha. Dentro do sistema, é possível mudar seus dados cadastrais bem como sua senha e se excluir do grupo. Caso a pessoa seja um professor, ela acessará uma tela diferente onde apenas digitará seu nome, e-mail (que servirá como login) e senha. Após isso, receberá um e-mail para confirmar sua inscrição que, depois de confirmado, poderá acessar automaticamente o sistema sem necessidade de autorização do administrador. Lá dentro, ele poderá visualizar a ficha de todos os integrantes.
A ferramenta que será utilizada para o desenvolvimento dessa aplicação será o JSP.
Para resolver o problema de emissão de relatórios, optou-se pela utilização de um software desenvolvido também em JAVA, o JasperReports. Ele será utilizada da seguinte forma: haverá uma página dentro do sistema em que o
61
usuário selecionará os atributos que o relatório irá apresentar. Por exemplo: o usuário informa que será um relatório de integrantes, depois informa quais atributos desse integrantes (nome, sexo, endereço) deverão ser apresentados e, para cada um, se existe alguma restrição. Caso ele deseje por exemplo selecionar apenas aquelas pessoas cujo nome comece com a letra A ou aquelas que se cadastraram no mês de Abril, etc.
O Banco de Dados utilizado será o MySQL e, para fazer a persistência dos dados, será utilizado o Hibernate.
Ferramentas Utilizadas
As ferramentas utilizadas para desenvolver essa aplicação são todas gratuitas. São elas: JSP, JasperReports, MySQL, Hibernate, Struts e Microsoft Visio.
Conclusão
A Internet vem crescendo cada vez mais e a cada dia novas páginas são anexadas a esse mundo. O desenvolvimento de aplicativos para Web implementadas em Java é relativamente novo. Novas tecnologias foram e estão sendo lançadas em um período de tempo bastante curto, o que torna essa área ainda mais interessante, pois propicia um campo amplo para novos estudos.
A realização do presente trabalho proporcionou um grande aprendizado na área de desenvolvimento de uma aplicação utilizando ferramentas de
código aberto. Entre elas, Java/Jsp, Struts, Hibernate e JasperReports.
É importante ressaltar que a aplicação desenvolvida vem a facilitar a vida de professores, maestros alunos e também outras pessoas que pretendam utilizar esse programa.
Referências Bibliográficas
[1] Java. Disponível em <http://java.sun.com/>. Acessado em 08 mar 2004. [2] Sun Microsystems. Java 2 Platform, Enterprise Edition (J2EE). Disponível em <http://java.sun.com/j2ee/>. Acessado em 05 out 2004. [3] JSP. Disponível em <http://java.sun.com/products/jsp/>. Acessado em 08 mar 2004. [4] Danciu , Teodor. JasperReports. Disponível em <http://jasperreports.sourceforge.net/>. Acessado em 08 mar 2004. [5] Alur, Deepak; Crupi, John; Malks,Dan. CORE J2EE PATTERNS AS MELHORES PRÁTICAS E ESTRATÉGIAS DE DESIGN. Pág.5; [6] Bodoff, Stephanie; Green, Dale; Haase, Kim; Jendrock, Eric; Pawlan, Monica; Stearns, Beth. TUTORIAL DO J2EE;
Apêndice – B: Código Fonte Classe BaseDAO.java: package banco; import java.sql.SQLException; import java.util.ArrayList; import java.util.List; import net.sf.hibernate.Hibernate; import net.sf.hibernate.HibernateException; import net.sf.hibernate.Session; import util.Principal; public abstract class BaseDAO { /** Removes the object from the database with with specified class type and <code>id</code>. @param c the class type to remove @param id the id of the class type @throws DAOException */ protected void removeObj(Class c, Integer id) throws DAOException { try { Session session = HibernateSession.currentSession(); Object obj = session.load(c, id); session.delete(obj); session.flush(); session.connection().commit(); } catch (Exception e) { rollback(); throw new DAOException(e); } finally { closeSession(); } } /** Retrieves and <code>Object</code> of the class type specified by <code>c</code>, and having the given <code>id</code>. @param c the class to load @param id @return Object may be null if object with ID doesn't exist @throws DAOException */
63
protected Object retrieveObj(Class c, Integer id) throws DAOException { Object obj = null; try { Session session = HibernateSession.currentSession(); obj = session.load(c, id); } catch (HibernateException he) { he.printStackTrace(); throw new DAOException(he); } finally { closeSession(); } return obj; } /** Retrieves an <code>Object</code> from the database. @param key the key used to lookup the query in the resource bundle @param value the value that is inserted into the query. May be null if the desired query does not take a parameter. @return Object @throws DAOException */ protected Object retrieveObj(String key, String value) throws DAOException { List objects = retrieveObjs(key, value); if (objects != null) { if (objects.size() == 0) { return null; } else { return objects.get(0); } } else { return null; } } /** Retrieves a <code>List</code> of <code>Object</code>s from the database. @param key the key used to lookup the query in the resource bundle @param value the value that is inserted into the query. May be null if the desired query does not take a parameter. @return List will be null if no objects are retrieved @throws DAOException */ protected List retrieveObjs(String key, String value) throws DAOException { List results = null;
64
try { Session session = HibernateSession.currentSession(); if (value != null) { results = (List)session.find(getQuery(key), value, Hibernate.STRING); } else { results = (List)session.find(getQuery(key)); } } catch (HibernateException he) { he.printStackTrace(); throw new DAOException(he); } finally { closeSession(); } return results; } public List findByEmail(String email) throws HibernateException { List pessoas = new ArrayList(); Session sessao = null; try { sessao = HibernateSession.currentSession(); pessoas = sessao.find(HQL.SELECT_PESSOAS_POR_EMAIL, email, Hibernate.STRING); } catch (HibernateException e) { throw new HibernateException(e); } catch (DAOException e1) { // TODO Auto-generated catch block e1.printStackTrace(); } finally { } return pessoas; } public List findAll(String hql) throws HibernateException { List objetos = new ArrayList(); Session sessao = null; try { sessao = HibernateSession.currentSession(); objetos = sessao.find(hql); } catch (HibernateException e) { throw new HibernateException(e); } catch (DAOException e1) { // TODO Auto-generated catch block e1.printStackTrace(); } finally { } return objetos; } public List findByString(String hql, String param) throws HibernateException { List objetos = new ArrayList();
65
Session sessao = null; try { sessao = HibernateSession.currentSession(); objetos = sessao.find(hql, param, Hibernate.STRING); } catch (HibernateException e) { throw new HibernateException(e); } catch (DAOException e1) { // TODO Auto-generated catch block e1.printStackTrace(); } finally { } return objetos; } public Object findById(String hql, Integer id) throws HibernateException { List objetoList = new ArrayList(); Object objeto = new Object(); Session sessao = null; try { sessao = HibernateSession.currentSession(); objetoList = (List)sessao.find(hql, id.toString(), Hibernate.STRING); objeto = objetoList.get(0); } catch (HibernateException e) { throw new HibernateException(e); } catch (DAOException e1) { e1.printStackTrace(); } finally { } return objeto; } /** Stores <code>obj</code>, making it persistent. @param obj @throws DAOException */ protected void storeObj(Object obj) throws DAOException { try { Session session = HibernateSession.currentSession(); session.saveOrUpdate(obj); session.flush(); session.connection().commit(); } catch (HibernateException he) { rollback(); throw new DAOException(he); } catch (SQLException sqle) { rollback(); throw new DAOException(sqle); } finally { closeSession(); } }
66
/** Closes the current session. */ protected void closeSession() { try { HibernateSession.closeSession(); } catch (DAOException de) { System.err.println(de.getMessage()); } } /** Performs a rollback on the current session. Exceptions are logged. @throws DAOException if the current session can't be retrieved or an exception is thrown while performing the rollback. */ protected void rollback() throws DAOException { try { Session session = HibernateSession.currentSession(); if (session != null) { session.connection().rollback(); } } catch (HibernateException he) { throw new DAOException(he); } catch (SQLException sqle) { throw new DAOException(sqle); } } /** Retrieves the HQL query from the resource bundle. @param key the HQL query to lookup */ protected String getQuery(String key) { return Principal.getQuery(key); } } Classe DAOAdministrador.Java: package banco; import java.util.List; import coral.Administrador; /** * @author Marcelo * @hibernate.class table="pessoa" dynamic-update="true"
67
*/ public class DAOAdministrador extends BaseDAO { public Administrador saveAdministrador(Administrador p) throws DAOException { storeObj(p); return (Administrador) retrieveObj(Administrador.class, p.getIdAdministrador()); } public Administrador getAdministrador(Integer id) throws DAOException { return (Administrador) retrieveObj(Administrador.class, id); } public void removeAdministrador(Administrador p) throws DAOException { removeAdministrador(p.getIdAdministrador()); } public void removeAdministrador(Integer id) throws DAOException { removeObj(Administrador.class, id); } /** Returns a list of <code>Administrador</code>s using the query specified by the <code>query</code> key. @param query the query key @param value the value to put into the query statement. May be null @return List @throws DAOException */ public List searchAdministradores(String query, String value) throws DAOException { return retrieveObjs(query, value); } }
Classe DAOCantor.Java: package banco; import java.util.List; import net.sf.hibernate.HibernateException; import coral.Cantor;
68
/** * @author Marcelo * @hibernate.class table="pessoa" dynamic-update="true" */ public class DAOCantor extends BaseDAO { public Cantor saveCantor(Cantor p) throws DAOException { storeObj(p); return (Cantor)retrieveObj(Cantor.class, p.getIdCantor()); } public Cantor findById(Integer id) throws DAOException, HibernateException { return (Cantor)findById(HQL.SELECT_CANTOR_POR_ID, id); } public Cantor findByIdPessoa(Integer id) throws DAOException, HibernateException { return (Cantor)findById(HQL.SELECT_CANTOR_POR_ID_PESSOA, id); } public Cantor getCantor(Integer id) throws DAOException { return (Cantor)retrieveObj(Cantor.class, id); } public void removeCantor(Cantor p) throws DAOException { removeCantor(p.getIdCantor()); } public void removeCantor(Integer id) throws DAOException { removeObj(Cantor.class, id); } public List findAllCantores() throws DAOException, HibernateException { return findAll(HQL.SELECT_ALL_CANTORES); } /** Returns a list of <code>Cantor</code>s using the query specified by the <code>query</code> key. @param query the query key @param value the value to put into the query statement. May be null @return List @throws DAOException */ public List searchCantors(String query, String value) throws DAOException { return retrieveObjs(query, value); } }
69
Classe DAOEndereco.java: package banco; import java.util.List; import net.sf.hibernate.HibernateException; import coral.Endereco; /** * @author Marcelo * @hibernate.class table="pessoa" dynamic-update="true" */ public class DAOEndereco extends BaseDAO { public Endereco saveEndereco(Endereco p) throws DAOException { storeObj(p); return (Endereco)retrieveObj(Endereco.class, p.getIdEndereco()); } public Endereco getEndereco(Integer id) throws DAOException { return (Endereco)retrieveObj(Endereco.class, id); } public Endereco findById(Integer id) throws DAOException, HibernateException { return (Endereco)findById(HQL.SELECT_ENDERECO_POR_ID, id); } public void removeEndereco(Endereco p) throws DAOException { removeEndereco(p.getIdEndereco()); } public void removeEndereco(Integer id) throws DAOException { removeObj(Endereco.class, id); } /** Returns a list of <code>Endereco</code>s using the query specified by the <code>query</code> key. @param query the query key @param value the value to put into the query statement. May be null @return List @throws DAOException */ public List searchEnderecos(String query, String value) throws DAOException { return retrieveObjs(query, value); }
70
} Classe DAOException.Java: package banco; import java.io.PrintStream; public class DAOException extends Exception { public DAOException() { super(); } public DAOException(String message) { super(message); } public DAOException(Exception e) { this(e, e.getMessage()); } public DAOException(Exception e, String message) { super(message); this.exception = e; } public DAOException(Exception e, String message, boolean fatal) { this(e, message); setFatal(fatal); } public boolean isFatal() { return this.fatal; } public void setFatal(boolean fatal) { this.fatal = fatal; } public void printStackTrace() { super.printStackTrace(); if (this.exception != null) { System.out.print("%%%% wrapped exception: "); this.exception.printStackTrace(); } } public void printStackTrace(PrintStream printStream) { super.printStackTrace(printStream); if (this.exception != null) { System.out.print("%%%% wrapped exception: "); this.exception.printStackTrace(printStream);
71
} } public String toString() { if (exception != null) { return super.toString()+" wraps: ["+exception.toString()+"]"; } else { return super.toString(); } } protected Exception exception; protected boolean fatal; }
Classe DAOGrupo.java: package banco; import java.util.List; import net.sf.hibernate.HibernateException; import coral.Grupo; /** * @author Marcelo * @hibernate.class table="pessoa" dynamic-update="true" */ public class DAOGrupo extends BaseDAO { public Grupo saveGrupo(Grupo p) throws DAOException { storeObj(p); return (Grupo)retrieveObj(Grupo.class, p.getIdGrupo()); } public Grupo getGrupo(Integer id) throws DAOException { return (Grupo)retrieveObj(Grupo.class, id); } public Grupo findById(Integer id) throws DAOException, HibernateException { return (Grupo)findById(HQL.SELECT_GRUPO_POR_ID, id); } public void removeGrupo(Grupo p) throws DAOException { removeGrupo(p.getIdGrupo()); } public void removeGrupo(Integer id) throws DAOException { removeObj(Grupo.class, id);
72
} /** Returns a list of <code>Grupo</code>s using the query specified by the <code>query</code> key. @param query the query key @param value the value to put into the query statement. May be null @return List @throws DAOException */ public List searchGrupos(String query, String value) throws DAOException { return retrieveObjs(query, value); } public List findAllGrupos() throws DAOException, HibernateException { return findAll(HQL.SELECT_ALL_GRUPOS); } } Classe DAOIdiomas.java: package banco; import java.util.List; import net.sf.hibernate.HibernateException; import coral.Idiomas; /** * @author Marcelo * @hibernate.class table="pessoa" dynamic-update="true" */ public class DAOIdiomas extends BaseDAO { public Idiomas saveIdiomas(Idiomas p) throws DAOException { storeObj(p); return (Idiomas)retrieveObj(Idiomas.class, p.getIdIdioma()); } public Idiomas getIdiomas(Integer id) throws DAOException { return (Idiomas)retrieveObj(Idiomas.class, id); } public void removeIdiomas(Idiomas p) throws DAOException { removeIdiomas(p.getIdIdioma()); } public void removeIdiomas(Integer id) throws DAOException {
73
removeObj(Idiomas.class, id); } public List findByString(Integer id) throws HibernateException { return findByString(HQL.SELECT_IDIOMAS_POR_ID_CANTOR, id.toString()); } /** Returns a list of <code>Idiomas</code>s using the query specified by the <code>query</code> key. @param query the query key @param value the value to put into the query statement. May be null @return List @throws DAOException */ public List searchIdiomas(String query, String value) throws DAOException { return retrieveObjs(query, value); } } Classe DAOMaestro.java: package banco; import java.util.List; import coral.Maestro; /** * @author Marcelo * @hibernate.class table="pessoa" dynamic-update="true" */ public class DAOMaestro extends BaseDAO { public Maestro saveMaestro(Maestro p) throws DAOException { storeObj(p); return (Maestro) retrieveObj(Maestro.class, p.getIdMaestro()); } public Maestro getMaestro(Integer id) throws DAOException { return (Maestro) retrieveObj(Maestro.class, id); } public void removeMaestro(Maestro p) throws DAOException { removeMaestro(p.getIdMaestro()); }
74
public void removeMaestro(Integer id) throws DAOException { removeObj(Maestro.class, id); } /** Returns a list of <code>Maestro</code>s using the query specified by the <code>query</code> key. @param query the query key @param value the value to put into the query statement. May be null @return List @throws DAOException */ public List searchMaestros(String query, String value) throws DAOException { return retrieveObjs(query, value); } }
Classe DAOPessoa.java: package banco; import java.util.List; import net.sf.hibernate.HibernateException; import coral.Pessoa; /** * @author Marcelo * @hibernate.class table="pessoa" dynamic-update="true" */ public class DAOPessoa extends BaseDAO { public Pessoa savePessoa(Pessoa p) throws DAOException { storeObj(p); return (Pessoa)retrieveObj(Pessoa.class, p.getIdPessoa()); } public Pessoa findById(Integer id) throws DAOException, HibernateException { return (Pessoa)findById(HQL.SELECT_PESSOA_POR_ID, id); } public Pessoa getPessoa(Integer id) throws DAOException { return (Pessoa)retrieveObj(Pessoa.class, id); }
75
public void removePessoa(Pessoa p) throws DAOException { removePessoa(p.getIdPessoa()); } public void removePessoa(Integer id) throws DAOException { removeObj(Pessoa.class, id); } public List findAllPessoas(String tipoPessoa) throws DAOException, HibernateException { return findByString(HQL.SELECT_ALL_PESSOAS, tipoPessoa); } /** Returns a list of <code>Pessoa</code>s using the query specified by the <code>query</code> key. @param query the query key @param value the value to put into the query statement. May be null @return List @throws DAOException */ public List searchPessoas(String query, String value) throws DAOException { return retrieveObjs(query, value); } public List findByEmail(String email) throws HibernateException { return super.findByEmail(email); } } Classe DAOProfessor.java: package banco; import java.util.List; import coral.Professor; /** * @author Marcelo * @hibernate.class table="pessoa" dynamic-update="true" */ public class DAOProfessor extends BaseDAO { public Professor saveProfessor(Professor p) throws DAOException { storeObj(p); return (Professor) retrieveObj(Professor.class, p.getIdProfessor());
76
} public Professor getProfessor(Integer id) throws DAOException { return (Professor) retrieveObj(Professor.class, id); } public void removeProfessor(Professor p) throws DAOException { removeProfessor(p.getIdProfessor()); } public void removeProfessor(Integer id) throws DAOException { removeObj(Professor.class, id); } /** Returns a list of <code>Professor</code>s using the query specified by the <code>query</code> key. @param query the query key @param value the value to put into the query statement. May be null @return List @throws DAOException */ public List searchProfessors(String query, String value) throws DAOException { return retrieveObjs(query, value); } } Classe HibernateSession.java: package banco; import net.sf.hibernate.HibernateException; import net.sf.hibernate.MappingException; import net.sf.hibernate.Session; import net.sf.hibernate.SessionFactory; import net.sf.hibernate.cfg.Configuration; import coral.Administrador; import coral.Cantor; import coral.Endereco; import coral.Grupo; import coral.Idiomas; import coral.Maestro; import coral.Professor;
77
public class HibernateSession { public static final ThreadLocal session = new ThreadLocal(); private static final Configuration cfg = new Configuration(); private static SessionFactory sf; /** Returns the ThreadLocal Session instance. This method will initialize the <code>SessionFactory</code> if necessary. @return Session @throws DAOException */ public static Session currentSession() throws DAOException { Session s = (Session)session.get(); try { if (s == null) { if (sf == null) { try { // loadClasses(); sf = cfg.configure().buildSessionFactory(); } catch (Exception e) { System.err.println("%%%% Error Creating SessionFactory %%%%"); e.printStackTrace(); } } s = sf.openSession(); session.set(s); } } catch (HibernateException he) { throw new DAOException(he); } return s; } /** Closes the session object. @throws DAOException */ public static void closeSession() throws DAOException { Session s = (Session)session.get(); session.set(null); if (s != null) { try { s.close(); } catch (HibernateException he) { throw new DAOException(he); } } }
78
/** Loads the mapping documents for the persistent classes. @throws DAOException if there is a problem with the mapping docs */ private static void loadClasses() throws DAOException { Class[] classes = new Class[] { Administrador.class, Cantor.class, Endereco.class, Grupo.class, Idiomas.class, Maestro.class, Professor.class }; for (int i = 0; i < classes.length; i++) { try { cfg.addClass(classes[i]); } catch (MappingException me) { throw new DAOException(me); } } } }
Classe HQL.java: package banco; public interface HQL { // retorna todos os objetos da classe Noticia final String SELECT_TODAS_PESSOAS = "from Pessoa"; // retorna todas as Pessoas que possuem a palavra chave final String SELECT_PESSOAS_POR_EMAIL = "from Pessoa n where n.email = ?"; // retorna o ENDERECO pelo id final String SELECT_ENDERECO_POR_ID = "from Endereco n where n.idEndereco = ?"; // retorna o Cantor pelo id final String SELECT_CANTOR_POR_ID = "from Cantor n where n.idCantor = ?"; // retorna o Cantor pelo id final String SELECT_CANTOR_POR_ID_PESSOA = "from Cantor n where n.idPessoa = ?"; // retorna a Pessoa pelo id final String SELECT_PESSOA_POR_ID = "from Pessoa n where n.idPessoa = ?"; // retorna a Grupo pelo id Cantor final String SELECT_GRUPO_POR_ID = "from Grupo n where n.idGrupo = ?";
79
// retorna todas as Pessoas que possuem a palavra chave final String SELECT_IDIOMAS_POR_ID_CANTOR = "from Idiomas n where n.idCantor = ?"; // retorna todos os grupos final String SELECT_ALL_GRUPOS = "from Grupo"; // retorna todos os cantores final String SELECT_ALL_CANTORES = "from Cantor"; // retorna todos os cantores final String SELECT_ALL_PESSOAS = "from Pessoa n where n.tipoPessoa = ?"; }
Classe AlteraSenhaAction.java: /* * Created on 03/08/2004 * * TODO To change the template for this generated file go to * Window - Preferences - Java - Code Style - Code Templates */ package cadastro; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.apache.struts.action.Action; import org.apache.struts.action.ActionForm; import org.apache.struts.action.ActionForward; import org.apache.struts.action.*; import coral.Pessoa; import util.*; /** * @author Marcelo * * TODO To change the template for this generated type comment go to * Window - Preferences - Java - Code Style - Code Templates */ public class AlteraSenhaAction extends Action { public ActionForward execute(ActionMapping mapping, ActionForm actionForm, HttpServletRequest request, HttpServletResponse response) { Pessoa pessoa; if (request.getSession().getAttribute("pessoaAutenticada") != null) { System.out.println("Pessoa foi autenticada"); AlteraSenhaActionForm form = (AlteraSenhaActionForm)actionForm; pessoa = (Pessoa)request.getSession().getAttribute("pessoaAutenticada");
80
System.out.println("senhanova: "+form.getValue("senhaNova")); pessoa.setSenha((String)form.getValue("senhaNova")); pessoa = Principal.salvaPessoa(pessoa); request.getSession().setAttribute("pessoaAutenticada", pessoa); return mapping.findForward("senhaAlterada"); } return mapping.findForward("paginaErro"); } }
Classe AlteraSenhaActionForm.java: /* * Created on 06/08/2004 * * TODO To change the template for this generated file go to * Window - Preferences - Java - Code Style - Code Templates */ package cadastro; import java.util.HashMap; import java.util.Map; import javax.servlet.http.HttpServletRequest; import org.apache.struts.action.ActionErrors; import org.apache.struts.action.ActionForm; import org.apache.struts.action.ActionMapping; /** * @author Marcelo * * TODO To change the template for this generated type comment go to * Window - Preferences - Java - Code Style - Code Templates */ public class AlteraSenhaActionForm extends ActionForm { private final Map values = new HashMap(); public ActionErrors validate(ActionMapping mapping, HttpServletRequest request) { return null; } public void setValue(String key, Object value) { values.put(key, value); } public Object getValue(String key) { return values.get(key); }
81
public HashMap getDadosForm() { HashMap dadosForm = new HashMap(); dadosForm.put("senhaAntiga", getValue("senhaAntiga")); dadosForm.put("senhaNova", getValue("senhaNova")); dadosForm.put("senhaConfirmacao", getValue("senhaConfirmacao")); return dadosForm; } }
Classe AtualizaDadosAction.java: /* * Created on 03/08/2004 * * TODO To change the template for this generated file go to * Window - Preferences - Java - Code Style - Code Templates */ package cadastro; import java.util.Date; import java.util.HashMap; import java.util.Iterator; import java.util.List; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.apache.struts.action.Action; import org.apache.struts.action.ActionForm; import org.apache.struts.action.ActionForward; import org.apache.struts.action.ActionMapping; import util.Principal; import banco.DAOEndereco; import banco.DAOException; import banco.DAOIdiomas; import coral.Cantor; import coral.Endereco; import coral.Idiomas; import coral.Pessoa; /** * @author Marcelo * * TODO To change the template for this generated type comment go to * Window - Preferences - Java - Code Style - Code Templates */ public class AtualizaDadosAction extends Action { HashMap pessoaAtualizada; HashMap tabelas;
82
public ActionForward execute(ActionMapping mapping, ActionForm actionForm, HttpServletRequest request, HttpServletResponse response) { Pessoa pessoa; AtualizaDadosActionForm form = (AtualizaDadosActionForm)actionForm; if (form.getValue("atualizar") != null) { return executeAtualizarDados(mapping, actionForm, request); } else if (request.getSession().getAttribute("pessoaAutenticada") != null) { System.out.println("Pessoa foi autenticada"); pessoa = (Pessoa)request.getSession().getAttribute("pessoaAutenticada"); tabelas = form.setDadosForm(pessoa); request.getSession().setAttribute("tabelas", tabelas); return mapping.findForward("atualizaDados"); } return mapping.findForward("paginaErro"); } public ActionForward executeAtualizarDados(ActionMapping mapping, ActionForm actionForm, HttpServletRequest request) { //System.out.println("email: "+pessoa.getEmail()); setDadosForm(actionForm, (Pessoa)request.getSession().getAttribute("pessoaAutenticada"), request); // Principal.AtualizaPessoa(pessoa, getServlet()); return mapping.findForward("dadosAlterados"); } private void setDadosForm(ActionForm actionForm, Pessoa pessoa, HttpServletRequest request) { System.out.println("setDadosForm"); AtualizaDadosActionForm form = (AtualizaDadosActionForm)actionForm; HashMap dadosForm = form.getDadosForm(); pessoa.setNome(dadosForm.get("nome").toString()); pessoa.setDataNascimento((Date)dadosForm.get("dataNascimento")); pessoa.setNaturalidade(dadosForm.get("naturalidade").toString()); pessoa.setRg(dadosForm.get("rg").toString()); pessoa.setEstadoCivil(dadosForm.get("estadoCivil").toString()); pessoa.setOrgaoExpedidor(dadosForm.get("orgaoExpedidor").toString()); pessoa.setDataEmissao((Date)dadosForm.get("dataEmissao")); pessoa.setCpf(dadosForm.get("cpf").toString()); pessoa.setPassaporte(dadosForm.get("passaporte").toString()); pessoa.setDataAtualizacao(Principal.getDataHoje()); //ENDERECO DAOEndereco daoEndereco = new DAOEndereco();
83
System.out.println("Pegando Endereco"); tabelas = (HashMap)request.getSession().getAttribute("tabelas"); Endereco endereco = (Endereco)tabelas.get("endereco"); endereco.setRua(dadosForm.get("rua").toString()); endereco.setBairro(dadosForm.get("bairro").toString()); endereco.setCep(dadosForm.get("cep").toString()); if (!dadosForm.get("numero").equals("")) endereco.setNumero(new Long(dadosForm.get("numero").toString())); endereco.setCidade(dadosForm.get("cidade").toString()); endereco.setEstado(dadosForm.get("estado").toString()); if (!dadosForm.get("telResidencial").equals("")) endereco.setTelResidencial(new Long(dadosForm.get("telResidencial").toString())); if (!dadosForm.get("telComercial").equals("")) endereco.setTelComercial(new Long(dadosForm.get("telComercial").toString())); endereco.setTelOutros(dadosForm.get("telOutros").toString()); if (!pessoa.getTipoPessoa().equals("cantor")) { pessoaAtualizada = new HashMap(); pessoaAtualizada.put("pessoa", pessoa); pessoaAtualizada.put("endereco", endereco); Principal.salvaPessoaEEndereco(pessoaAtualizada); } else { //CANTOR Cantor cantor = (Cantor)tabelas.get("cantor"); cantor.setNaipe((String)dadosForm.get("naipe")); cantor.setCantandoNo(dadosForm.get("cantandoNo").toString()); /*****************PARTE 2********************/ cantor.setEmpresaQueTrabalha(dadosForm.get("empresaQueTrabalha").toString()); cantor.setNomeArtistico(dadosForm.get("nomeArtistico").toString()); cantor.setPlacaCarro(dadosForm.get("placaCarro").toString()); cantor.setModeloCarro(dadosForm.get("modeloCarro").toString()); cantor.setCorCarro(dadosForm.get("corCarro").toString()); System.out.println("grauInstrucao " + dadosForm.get("grauInstrucao")); cantor.setGrauInstrucao(dadosForm.get("grauInstrucao").toString()); if (dadosForm.get("cursoFeevale").toString().equals("")) { cantor.setCurso(dadosForm.get("cursoOutraInst").toString()); cantor.setSemestre(dadosForm.get("semestreFeevale").toString());
84
} else { cantor.setCurso(dadosForm.get("cursoFeevale").toString()); cantor.setSemestre(dadosForm.get("semestreOutraInst").toString()); cantor.setInstituicao(dadosForm.get("instituicao").toString()); } /*****************PARTE 3********************/ cantor.setTextCantaAtualmente(dadosForm.get("textCantaAtualmente").toString()); cantor.setTextJaCantou(dadosForm.get("textJaCantou").toString()); cantor.setTextInstrumentosMusicais(dadosForm.get("textInstrumentosMusicais").toString()); pessoaAtualizada = new HashMap(); pessoaAtualizada.put("pessoa", pessoa); pessoaAtualizada.put("endereco", endereco); pessoaAtualizada.put("cantor", cantor); Integer idCantor = Principal.salvaDadosCantor(pessoaAtualizada); //for (int i = 1 i < 5; i++) List idiomas = (List)tabelas.get("idiomas"); Iterator iterator = idiomas.iterator(); try { if (!dadosForm.get("idioma1").equals("")) { Idiomas idioma; if (iterator.hasNext()) { idioma = (Idiomas)iterator.next(); } else { idioma = new Idiomas(); idioma.setIdCantor(idCantor); } idioma.setNome(dadosForm.get("idioma1").toString()); idioma.setConhecimento(dadosForm.get("idioma1Radio").toString()); Principal.salvaIdioma(idioma); if (!dadosForm.get("idioma2").equals("")) { if (iterator.hasNext()) { idioma = (Idiomas)iterator.next(); } else { idioma = new Idiomas(); idioma.setIdCantor(idCantor); } idioma.setNome(dadosForm.get("idioma2").toString()); idioma.setConhecimento(dadosForm.get("idioma2Radio").toString()); Principal.salvaIdioma(idioma); } else { if (iterator.hasNext()) {
85
idioma = (Idiomas)iterator.next(); DAOIdiomas daoIdiomas = new DAOIdiomas(); daoIdiomas.removeIdiomas(idioma); } } if (!dadosForm.get("idioma3").equals("")) { if (iterator.hasNext()) { idioma = (Idiomas)iterator.next(); } else { idioma = new Idiomas(); idioma.setIdCantor(idCantor); } idioma.setNome(dadosForm.get("idioma3").toString()); idioma.setConhecimento(dadosForm.get("idioma3Radio").toString()); Principal.salvaIdioma(idioma); } else { if (iterator.hasNext()) { idioma = (Idiomas)iterator.next(); DAOIdiomas daoIdiomas = new DAOIdiomas(); daoIdiomas.removeIdiomas(idioma); } } if (!dadosForm.get("idioma4").equals("")) { if (iterator.hasNext()) { idioma = (Idiomas)iterator.next(); } else { idioma = new Idiomas(); idioma.setIdCantor(idCantor); } idioma.setNome(dadosForm.get("idioma4").toString()); idioma.setConhecimento(dadosForm.get("idioma4Radio").toString()); Principal.salvaIdioma(idioma); } else { if (iterator.hasNext()) { idioma = (Idiomas)iterator.next(); DAOIdiomas daoIdiomas = new DAOIdiomas(); daoIdiomas.removeIdiomas(idioma); } } if (!dadosForm.get("idioma5").equals("")) { if (iterator.hasNext()) {
86
idioma = (Idiomas)iterator.next(); } else { idioma = new Idiomas(); idioma.setIdCantor(idCantor); } idioma.setNome(dadosForm.get("idioma5").toString()); idioma.setConhecimento(dadosForm.get("idioma5Radio").toString()); Principal.salvaIdioma(idioma); } else { if (iterator.hasNext()) { idioma = (Idiomas)iterator.next(); DAOIdiomas daoIdiomas = new DAOIdiomas(); daoIdiomas.removeIdiomas(idioma); } } } else { if (iterator.hasNext()) { Idiomas idioma = (Idiomas)iterator.next(); DAOIdiomas daoIdiomas = new DAOIdiomas(); daoIdiomas.removeIdiomas(idioma); } } } catch (DAOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } } }
Classe AtualizaDadosActionForm.java: /* * Created on 06/08/2004 * * TODO To change the template for this generated file go to * Window - Preferences - Java - Code Style - Code Templates */ package cadastro; import java.util.Date; import java.util.HashMap; import java.util.Iterator; import java.util.List; import java.util.Map;
87
import javax.servlet.http.HttpServletRequest; import net.sf.hibernate.HibernateException; import org.apache.struts.action.ActionErrors; import org.apache.struts.action.ActionForm; import org.apache.struts.action.ActionMapping; import util.Principal; import banco.DAOCantor; import banco.DAOEndereco; import banco.DAOException; import banco.DAOIdiomas; import coral.Cantor; import coral.Endereco; import coral.Idiomas; import coral.Pessoa; /** * @author Marcelo * * TODO To change the template for this generated type comment go to * Window - Preferences - Java - Code Style - Code Templates */ public class AtualizaDadosActionForm extends ActionForm { private final Map values = new HashMap(); public ActionErrors validate(ActionMapping mapping, HttpServletRequest request) { return null; } public void setValue(String key, Object value) { values.put(key, value); } public Object getValue(String key) { return values.get(key); } public HashMap getDadosForm() { HashMap dadosForm = new HashMap(); dadosForm.put("nome", getValue("nome")); dadosForm.put("dataNascimento", Principal.parseDate(getValue("dataNascimento").toString())); dadosForm.put("naturalidade", getValue("naturalidade")); dadosForm.put("rg", getValue("rg")); dadosForm.put("estadoCivil", getValue("estadoCivil")); dadosForm.put("orgaoExpedidor", getValue("orgaoExpedidor")); dadosForm.put("dataEmissao", Principal.parseDate(getValue("dataEmissao").toString())); dadosForm.put("cpf", getValue("cpf")); dadosForm.put("passaporte", getValue("passaporte"));
88
dadosForm.put("rua", getValue("rua")); dadosForm.put("bairro", getValue("bairro")); dadosForm.put("cep", getValue("cep")); dadosForm.put("numero", getValue("numero")); dadosForm.put("cidade", getValue("cidade")); dadosForm.put("estado", getValue("estado")); dadosForm.put("telResidencial", getValue("telResidencial")); dadosForm.put("telComercial", getValue("telComercial")); dadosForm.put("telOutros", getValue("telOutros")); /*****************PARTE 2********************/ dadosForm.put("naipe", getValue("naipe")); dadosForm.put("cantandoNo", getValue("cantandoNo")); dadosForm.put("empresaQueTrabalha", getValue("empresaQueTrabalha")); dadosForm.put("nomeArtistico", getValue("nomeArtistico")); dadosForm.put("placaCarro", getValue("placaCarro")); dadosForm.put("modeloCarro", getValue("modeloCarro")); dadosForm.put("corCarro", getValue("corCarro")); dadosForm.put("grauInstrucao", getValue("grauInstrucao")); dadosForm.put("cursoFeevale", getValue("cursoFeevale")); dadosForm.put("semestreFeevale", getValue("semestreFeevale")); dadosForm.put("matricula", getValue("matricula")); dadosForm.put("cursoOutraInst", getValue("cursoOutraInst")); dadosForm.put("semestreOutraInst", getValue("semestreOutraInst")); dadosForm.put("instituicao", getValue("instituicao")); /*****************PARTE 3********************/ dadosForm.put("textCantaAtualmente", getValue("textCantaAtualmente")); dadosForm.put("textJaCantou", getValue("textJaCantou")); dadosForm.put("textInstrumentosMusicais", getValue("textInstrumentosMusicais")); dadosForm.put("idioma1", getValue("idioma1")); dadosForm.put("idioma1Radio", getValue("idioma1Radio")); dadosForm.put("idioma2", getValue("idioma2")); dadosForm.put("idioma2Radio", getValue("idioma2Radio")); dadosForm.put("idioma3", getValue("idioma3")); dadosForm.put("idioma3Radio", getValue("idioma3Radio")); dadosForm.put("idioma4", getValue("idioma4")); dadosForm.put("idioma4Radio", getValue("idioma4Radio")); dadosForm.put("idioma5", getValue("idioma5")); dadosForm.put("idioma5Radio", getValue("idioma5Radio")); return dadosForm; } public HashMap setDadosForm(Pessoa pessoa) {
89
setValue("nome", pessoa.getNome()); Date data = pessoa.getDataNascimento(); if (data != null){ System.out.println("data "+data); System.out.println("getDate "+String.valueOf(data.getDate())); System.out.println("getDay "+String.valueOf(data.getDay())); System.out.println("getMonth "+data.getMonth()); System.out.println("getYear "+data.getYear()); String dataStr = String.valueOf(data.getDate()) + "/" + String.valueOf(data.getMonth() + 1) + "/" +String.valueOf(data.getYear()); setValue("dataNascimento", dataStr); } data = pessoa.getDataEmissao(); if (data != null){ String dataStr = String.valueOf(data.getDate()) + "/" + String.valueOf(data.getMonth()+1) + "/" +String.valueOf(data.getYear()); setValue("dataEmissao", dataStr); } setValue("naturalidade", pessoa.getNaturalidade()); setValue("rg", pessoa.getRg()); setValue("estadoCivil", pessoa.getEstadoCivil()); setValue("orgaoExpedidor", pessoa.getOrgaoExpedidor()); setValue("cpf", pessoa.getCpf()); setValue("passaporte", pessoa.getPassaporte()); //ENDERECO try { DAOEndereco daoEndereco = new DAOEndereco(); System.out.println("Pegando Endereco"); Endereco endereco = daoEndereco.findById(pessoa.getIdEndereco()); setValue("rua", endereco.getRua()); setValue("bairro", endereco.getBairro()); setValue("cep", endereco.getCep()); setValue("numero", endereco.getNumero()); setValue("cidade", endereco.getCidade()); setValue("estado", endereco.getEstado()); setValue("telResidencial", endereco.getTelResidencial()); setValue("telComercial", endereco.getTelComercial()); setValue("telOutros", endereco.getTelOutros()); /*****************PARTE 2********************/ //CANTOR DAOCantor daoCantor = new DAOCantor(); Cantor cantor = daoCantor.findByIdPessoa(pessoa.getIdPessoa()); setValue("naipe", cantor.getNaipe()); setValue("cantandoNo", cantor.getCantandoNo());
90
setValue("empresaQueTrabalha", cantor.getEmpresaQueTrabalha()); setValue("nomeArtistico", cantor.getNomeArtistico()); setValue("placaCarro", cantor.getPlacaCarro()); setValue("modeloCarro", cantor.getModeloCarro()); setValue("corCarro", cantor.getCorCarro()); if (cantor.getInstituicao() != null) { setValue("cursoOutraInst", cantor.getCurso()); setValue("semestreOutraInst", cantor.getSemestre()); setValue("instituicao", cantor.getInstituicao()); } else { setValue("cursoFeevale", cantor.getCurso()); setValue("semestreFeevale", cantor.getSemestre()); } setValue("matricula", cantor.getMatricula()); setValue("grauInstrucao", cantor.getGrauInstrucao()); /*****************PARTE 3********************/ setValue("textCantaAtualmente", cantor.getTextCantaAtualmente()); setValue("textJaCantou", cantor.getTextJaCantou()); setValue("textInstrumentosMusicais", cantor.getTextInstrumentosMusicais()); DAOIdiomas daoIdiomas = new DAOIdiomas(); System.out.println("PEGANDO IDIOMAS"); List idiomas = daoIdiomas.findByString(cantor.getIdCantor()); Iterator iterator = idiomas.iterator(); int i = 1; while (iterator.hasNext()){ Idiomas idioma = (Idiomas)iterator.next(); System.out.println("idioma.getNome() "+idioma.getNome()); setValue("idioma"+i, idioma.getNome()); setValue("idioma"+ i++ + "Radio", idioma.getConhecimento()); } HashMap tabelas = new HashMap(); tabelas.put("endereco", endereco); tabelas.put("cantor", cantor); tabelas.put("idiomas", idiomas); return tabelas; } catch (DAOException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (HibernateException e) { // TODO Auto-generated catch block e.printStackTrace(); } return null; } }
91
Classe CadastraGrupoAction.java: /* * Created on 03/08/2004 * * TODO To change the template for this generated file go to * Window - Preferences - Java - Code Style - Code Templates */ package cadastro; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.apache.struts.action.Action; import org.apache.struts.action.ActionForm; import org.apache.struts.action.ActionForward; import org.apache.struts.action.ActionMapping; import util.Principal; import coral.Grupo; /** * @author Marcelo * * TODO To change the template for this generated type comment go to * Window - Preferences - Java - Code Style - Code Templates */ public class CadastraGrupoAction extends Action { public ActionForward execute(ActionMapping mapping, ActionForm actionForm, HttpServletRequest request, HttpServletResponse response) { if (request.getSession().getAttribute("pessoaAutenticada") != null) { CadastraGrupoActionForm form = (CadastraGrupoActionForm)actionForm; Grupo grupo = new Grupo(); grupo.setNome((String)form.getValue("nome")); grupo.setDescricao((String)form.getValue("descricao")); grupo.setDataInclusao(Principal.getDataHoje()); Principal.salvaGrupo(grupo); return mapping.findForward("grupoCadastrado"); } return mapping.findForward("paginaErro"); } }
Classe CadastraGrupoActionForm.java:
92
/* * Created on 06/08/2004 * * TODO To change the template for this generated file go to * Window - Preferences - Java - Code Style - Code Templates */ package cadastro; import java.util.HashMap; import java.util.Map; import javax.servlet.http.HttpServletRequest; import org.apache.struts.action.ActionError; import org.apache.struts.action.ActionErrors; import org.apache.struts.action.ActionForm; import org.apache.struts.action.ActionMapping; /** * @author Marcelo * * TODO To change the template for this generated type comment go to * Window - Preferences - Java - Code Style - Code Templates */ public class CadastraGrupoActionForm extends ActionForm { private final Map values = new HashMap(); public ActionErrors validate(ActionMapping mapping, HttpServletRequest request) { HashMap dadosForm = getDadosForm(); ActionErrors erros = new ActionErrors(); if (dadosForm.get("nome").equals("")){ erros.add("campo_vazio", new ActionError("erro.campo_nome")); } if (dadosForm.get("descricao").equals("")){ erros.add("campo_vazio", new ActionError("erro.campo_descricao")); } return erros; } public void setValue(String key, Object value) { values.put(key, value); } public Object getValue(String key) { return values.get(key); } public HashMap getDadosForm() { HashMap dadosForm = new HashMap(); dadosForm.put("nome", getValue("nome")); dadosForm.put("descricao", getValue("descricao")); return dadosForm;
93
} }
Classe CadastraProfessorAction.java: /* * Created on 03/08/2004 * * TODO To change the template for this generated file go to * Window - Preferences - Java - Code Style - Code Templates */ package cadastro; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.apache.struts.action.Action; import org.apache.struts.action.ActionForm; import org.apache.struts.action.ActionForward; import org.apache.struts.action.ActionMapping; import util.ConstantesCoral; import util.Principal; import coral.Pessoa; import coral.Professor; /** * @author Marcelo * * TODO To change the template for this generated type comment go to * Window - Preferences - Java - Code Style - Code Templates */ public class CadastraProfessorAction extends Action { public ActionForward execute(ActionMapping mapping, ActionForm actionForm, HttpServletRequest request, HttpServletResponse response) { if (request.getSession().getAttribute("pessoaAutenticada") != null) { CadastraProfessorActionForm form = (CadastraProfessorActionForm)actionForm; Pessoa pessoa = new Pessoa(); pessoa.setSenha((String)form.getValue("senha")); pessoa.setEmail((String)form.getValue("email")); pessoa.setTipoPessoa(ConstantesCoral.TIPO_PESSOA_PROFESSOR); pessoa.setDataInclusao(Principal.getDataHoje()); pessoa = Principal.salvaPessoa(pessoa); Professor professor = new Professor(); professor.setIdPessoa(pessoa.getIdPessoa()); Principal.salvaProfessor(professor); return mapping.findForward("professorCadastrado"); } return mapping.findForward("paginaErro"); }
94
}
Classe CadastraProfessorActionForm.java: /* * Created on 06/08/2004 * * TODO To change the template for this generated file go to * Window - Preferences - Java - Code Style - Code Templates */ package cadastro; import java.util.HashMap; import java.util.Map; import javax.servlet.http.HttpServletRequest; import org.apache.struts.action.ActionError; import org.apache.struts.action.ActionErrors; import org.apache.struts.action.ActionForm; import org.apache.struts.action.ActionMapping; import util.Principal; /** * @author Marcelo * * TODO To change the template for this generated type comment go to * Window - Preferences - Java - Code Style - Code Templates */ public class CadastraProfessorActionForm extends ActionForm { private final Map values = new HashMap(); public ActionErrors validate(ActionMapping mapping, HttpServletRequest request) { HashMap dadosForm = getDadosForm(); ActionErrors erros = new ActionErrors(); if (dadosForm.get("email").equals("")){ erros.add("campo_vazio", new ActionError("erro.campo_email")); }else{ if (!Principal.emailEhValido((String)dadosForm.get("email"))) erros.add("", new ActionError("erro.email_invalido")); } if (dadosForm.get("senha").equals("")){ erros.add("campo_vazio", new ActionError("erro.campo_senha")); } return erros;
95
} public void setValue(String key, Object value) { values.put(key, value); } public Object getValue(String key) { return values.get(key); } public HashMap getDadosForm() { HashMap dadosForm = new HashMap(); dadosForm.put("email", getValue("email")); dadosForm.put("senha", getValue("senha")); return dadosForm; } }
Classe CadastroParte1Action.java /* * Created on 03/08/2004 * * TODO To change the template for this generated file go to * Window - Preferences - Java - Code Style - Code Templates */ package cadastro; import java.util.HashMap; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.apache.struts.action.Action; import org.apache.struts.action.ActionForm; import org.apache.struts.action.ActionForward; import org.apache.struts.action.ActionMapping; import util.Principal; import coral.Endereco; import coral.Pessoa; /** * @author Marcelo * * TODO To change the template for this generated type comment go to * Window - Preferences - Java - Code Style - Code Templates */ public class CadastroParte1Action extends Action {
96
public ActionForward execute(ActionMapping mapping, ActionForm actionForm, HttpServletRequest request, HttpServletResponse response) { request.getSession().removeAttribute("pessoaCadastro"); HashMap pessoaCadastro = setDadosForm(actionForm); request.getSession().setAttribute("pessoaCadastro", pessoaCadastro); return mapping.findForward("parte2"); } private HashMap setDadosForm(ActionForm actionForm) { CadastroParte1ActionForm form = (CadastroParte1ActionForm)actionForm; HashMap dadosForm = form.getDadosForm(); Pessoa pessoa = new Pessoa(dadosForm); pessoa.setDataInclusao(Principal.getDataHoje()); pessoa.setTipoPessoa("cantor"); Endereco endereco = new Endereco(dadosForm); HashMap pessoaCadastro = new HashMap(); pessoaCadastro.put("pessoa",pessoa); pessoaCadastro.put("endereco",endereco); return pessoaCadastro; } }
Classe CadastroParte1ActionForm.java /* * Created on 06/08/2004 * * TODO To change the template for this generated file go to * Window - Preferences - Java - Code Style - Code Templates */ package cadastro; import java.util.HashMap; import java.util.Map; import javax.servlet.http.HttpServletRequest; import org.apache.struts.action.ActionError; import org.apache.struts.action.ActionErrors; import org.apache.struts.action.ActionForm; import org.apache.struts.action.ActionMapping; import util.Principal; /** * @author Marcelo * * TODO To change the template for this generated type comment go to * Window - Preferences - Java - Code Style - Code Templates */ public class CadastroParte1ActionForm extends ActionForm{
97
private final Map values = new HashMap(); public ActionErrors validate( ActionMapping mapping, HttpServletRequest request){ HashMap dadosForm = getDadosForm(); ActionErrors erros = new ActionErrors(); if (dadosForm.get("email").equals("")){ erros.add("campo_vazio", new ActionError("erro.campo_email")); }else{ if (!Principal.emailEhValido((String)dadosForm.get("email"))) erros.add("", new ActionError("erro.email_invalido")); } if (dadosForm.get("senha").equals("")){ erros.add("campo_vazio", new ActionError("erro.campo_senha")); } return erros; } public void setValue(String key, Object value) { values.put(key, value); } public Object getValue(String key) { return values.get(key); } public HashMap getDadosForm(){ HashMap dadosForm = new HashMap(); dadosForm.put("email", getValue("email")); dadosForm.put("senha", getValue("senha").toString()); dadosForm.put("nome", getValue("nome")); dadosForm.put("dataNascimento", Principal.parseDate(getValue("dataNascimento").toString())); dadosForm.put("naturalidade", getValue("naturalidade")); dadosForm.put("rg", getValue("rg")); dadosForm.put("estadoCivil", getValue("estadoCivil")); dadosForm.put("orgaoExpedidor", getValue("orgaoExpedidor")); dadosForm.put("dataEmissao", Principal.parseDate(getValue("dataEmissao").toString())); dadosForm.put("cpf", getValue("cpf")); dadosForm.put("passaporte", getValue("passaporte")); dadosForm.put("rua", getValue("rua")); dadosForm.put("bairro", getValue("bairro")); dadosForm.put("cep", getValue("cep")); dadosForm.put("numero", getValue("numero")); dadosForm.put("cidade", getValue("cidade")); dadosForm.put("estado", getValue("estado")); dadosForm.put("telResidencial", getValue("telResidencial"));
98
dadosForm.put("telComercial", getValue("telComercial")); dadosForm.put("telOutros", getValue("telOutros")); return dadosForm; } }
Classe CadastroParte2Action.java: package cadastro; import java.util.HashMap; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.apache.struts.action.Action; import org.apache.struts.action.ActionForm; import org.apache.struts.action.ActionForward; import org.apache.struts.action.ActionMapping; import util.Principal; public class CadastroParte2Action extends Action { public ActionForward execute(ActionMapping mapping, ActionForm actionForm, HttpServletRequest request, HttpServletResponse response) { if (request.getSession().getAttribute("pessoaCadastro") != null) { HashMap pessoaCadastro = (HashMap)request.getSession().getAttribute("pessoaCadastro"); pessoaCadastro = setDadosForm(actionForm, pessoaCadastro); request.getSession().setAttribute("pessoaCadastro", pessoaCadastro); } else { return mapping.findForward("paginaErro"); } Principal.montaComboBoxGrupo(request); return mapping.findForward("parte3"); } private HashMap setDadosForm(ActionForm actionForm, HashMap pessoaCadastro){ CadastroParte2ActionForm form = (CadastroParte2ActionForm)actionForm; HashMap dadosForm = form.getDadosForm(); pessoaCadastro.put("dadosForm2",dadosForm); return pessoaCadastro; } }
99
Classe CadastroParte2ActionForm.java: package cadastro; import java.util.HashMap; import java.util.Map; import javax.servlet.http.HttpServletRequest; import org.apache.struts.action.ActionErrors; import org.apache.struts.action.ActionForm; import org.apache.struts.action.ActionMapping; /** * CadastroParte2ActionForm.java created by EasyStruts - XsltGen. * http://easystruts.sf.net * created on 08-13-2004 * * XDoclet definition: * @struts:form name="CadastroParte2ActionForm" */ public class CadastroParte2ActionForm extends ActionForm { // --------------------------------------------------------- Instance Variables /** nome property */ private String nome; // --------------------------------------------------------- Methods private final Map values = new HashMap(); public ActionErrors validate(ActionMapping map, HttpServletRequest request){ ActionErrors erros = new ActionErrors(); return erros; } public void setValue(String key, Object value) { values.put(key, value); } public Object getValue(String key) { return values.get(key); } public HashMap getDadosForm(){ HashMap dadosForm = new HashMap(); dadosForm.put("naipe", getValue("naipe")); dadosForm.put("cantandoNo", getValue("cantandoNo")); dadosForm.put("empresaQueTrabalha", getValue("empresaQueTrabalha"));
100
dadosForm.put("nomeArtistico", getValue("nomeArtistico")); dadosForm.put("placaCarro", getValue("placaCarro")); dadosForm.put("modeloCarro", getValue("modeloCarro")); dadosForm.put("corCarro", getValue("corCarro")); dadosForm.put("grauInstrucao", getValue("grauInstrucao")); dadosForm.put("cursoFeevale", getValue("cursoFeevale")); dadosForm.put("semestreFeevale", getValue("semestreFeevale")); dadosForm.put("matricula", getValue("matricula")); dadosForm.put("cursoOutraInst", getValue("cursoOutraInst")); dadosForm.put("semestreOutraInst", getValue("semestreOutraInst")); dadosForm.put("instituicao", getValue("instituicao")); return dadosForm; } }
Classe CadastroParte3Action.java: /* * Created on 03/08/2004 * * TODO To change the template for this generated file go to * Window - Preferences - Java - Code Style - Code Templates */ package cadastro; import java.util.HashMap; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.apache.struts.action.Action; import org.apache.struts.action.ActionForm; import org.apache.struts.action.ActionForward; import org.apache.struts.action.ActionMapping; import util.Principal; import coral.Cantor; import coral.Idiomas; /** * @author Marcelo * * TODO To change the template for this generated type comment go to * Window - Preferences - Java - Code Style - Code Templates
101
*/ public class CadastroParte3Action extends Action { public ActionForward execute(ActionMapping mapping, ActionForm actionForm, HttpServletRequest request, HttpServletResponse response) { if (request.getSession().getAttribute("pessoaCadastro") != null) { HashMap pessoaCadastro = (HashMap)request.getSession().getAttribute("pessoaCadastro"); setDadosForm(actionForm, pessoaCadastro); return mapping.findForward("cadastroRealizado"); } else { return mapping.findForward("paginaErro"); } } private void setDadosForm(ActionForm actionForm, HashMap pessoaCadastro) { CadastroParte3ActionForm form = (CadastroParte3ActionForm)actionForm; Cantor cantor = new Cantor(); HashMap dadosForm = form.getDadosForm(); setDadosForm2((HashMap)pessoaCadastro.get("dadosForm2"), cantor); cantor.setIdGrupo(new Integer(dadosForm.get("idGrupo").toString())); cantor.setTextCantaAtualmente(dadosForm.get("textCantaAtualmente").toString()); cantor.setTextJaCantou(dadosForm.get("textJaCantou").toString()); cantor.setTextInstrumentosMusicais(dadosForm.get("textInstrumentosMusicais").toString()); pessoaCadastro.put("cantor",cantor); Integer idCantor = Principal.salvaDadosCantor(pessoaCadastro); //for (int i = 1 i < 5; i++) if (!dadosForm.get("idioma1").equals("")) { Idiomas idioma = new Idiomas(); idioma.setNome(dadosForm.get("idioma1").toString()); idioma.setConhecimento(dadosForm.get("idioma1Radio").toString()); idioma.setIdCantor(idCantor); Principal.salvaIdioma(idioma); if (!dadosForm.get("idioma2").equals("")) { idioma = new Idiomas(); idioma.setNome(dadosForm.get("idioma2").toString()); idioma.setConhecimento(dadosForm.get("idioma2Radio").toString()); idioma.setIdCantor(idCantor); Principal.salvaIdioma(idioma); }
102
if (!dadosForm.get("idioma3").equals("")) { idioma = new Idiomas(); idioma.setNome(dadosForm.get("idioma3").toString()); idioma.setConhecimento(dadosForm.get("idioma3Radio").toString()); idioma.setIdCantor(idCantor); Principal.salvaIdioma(idioma); } if (!dadosForm.get("idioma4").equals("")) { idioma = new Idiomas(); idioma.setNome(dadosForm.get("idioma4").toString()); idioma.setConhecimento(dadosForm.get("idioma4Radio").toString()); idioma.setIdCantor(idCantor); Principal.salvaIdioma(idioma); } if (!dadosForm.get("idioma5").equals("")) { idioma = new Idiomas(); idioma.setNome(dadosForm.get("idioma5").toString()); idioma.setConhecimento(dadosForm.get("idioma5Radio").toString()); idioma.setIdCantor(idCantor); Principal.salvaIdioma(idioma); } } } private void setDadosForm2(HashMap dadosForm, Cantor cantor){ cantor.setNaipe((String)dadosForm.get("naipe")); cantor.setCantandoNo(dadosForm.get("cantandoNo").toString()); cantor.setEmpresaQueTrabalha(dadosForm.get("empresaQueTrabalha").toString()); cantor.setNomeArtistico(dadosForm.get("nomeArtistico").toString()); cantor.setPlacaCarro(dadosForm.get("placaCarro").toString()); cantor.setModeloCarro(dadosForm.get("modeloCarro").toString()); cantor.setCorCarro(dadosForm.get("corCarro").toString()); if(dadosForm.get("grauInstrucao") != null) cantor.setGrauInstrucao(dadosForm.get("grauInstrucao").toString()); cantor.setMatricula(dadosForm.get("matricula").toString()); if (dadosForm.get("cursoFeevale").toString().equals("")){ cantor.setCurso(dadosForm.get("cursoOutraInst").toString()); cantor.setSemestre(dadosForm.get("semestreFeevale").toString()); }else{
103
cantor.setCurso(dadosForm.get("cursoFeevale").toString()); cantor.setSemestre(dadosForm.get("semestreOutraInst").toString()); cantor.setInstituicao(dadosForm.get("instituicao").toString()); } } }
Classe CadastroParte3ActionForm.java: /* * Created on 06/08/2004 * * TODO To change the template for this generated file go to * Window - Preferences - Java - Code Style - Code Templates */ package cadastro; import java.util.HashMap; import java.util.Map; import javax.servlet.http.HttpServletRequest; import org.apache.struts.action.ActionErrors; import org.apache.struts.action.ActionForm; import org.apache.struts.action.ActionMapping; /** * @author Marcelo * * TODO To change the template for this generated type comment go to * Window - Preferences - Java - Code Style - Code Templates */ public class CadastroParte3ActionForm extends ActionForm{ private final Map values = new HashMap(); public ActionErrors validate( ActionMapping mapping, HttpServletRequest request){ return null; } public void setValue(String key, Object value) { values.put(key, value); } public Object getValue(String key) { return values.get(key); } public HashMap getDadosForm(){ HashMap dadosForm = new HashMap();
104
dadosForm.put("idGrupo", getValue("idGrupo")); dadosForm.put("textCantaAtualmente", getValue("textCantaAtualmente")); dadosForm.put("textJaCantou", getValue("textJaCantou")); dadosForm.put("textInstrumentosMusicais", getValue("textInstrumentosMusicais")); dadosForm.put("idioma1", getValue("idioma1")); dadosForm.put("idioma1Radio", getValue("idioma1Radio")); dadosForm.put("idioma2", getValue("idioma2")); dadosForm.put("idioma2Radio", getValue("idioma2Radio")); dadosForm.put("idioma3", getValue("idioma3")); dadosForm.put("idioma3Radio", getValue("idioma3Radio")); dadosForm.put("idioma4", getValue("idioma4")); dadosForm.put("idioma4Radio", getValue("idioma4Radio")); dadosForm.put("idioma5", getValue("idioma5")); dadosForm.put("idioma5Radio", getValue("idioma5Radio")); return dadosForm; } }
Classe ExcluirCantorAction.java: /* * Created on 03/08/2004 * * TODO To change the template for this generated file go to * Window - Preferences - Java - Code Style - Code Templates */ package cadastro; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import net.sf.hibernate.HibernateException; import org.apache.struts.action.Action; import org.apache.struts.action.ActionForm; import org.apache.struts.action.ActionForward; import org.apache.struts.action.ActionMapping; import util.Principal; import banco.DAOCantor; import banco.DAOException; import banco.DAOGrupo; import banco.DAOPessoa; import coral.Cantor; import coral.Grupo; import coral.Pessoa; /**
105
* @author Marcelo * * TODO To change the template for this generated type comment go to * Window - Preferences - Java - Code Style - Code Templates */ public class ExcluiCantorAction extends Action { public ActionForward execute(ActionMapping mapping, ActionForm actionForm, HttpServletRequest request, HttpServletResponse response) { ExcluiCantorActionForm form = (ExcluiCantorActionForm)actionForm; Pessoa pessoa; if (request.getSession().getAttribute("pessoaAutenticada") != null) { if (form.getValue("auxiliarHidden") != null) { if (form.getValue("auxiliarHidden").equals("visualizar")) { montaCantor(form); request.getSession().setAttribute("estado", "visualizar"); return mapping.findForward("excluirCantor"); } else if (form.getValue("auxiliarHidden").equals("excluir")) { excluiCantor(form); return mapping.findForward("cantorExcluido"); } } else{ Principal.montaComboBoxPessoa(request); return mapping.findForward("excluirCantor"); } } return mapping.findForward("paginaErro"); } /** * @param form */ private void excluiCantor(ExcluiCantorActionForm form) { DAOCantor daoCantor = new DAOCantor(); DAOPessoa daoPessoa = new DAOPessoa(); try { Pessoa pessoa = daoPessoa.getPessoa(new Integer(form.getValue("idPessoa").toString())); Integer idPessoa = pessoa.getIdPessoa(); daoCantor.removeCantor(daoCantor.findByIdPessoa(idPessoa)); daoPessoa.removePessoa(idPessoa); } catch (DAOException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (HibernateException e) { // TODO Auto-generated catch block e.printStackTrace(); }
106
} /** * @param form */ private void montaCantor(ExcluiCantorActionForm form) { DAOCantor daoCantor = new DAOCantor(); DAOPessoa daoPessoa = new DAOPessoa(); DAOGrupo daoGrupo = new DAOGrupo(); try { Pessoa pessoa = daoPessoa.getPessoa(new Integer(form.getValue("idPessoa").toString())); Cantor cantor = daoCantor.findByIdPessoa(pessoa.getIdPessoa()); Grupo grupo = daoGrupo.findById(cantor.getIdGrupo()); form.setDadosForm(cantor, pessoa, grupo.getNome()); } catch (HibernateException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (DAOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } }
Classe ExcluirCantorActionForm.java: /* * Created on 06/08/2004 * * TODO To change the template for this generated file go to * Window - Preferences - Java - Code Style - Code Templates */ package cadastro; import java.util.Date; import java.util.HashMap; import java.util.Map; import javax.servlet.http.HttpServletRequest; import net.sf.hibernate.HibernateException; import org.apache.struts.action.ActionErrors; import org.apache.struts.action.ActionForm; import org.apache.struts.action.ActionMapping; import banco.DAOEndereco; import banco.DAOException; import coral.Cantor;
107
import coral.Endereco; import coral.Pessoa; /** * @author Marcelo * * TODO To change the template for this generated type comment go to * Window - Preferences - Java - Code Style - Code Templates */ public class ExcluiCantorActionForm extends ActionForm { private final Map values = new HashMap(); public ActionErrors validate(ActionMapping mapping, HttpServletRequest request) { return null; } public void setValue(String key, Object value) { values.put(key, value); } public Object getValue(String key) { return values.get(key); } /** * @param cantor * @param pessoa * @param string */ public void setDadosForm(Cantor cantor, Pessoa pessoa, String nomeGrupo) { setValue("email", pessoa.getEmail()); setValue("nome", pessoa.getNome()); Date data = pessoa.getDataNascimento(); if (data != null) { String dataStr = String.valueOf(data.getDate()) + "/" + String.valueOf(data.getMonth() + 1) + "/" + String.valueOf(data.getYear()); setValue("dataNascimento", dataStr); } data = pessoa.getDataEmissao(); if (data != null) { String dataStr = String.valueOf(data.getDate()) + "/" + String.valueOf(data.getMonth() + 1) + "/" + String.valueOf(data.getYear()); setValue("dataEmissao", dataStr); } setValue("naturalidade", pessoa.getNaturalidade()); setValue("rg", pessoa.getRg()); setValue("estadoCivil", pessoa.getEstadoCivil()); setValue("orgaoExpedidor", pessoa.getOrgaoExpedidor()); setValue("cpf", pessoa.getCpf()); setValue("passaporte", pessoa.getPassaporte());
108
//ENDERECO try { DAOEndereco daoEndereco = new DAOEndereco(); System.out.println("Pegando Endereco"); Endereco endereco = daoEndereco.findById(pessoa.getIdEndereco()); setValue("rua", endereco.getRua()); setValue("bairro", endereco.getBairro()); setValue("cep", endereco.getCep()); setValue("numero", endereco.getNumero()); setValue("cidade", endereco.getCidade()); setValue("estado", endereco.getEstado()); setValue("telResidencial", endereco.getTelResidencial()); setValue("telComercial", endereco.getTelComercial()); setValue("telOutros", endereco.getTelOutros()); setValue("nomeArtistico", cantor.getNomeArtistico()); setValue("grupo", nomeGrupo); // TODO Auto-generated method stub } catch (DAOException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (HibernateException e) { // TODO Auto-generated catch block e.printStackTrace(); } } }
Classe Administrador.java package coral; /** * @author Marcelo * @hibernate.class table="Administrador" dynamic-update="true" */ public class Administrador { private Integer idAdministrador; private Integer idPessoa; /** * @hibernate.id generator-class="native" */ public Integer getIdAdministrador() { return idAdministrador; }
109
/** * @param integer */ public void setIdAdministrador(Integer integer) { idAdministrador = integer; } /** * @hibernate.property @return */ public Integer getIdPessoa() { return idPessoa; } /** * @param integer */ public void setIdPessoa(Integer integer) { idPessoa = integer; } } Classe Cantor.java: package coral; import java.util.HashMap; /** * @author Marcelo * @hibernate.class table="cantor" dynamic-update="true" */ public class Cantor { private Integer idCantor; private Integer idPessoa; private Integer idGrupo; private String empresaQueTrabalha; private String cantandoNo; private String naipe; private String NomeArtistico; //AUTOMÓVEL private String placaCarro; private String modeloCarro;
110
private String corCarro; private String grauInstrucao; //ALUNO FEEVALE private String curso; private String semestre; private String instituicao; private String matricula; //PERGUNTAS: private String textCantaAtualmente; private String textJaCantou; private String textInstrumentosMusicais; public Cantor(){ } public Cantor(HashMap dadosCantor){ setNaipe((String)dadosCantor.get("naipe")); setCantandoNo(dadosCantor.get("cantandoNo").toString()); } /** * @hibernate.id generator-class="native" */ public Integer getIdCantor() { return idCantor; } /** * @param integer */ public void setIdCantor(Integer integer) { idCantor = integer; } /** * @hibernate.property @return */ public String getCantandoNo() { return cantandoNo; } /** * @hibernate.property @return */ public String getCorCarro() { return corCarro; }
111
/** * @hibernate.property @return */ public String getCurso() { return curso; } /** * @hibernate.property @return */ public String getEmpresaQueTrabalha() { return empresaQueTrabalha; } /** * @hibernate.property @return */ public String getGrauInstrucao() { return grauInstrucao; } /** * @hibernate.property @return */ public Integer getIdPessoa() { return idPessoa; } /** * @hibernate.property @return */ public String getInstituicao() { return instituicao; } /** * @hibernate.property @return */ public String getModeloCarro() { return modeloCarro; } /** * @hibernate.property @return */ public String getNaipe() { return naipe; } /** * @hibernate.property @return */ public String getNomeArtistico() { return NomeArtistico; }
112
/** * @hibernate.property @return */ public String getPlacaCarro() { return placaCarro; } /** * @hibernate.property @return */ public String getSemestre() { return semestre; } /** * @hibernate.property @return */ public String getTextCantaAtualmente() { return textCantaAtualmente; } /** * @hibernate.property @return */ public String getTextInstrumentosMusicais() { return textInstrumentosMusicais; } /** * @hibernate.property @return */ public String getTextJaCantou() { return textJaCantou; } /** * @param string */ public void setCantandoNo(String string) { cantandoNo = string; } /** * @param string */ public void setCorCarro(String string) { corCarro = string; } /** * @param string */ public void setCurso(String string) { curso = string; } /**
113
* @param string */ public void setEmpresaQueTrabalha(String string) { empresaQueTrabalha = string; } /** * @param string */ public void setGrauInstrucao(String string) { grauInstrucao = string; } /** * @param integer */ public void setIdPessoa(Integer integer) { idPessoa = integer; } /** * @param string */ public void setInstituicao(String string) { instituicao = string; } /** * @param string */ public void setModeloCarro(String string) { modeloCarro = string; } /** * @param string */ public void setNaipe(String string) { naipe = string; } /** * @param string */ public void setNomeArtistico(String string) { NomeArtistico = string; } /** * @param string */ public void setPlacaCarro(String string) { placaCarro = string; } /** * @param string
114
*/ public void setSemestre(String string) { semestre = string; } /** * @param string */ public void setTextCantaAtualmente(String string) { textCantaAtualmente = string; } /** * @param string */ public void setTextInstrumentosMusicais(String string) { textInstrumentosMusicais = string; } /** * @param string */ public void setTextJaCantou(String string) { textJaCantou = string; } /** * @hibernate.property @return */ public String getMatricula() { return matricula; } /** * @param string */ public void setMatricula(String string) { matricula = string; } /** * @hibernate.property @return */ public Integer getIdGrupo() { return idGrupo; } /** * @param integer */ public void setIdGrupo(Integer integer) { idGrupo = integer; } }
115
Classe Endereço.java: package coral; import java.util.HashMap; /** * @author Marcelo * @hibernate.class table="endereco" dynamic-update="true" */ public class Endereco { private Integer idEndereco; //ENDEREÇO: private String rua; private String bairro; private String cidade; private String estado; private Long numero; private String cep; //TELEFONES: private Long telResidencial; private Long telComercial; private String telOutros; public Endereco(){ } public Endereco(HashMap dadosEndereco){ setRua(dadosEndereco.get("rua").toString()); setBairro(dadosEndereco.get("bairro").toString()); setCep(dadosEndereco.get("cep").toString()); if (!dadosEndereco.get("numero").equals("")) setNumero(new Long(dadosEndereco.get("numero").toString())); setCidade(dadosEndereco.get("cidade").toString()); setEstado(dadosEndereco.get("estado").toString()); if (!dadosEndereco.get("telResidencial").equals("")) setTelResidencial(new Long(dadosEndereco.get("telResidencial").toString())); if (!dadosEndereco.get("telComercial").equals("")) setTelComercial(new Long(dadosEndereco.get("telComercial").toString())); setTelOutros(dadosEndereco.get("telOutros").toString());
116
} /** * @hibernate.id generator-class="native" */ public Integer getIdEndereco() { return idEndereco; } /** * @param integer */ public void setIdEndereco(Integer integer) { idEndereco = integer; } /** * @hibernate.property @return */ public String getCep() { return cep; } /** * @hibernate.property @return */ public String getCidade() { return cidade; } /** * @hibernate.property @return */ public Long getNumero() { return numero; } /** * @hibernate.property @return */ public String getRua() { return rua; } /** * @hibernate.property @return */ public Long getTelComercial() { return telComercial; } /** * @hibernate.property @return */ public String getTelOutros() { return telOutros; }
117
/** * @hibernate.property @return */ public Long getTelResidencial() { return telResidencial; } /** * @param string */ public void setBairro(String string) { bairro = string; } /** * @param string */ public void setCep(String string) { cep = string; } /** * @param string */ public void setCidade(String string) { cidade = string; } /** * @param long1 */ public void setNumero(Long long1) { numero = long1; } /** * @param string */ public void setRua(String string) { rua = string; } /** * @param long1 */ public void setTelComercial(Long long1) { telComercial = long1; } /** * @param string */ public void setTelOutros(String string) { telOutros = string; }
118
/** * @param long1 */ public void setTelResidencial(Long long1) { telResidencial = long1; } /** * @hibernate.property @return */ public String getEstado() { return estado; } /** * @param string */ public void setEstado(String string) { estado = string; } /** * @hibernate.property @return */ public String getBairro() { return bairro; } } Classe Grupo.java: package coral; import java.util.Date; /** * @author Marcelo * @hibernate.class table="grupo" dynamic-update="true" */ public class Grupo { private Integer idGrupo; private String nome; private String descricao; private Date dataInclusao; /** * @hibernate.id generator-class="native" */ public Integer getIdGrupo() {
119
return idGrupo; } /** * @param integer */ public void setIdGrupo(Integer integer) { idGrupo = integer; } /** * @hibernate.property @return */ public Date getDataInclusao() { return dataInclusao; } /** * @hibernate.property @return */ public String getNome() { return nome; } /** * @param string */ public void setDataInclusao(Date data) { dataInclusao = data; } /** * @param string */ public void setNome(String string) { nome = string; } /** * @hibernate.property @return */ public String getDescricao() { return descricao; } /** * @param string */ public void setDescricao(String string) { descricao = string; } }
Classe Idiomas.java:
120
package coral; /** * @author Marcelo * @hibernate.class table="idiomas" dynamic-update="true" */ public class Idiomas { private Integer idIdioma; private String nome; private String conhecimento; private Integer idCantor; /** * @hibernate.id generator-class="native" */ public Integer getIdIdioma() { return idIdioma; } /** * @param integer */ public void setIdIdioma(Integer integer) { idIdioma = integer; } /** * @hibernate.property @return */ public String getNome() { return nome; } /** * @param string */ public void setNome(String string) { nome = string; } /** * @hibernate.property @return */ public String getConhecimento() { return conhecimento; } /** * @hibernate.property @return */ public Integer getIdCantor() {
121
return idCantor; } /** * @param string */ public void setConhecimento(String string) { conhecimento = string; } /** * @param integer */ public void setIdCantor(Integer integer) { idCantor = integer; } } Classe Maestro.java: package coral; /** * @author Marcelo * @hibernate.class table="Maestro" dynamic-update="true" */ public class Maestro { private Integer idMaestro; private Integer idPessoa; private Integer idGrupo; /** * @hibernate.id generator-class="native" */ public Integer getIdMaestro() { return idMaestro; } /** * @param integer */ public void setIdMaestro(Integer integer) { idMaestro = integer; } /** * @hibernate.property @return */ public Integer getIdPessoa() { return idPessoa; }
122
/** * @param integer */ public void setIdPessoa(Integer integer) { idPessoa = integer; } /** * @hibernate.property @return */ public Integer getIdGrupo() { return idGrupo; } /** * @param integer */ public void setIdGrupo(Integer integer) { idGrupo = integer; } }
Classe Pessoa.java: package coral; import java.util.Date; import java.util.HashMap; /** * @author Marcelo * @hibernate.class table="pessoa" dynamic-update="true" */ public class Pessoa { private Integer idPessoa; private String nome; private String email; private String senha; private String naturalidade; private String rg; private String orgaoExpedidor; private String cpf; private String passaporte;
123
private String estadoCivil; private Date dataNascimento; private Date dataEmissao; private Date dataAtualizacao; private Date dataInclusao; private String tipoPessoa; private Integer idEndereco; public Pessoa (){ } public Pessoa (HashMap dadosPessoa){ setEmail(dadosPessoa.get("email").toString()); setSenha(dadosPessoa.get("senha").toString()); setNome(dadosPessoa.get("nome").toString()); setDataNascimento((Date)dadosPessoa.get("dataNascimento")); setNaturalidade(dadosPessoa.get("naturalidade").toString()); setRg(dadosPessoa.get("rg").toString()); setOrgaoExpedidor(dadosPessoa.get("orgaoExpedidor").toString()); setEstadoCivil(dadosPessoa.get("estadoCivil").toString()); setDataEmissao((Date)dadosPessoa.get("dataEmissao")); setCpf(dadosPessoa.get("cpf").toString()); setPassaporte(dadosPessoa.get("passaporte").toString()); } /** * @hibernate.id generator-class="native" */ public Integer getIdPessoa() { return idPessoa; } /** * @param integer */ public void setIdPessoa(Integer integer) { idPessoa = integer; } /** * @hibernate.property @return */ public String getNome() { return nome; } /** * @param string */ public void setNome(String string) {
124
nome = string; } /** * @hibernate.property @return */ public String getCpf() { return cpf; } /** * @hibernate.property @return */ public String getEmail() { return email; } /** * @hibernate.property @return */ public String getEstadoCivil() { return estadoCivil; } /** * @hibernate.property @return */ public String getNaturalidade() { return naturalidade; } /** * @hibernate.property @return */ public String getOrgaoExpedidor() { return orgaoExpedidor; } /** * @hibernate.property @return */ public String getPassaporte() { return passaporte; } /** * @hibernate.property @return */ public String getRg() { return rg; } /** * @hibernate.property @return */ public String getSenha() {
125
return senha; } /** * @param string */ public void setCpf(String string) { cpf = string; } /** * @param string */ public void setEmail(String string) { email = string; } /** * @param string */ public void setEstadoCivil(String string) { estadoCivil = string; } /** * @param string */ public void setNaturalidade(String string) { naturalidade = string; } /** * @param string */ public void setOrgaoExpedidor(String string) { orgaoExpedidor = string; } /** * @param string */ public void setPassaporte(String string) { passaporte = string; } /** * @param string */ public void setRg(String string) { rg = string; } /** * @param string */ public void setSenha(String string) { senha = string;
126
} /** * @param Date */ public void setDataEmissao(Date data) { dataEmissao = data; } /** * @param Date */ public void setDataNascimento(Date data) { dataNascimento = data; } /** * @hibernate.property @return */ public Date getDataEmissao() { return dataEmissao; } /** * @hibernate.property @return */ public Date getDataNascimento() { return dataNascimento; } /** * @hibernate.property @return */ public Integer getIdEndereco() { return idEndereco; } /** * @param integer */ public void setIdEndereco(Integer integer) { idEndereco = integer; } /** * @hibernate.property @return */ public Date getDataInclusao() { return dataInclusao; } /** * @hibernate.property @return */ public String getTipoPessoa() { return tipoPessoa; }
127
/** * @hibernate.property @return */ public Date getDataAtualizacao() { return dataAtualizacao; } /** * @param date */ public void setDataAtualizacao(Date date) { dataAtualizacao = date; } /** * @param date */ public void setDataInclusao(Date date) { dataInclusao = date; } /** * @param string */ public void setTipoPessoa(String string) { tipoPessoa = string; } } Classe Professor.java: package coral; /** * @author Marcelo * @hibernate.class table="Professor" dynamic-update="true" */ public class Professor { private Integer idProfessor; private Integer idPessoa; /** * @hibernate.id generator-class="native" */ public Integer getIdProfessor() { return idProfessor; } /** * @param integer */
128
public void setIdProfessor(Integer integer) { idProfessor = integer; } /** * @hibernate.property @return */ public Integer getIdPessoa() { return idPessoa; } /** * @param integer */ public void setIdPessoa(Integer integer) { idPessoa = integer; } } Arquivo Administrador.hbm.xml: <?xml version="1.0"?> <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 2.0//EN" "http://hibernate.sourceforge.net/hibernate-mapping-2.0.dtd"> <hibernate-mapping> <class name="coral.Administrador" table="administrador" dynamic-update="true" dynamic-insert="false" > <id name="idAdministrador" column="id_administrador" type="java.lang.Integer" > <generator class="native"> </generator> </id> <property name="idPessoa" type="java.lang.Integer" update="true" insert="true" column="id_pessoa" /> <!--
129
To add non XDoclet property mappings, create a file named hibernate-properties-Administrador.xml containing the additional properties and place it in your merge dir. --> </class> </hibernate-mapping>
Arquivo Cantor.hbm.xml: <?xml version="1.0"?> <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 2.0//EN" "http://hibernate.sourceforge.net/hibernate-mapping-2.0.dtd"> <hibernate-mapping> <class name="coral.Cantor" table="cantor" dynamic-update="true" dynamic-insert="false" > <id name="idCantor" column="id_cantor" type="java.lang.Integer" > <generator class="native"> </generator> </id> <property name="cantandoNo" type="java.lang.String" update="true" insert="true" column="cantando_no" /> <property name="corCarro" type="java.lang.String" update="true" insert="true" column="cor_carro" /> <property name="curso" type="java.lang.String"
130
update="true" insert="true" column="curso" /> <property name="empresaQueTrabalha" type="java.lang.String" update="true" insert="true" column="empresa_que_trabalha" /> <property name="grauInstrucao" type="java.lang.String" update="true" insert="true" column="grau_instrucao" /> <property name="idPessoa" type="java.lang.Integer" update="true" insert="true" column="id_pessoa" /> <property name="idGrupo" type="java.lang.Integer" update="true" insert="true" column="id_grupo" /> <property name="instituicao" type="java.lang.String" update="true" insert="true" column="instituicao" /> <property name="modeloCarro" type="java.lang.String" update="true" insert="true" column="modelo_carro" /> <property name="naipe" type="java.lang.String" update="true"
131
insert="true" column="naipe" /> <property name="nomeArtistico" type="java.lang.String" update="true" insert="true" column="nome_artistico" /> <property name="placaCarro" type="java.lang.String" update="true" insert="true" column="placa_carro" /> <property name="semestre" type="java.lang.String" update="true" insert="true" column="semestre" /> <property name="textCantaAtualmente" type="java.lang.String" update="true" insert="true" column="couros_que_canta" /> <property name="textInstrumentosMusicais" type="java.lang.String" update="true" insert="true" column="instrumentos_musicais" /> <property name="textJaCantou" type="java.lang.String" update="true" insert="true" column="couros_que_cantou" /> <property name="matricula" type="java.lang.String" update="true" insert="true"
132
column="matricula" /> <!-- To add non XDoclet property mappings, create a file named hibernate-properties-Cantor.xml containing the additional properties and place it in your merge dir. --> </class> </hibernate-mapping>
Arquivo Endereco.hbm.xml: <?xml version="1.0"?> <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 2.0//EN" "http://hibernate.sourceforge.net/hibernate-mapping-2.0.dtd"> <hibernate-mapping> <class name="coral.Endereco" table="endereco" dynamic-update="true" dynamic-insert="false" > <id name="idEndereco" column="id_endereco" type="java.lang.Integer" > <generator class="native"> </generator> </id> <property name="cep" type="java.lang.String" update="true" insert="true" column="cep" /> <property name="bairro" type="java.lang.String" update="true" insert="true" column="bairro" />
133
<property name="cidade" type="java.lang.String" update="true" insert="true" column="cidade" /> <property name="numero" type="java.lang.Long" update="true" insert="true" column="numero" /> <property name="rua" type="java.lang.String" update="true" insert="true" column="rua" /> <property name="telComercial" type="java.lang.Long" update="true" insert="true" column="telefone_comercial" /> <property name="telOutros" type="java.lang.String" update="true" insert="true" column="telefone_outros" /> <property name="telResidencial" type="java.lang.Long" update="true" insert="true" column="telefone_residencial" /> <property name="estado" type="java.lang.String" update="true" insert="true" column="estado" />
134
<!-- To add non XDoclet property mappings, create a file named hibernate-properties-Endereco.xml containing the additional properties and place it in your merge dir. --> </class> </hibernate-mapping>
Arquivo Grupo.hbm.xml: <?xml version="1.0"?> <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 2.0//EN" "http://hibernate.sourceforge.net/hibernate-mapping-2.0.dtd"> <hibernate-mapping> <class name="coral.Grupo" table="grupo" dynamic-update="true" dynamic-insert="false" > <id name="idGrupo" column="id_grupo" type="java.lang.Integer" > <generator class="native"> </generator> </id> <property name="dataInclusao" type="java.util.Date" update="true" insert="true" column="data_inclusao" /> <property name="nome" type="java.lang.String" update="true" insert="true" column="nome" /> <property name="descricao"
135
type="java.lang.String" update="true" insert="true" column="descricao" /> <!-- To add non XDoclet property mappings, create a file named hibernate-properties-Grupo.xml containing the additional properties and place it in your merge dir. --> </class> </hibernate-mapping>
Arquivo Idiomas.hbm.xml: <?xml version="1.0"?> <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 2.0//EN" "http://hibernate.sourceforge.net/hibernate-mapping-2.0.dtd"> <hibernate-mapping> <class name="coral.Idiomas" table="idiomas" dynamic-update="true" dynamic-insert="false" > <id name="idIdioma" column="id_idioma" type="java.lang.Integer" > <generator class="native"> </generator> </id> <property name="nome" type="java.lang.String" update="true" insert="true" column="nome" /> <property name="conhecimento" type="java.lang.String" update="true"
136
insert="true" column="conhecimento" /> <property name="idCantor" type="java.lang.Integer" update="true" insert="true" column="id_cantor" /> <!-- To add non XDoclet property mappings, create a file named hibernate-properties-Idiomas.xml containing the additional properties and place it in your merge dir. --> </class> </hibernate-mapping>
Arquivo Maestro.hbm.xml: <?xml version="1.0"?> <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 2.0//EN" "http://hibernate.sourceforge.net/hibernate-mapping-2.0.dtd"> <hibernate-mapping> <class name="coral.Maestro" table="Maestro" dynamic-update="true" dynamic-insert="false" > <id name="idMaestro" column="id_maestro" type="java.lang.Integer" > <generator class="native"> </generator> </id> <property name="idPessoa" type="java.lang.Integer" update="true" insert="true" column="id_pessoa"
137
/> <property name="idGrupo" type="java.lang.Integer" update="true" insert="true" column="id_grupo" /> <!-- To add non XDoclet property mappings, create a file named hibernate-properties-Maestro.xml containing the additional properties and place it in your merge dir. --> </class> </hibernate-mapping>
Arquivo Pessoa.hbm.xml: <?xml version="1.0"?> <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 2.0//EN" "http://hibernate.sourceforge.net/hibernate-mapping-2.0.dtd"> <hibernate-mapping> <class name="coral.Pessoa" table="pessoa" dynamic-update="true" dynamic-insert="false" > <id name="idPessoa" column="id_pessoa" type="java.lang.Integer" > <generator class="native"> </generator> </id> <property name="nome" type="java.lang.String" update="true" insert="true" column="nome" />
138
<property name="cpf" type="java.lang.String" update="true" insert="true" column="cpf" /> <property name="email" type="java.lang.String" update="true" insert="true" column="email" /> <property name="estadoCivil" type="java.lang.String" update="true" insert="true" column="estado_civil" /> <property name="naturalidade" type="java.lang.String" update="true" insert="true" column="naturalidade" /> <property name="orgaoExpedidor" type="java.lang.String" update="true" insert="true" column="orgao_expedidor" /> <property name="passaporte" type="java.lang.String" update="true" insert="true" column="passaporte" /> <property name="rg" type="java.lang.String" update="true" insert="true" column="rg" /> <property
139
name="senha" type="java.lang.String" update="true" insert="true" column="senha" /> <property name="dataEmissao" type="java.util.Date" update="true" insert="true" column="data_emissao" /> <property name="dataNascimento" type="java.util.Date" update="true" insert="true" column="data_nascimento" /> <property name="dataAtualizacao" type="java.util.Date" update="true" insert="true" column="data_atualizacao" /> <property name="dataInclusao" type="java.util.Date" update="true" insert="true" column="data_inclusao" /> <property name="tipoPessoa" type="java.lang.String" update="true" insert="true" column="tipo_pessoa" /> <property name="idEndereco" type="java.lang.Integer" update="true" insert="true" column="id_endereco" /> <!-- To add non XDoclet property mappings, create a file named
140
hibernate-properties-Pessoa.xml containing the additional properties and place it in your merge dir. --> </class> </hibernate-mapping>
Arquivo Professor.hbm.xml: <?xml version="1.0"?> <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 2.0//EN" "http://hibernate.sourceforge.net/hibernate-mapping-2.0.dtd"> <hibernate-mapping> <class name="coral.Professor" table="professor" dynamic-update="true" dynamic-insert="false" > <id name="idProfessor" column="id_professor" type="java.lang.Integer" > <generator class="native"> </generator> </id> <property name="idPessoa" type="java.lang.Integer" update="true" insert="true" column="id_pessoa" /> <!-- To add non XDoclet property mappings, create a file named hibernate-properties-Professor.xml containing the additional properties and place it in your merge dir. --> </class> </hibernate-mapping>
141
Classe GerarRelatorioAction.java /* * Created on 03/08/2004 * * TODO To change the template for this generated file go to * Window - Preferences - Java - Code Style - Code Templates */ package ferramentas; import java.util.HashMap; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.apache.struts.action.Action; import org.apache.struts.action.ActionForm; import org.apache.struts.action.ActionForward; import org.apache.struts.action.ActionMapping; import util.ConstantesCoral; import util.Principal; import coral.Pessoa; import dori.jasper.engine.JRException; /** * @author Marcelo * * TODO To change the template for this generated type comment go to * Window - Preferences - Java - Code Style - Code Templates */ public class GerarRelatorioAction extends Action { public ActionForward execute(ActionMapping mapping, ActionForm actionForm, HttpServletRequest request, HttpServletResponse response) { Pessoa pessoa; if (request.getSession().getAttribute("pessoaAutenticada") != null) { Principal geraReport = new Principal(); try { GerarRelatorioActionForm form = (GerarRelatorioActionForm)actionForm; HashMap dadosForm = form.getDadosForm(); String relatorio = ""; String query = ""; if (dadosForm.get("relatorio").equals("1")){ relatorio = ConstantesCoral.RELATORIO_NOME_EMAIL_DATA_IN; query = ConstantesCoral.RELATORIO_NOME_EMAIL_DATA_IN_QUERY; }else if (dadosForm.get("relatorio").equals("2")){ relatorio = ConstantesCoral.RELATORIO_NOME_CURSO_NATRICULA_DATA_IN;
142
query = ConstantesCoral.RELATORIO_NOME_CURSO_NATRICULA_DATA_IN_QUERY; }else if (dadosForm.get("relatorio").equals("3")){ relatorio = ConstantesCoral.RELATORIO_NOME_GRUPO_NOME_ARTISTICO_DATA_IN; query = ConstantesCoral.RELATORIO_NOME_GRUPO_NOME_ARTISTICO_DATA_IN_QUERY; }else if (dadosForm.get("relatorio").equals("4")){ relatorio = ConstantesCoral.RELATORIO_NOME_NAIPE_CANTANDO_NO_DATA_IN; query = ConstantesCoral.RELATORIO_NOME_NAIPE_CANTANDO_NO_DATA_IN_QUERY; }else{ relatorio = ConstantesCoral.RELATORIO_NOME_EMAIL_NATURALIDADE_RG_DATA_IN; query = ConstantesCoral.RELATORIO_NOME_EMAIL_NATURALIDADE_RG_DATA_IN_QUERY; } geraReport.geraRelatorio(relatorio,query); } catch (JRException e) { e.printStackTrace(); } catch (Exception e) { e.printStackTrace(); } return mapping.findForward("relatorioGerado"); } return mapping.findForward("paginaErro"); } }
Classe GerarRelatorioActionForm.java /* * Created on 06/08/2004 * * TODO To change the template for this generated file go to * Window - Preferences - Java - Code Style - Code Templates */ package ferramentas; import java.util.HashMap; import java.util.Map; import javax.servlet.http.HttpServletRequest; import org.apache.struts.action.ActionErrors; import org.apache.struts.action.ActionForm; import org.apache.struts.action.ActionMapping;
143
/** * @author Marcelo * * TODO To change the template for this generated type comment go to * Window - Preferences - Java - Code Style - Code Templates */ public class GerarRelatorioActionForm extends ActionForm { private final Map values = new HashMap(); public ActionErrors validate(ActionMapping mapping, HttpServletRequest request) { return null; } public void setValue(String key, Object value) { values.put(key, value); } public Object getValue(String key) { return values.get(key); } public HashMap getDadosForm() { HashMap dadosForm = new HashMap(); dadosForm.put("relatorio", getValue("relatorio")); return dadosForm; } }
Classe LoginAction.java: /* * Created on 03/08/2004 * * TODO To change the template for this generated file go to * Window - Preferences - Java - Code Style - Code Templates */ package login; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.apache.struts.action.Action; import org.apache.struts.action.ActionForm; import org.apache.struts.action.ActionForward; import org.apache.struts.action.ActionMapping; /** * @author Marcelo * * TODO To change the template for this generated type comment go to
144
* Window - Preferences - Java - Code Style - Code Templates */ public class LoginAction extends Action { public ActionForward execute(ActionMapping mapping, ActionForm actionForm, HttpServletRequest request, HttpServletResponse response) { /* LoginActionForm form = (LoginActionForm)actionForm; HashMap dadosForm = form.getDadosForm(); DAOPessoa daoPessoa = new DAOPessoa(); try { Pessoa pessoa = null; ArrayList pessoas = (ArrayList)daoPessoa.findByEmail((String)dadosForm.get("email")); if (pessoas!= null){ pessoa = (Pessoa)pessoas.get(0); } if (pessoa != null) { if (pessoa.getSenha().equals(dadosForm.get("senha"))) { request.getSession().setAttribute("pessoaAutenticada", pessoa);*/ return mapping.findForward("paginaSudoeste");/* } else //erro System.out.print("Senha incorreta"); } else //erro System.out.print("Pessoa não existente."); } catch (HibernateException e1) { // TODO Auto-generated catch block e1.printStackTrace(); } System.out.println(1); System.out.println("PASSOU LOGIN******"); return mapping.findForward("formLogin");*/ } }
Classe LoginActionForm.java: /* * Created on 06/08/2004 * * TODO To change the template for this generated file go to * Window - Preferences - Java - Code Style - Code Templates */ package login; import java.util.ArrayList; import java.util.HashMap;
145
import java.util.Map; import javax.servlet.http.HttpServletRequest; import net.sf.hibernate.HibernateException; import org.apache.struts.action.ActionError; import org.apache.struts.action.ActionErrors; import org.apache.struts.action.ActionForm; import org.apache.struts.action.ActionMapping; import banco.DAOPessoa; import coral.Pessoa; /** * @author Marcelo * * TODO To change the template for this generated type comment go to * Window - Preferences - Java - Code Style - Code Templates */ public class LoginActionForm extends ActionForm{ private final Map values = new HashMap(); public ActionErrors validate( ActionMapping mapping, HttpServletRequest request){ HashMap dadosForm = getDadosForm(); DAOPessoa daoPessoa = new DAOPessoa(); ActionErrors erros = new ActionErrors(); try { Pessoa pessoa = null; ArrayList pessoas = (ArrayList)daoPessoa.findByEmail((String)dadosForm.get("email")); if (pessoas!= null){ pessoa = (Pessoa)pessoas.get(0); } if (pessoa != null) { if (pessoa.getSenha().equals(dadosForm.get("senha"))) { request.getSession().setAttribute("pessoaAutenticada", pessoa); } else erros.add("campo_vazio", new ActionError("erro.senha_incorreta")); } else erros.add("campo_vazio", new ActionError("erro.email_inexistente")); } catch (HibernateException e1) { e1.printStackTrace(); } return null; } public void setValue(String key, Object value) { values.put(key, value); }
146
public void setValue(String key, Boolean value) { values.put(key, value); } public Object getValue(String key) { return values.get(key); } public HashMap getDadosForm(){ HashMap dadosForm = new HashMap(); dadosForm.put("email", getValue("email")); dadosForm.put("senha", getValue("senha")); return dadosForm; } }
Classe ConstantesCoral.java: package util; /** * @author Marcelo * * To change the template for this generated type comment go to * Window>Preferences>Java>Code Generation>Code and Comments */ public final class ConstantesCoral { static final public String EMAIL_ADMINISTRADOR = "[email protected]"; static final public String ASSUNTO_EMAIL_CADASTRO = "Confirmação de Cadastro"; static final public String FORMAT_DATA_STRING = "dd/MM/yyyy"; static final public String LINK_CONFIRMACAO_CADASTRO = "http://127.0.0.1:8080/coral/confirmaCadastro.do"; static final public String RELATORIO_NOME_EMAIL_DATA_IN = "nome_email.jasper"; static final public String RELATORIO_NOME_CURSO_NATRICULA_DATA_IN = "nome_curso_matricula.jasper"; static final public String RELATORIO_NOME_GRUPO_NOME_ARTISTICO_DATA_IN = "nome_grupo_nomeArtistico.jasper"; static final public String RELATORIO_NOME_NAIPE_CANTANDO_NO_DATA_IN = "nome_naipe_cantandoNo.jasper"; static final public String RELATORIO_NOME_EMAIL_NATURALIDADE_RG_DATA_IN = "nome_email_naturalidade_rg.jasper";
147
static final public String RELATORIO_NOME_EMAIL_DATA_IN_QUERY = "Select * from Pessoa"; static final public String RELATORIO_NOME_CURSO_NATRICULA_DATA_IN_QUERY = "select nome,curso,matricula,data_inclusao from Pessoa p, Cantor c where p.id_pessoa = c.id_pessoa"; static final public String RELATORIO_NOME_GRUPO_NOME_ARTISTICO_DATA_IN_QUERY = "select p.nome,g.nome as nomeGrupo,c.nome_artistico,p.data_inclusao from Pessoa p, Cantor c, Grupo g where p.id_pessoa = c.id_pessoa AND c.id_grupo = g.id_grupo"; static final public String RELATORIO_NOME_NAIPE_CANTANDO_NO_DATA_IN_QUERY = "select p.nome,c.naipe,c.cantando_no,p.data_inclusao from Pessoa p, Cantor c where p.id_pessoa = c.id_pessoa"; static final public String RELATORIO_NOME_EMAIL_NATURALIDADE_RG_DATA_IN_QUERY = "select p.nome,p.email,p.naturalidade,p.rg, p.data_inclusao from Pessoa p"; static final public String TIPO_PESSOA_PROFESSOR = "professor"; static final public String TIPO_PESSOA_ADMINISTRADOR = "administrador"; static final public String TIPO_PESSOA_CANTOR = "cantor"; static final public String TIPO_PESSOA_MAESTRO = "maestro"; }
Classe Principal.java: /* * Created on 01/06/2004 * * To change the template for this generated file go to * Window>Preferences>Java>Code Generation>Code and Comments */ package util; import java.io.InputStream; import java.security.Key; import java.sql.Connection; import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Statement; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Collection; import java.util.Date; import java.util.HashMap; import java.util.Locale; import java.util.Map; import java.util.ResourceBundle; import javax.crypto.Cipher; import javax.crypto.KeyGenerator; import javax.crypto.SecretKey;
148
import javax.naming.Context; import javax.naming.InitialContext; import javax.naming.NamingException; import javax.servlet.http.HttpServletRequest; import javax.sql.DataSource; import net.sf.hibernate.HibernateException; import banco.DAOCantor; import banco.DAOEndereco; import banco.DAOException; import banco.DAOGrupo; import banco.DAOIdiomas; import banco.DAOPessoa; import banco.DAOProfessor; import coral.Cantor; import coral.Endereco; import coral.Grupo; import coral.Idiomas; import coral.Pessoa; import coral.Professor; import dori.jasper.engine.JRException; import dori.jasper.engine.JRResultSetDataSource; import dori.jasper.engine.JasperExportManager; import dori.jasper.engine.JasperFillManager; import dori.jasper.engine.JasperPrint; import dori.jasper.view.JasperViewer; /** * @author Marcelo * * To change the template for this generated type comment go to * Window>Preferences>Java>Code Generation>Code and Comments */ public class Principal { public static String HTML = "H"; public static String PDF = "P"; public static String REPORT = "report"; public static String IMAGE_MAP = "imageMap"; //Formata a data informada para o padrão ConstantesCoral.FORMAT_DATA_STRING. public static String getDataFormatada() { SimpleDateFormat format = new SimpleDateFormat(ConstantesCoral.FORMAT_DATA_STRING); java.util.Calendar c = java.util.Calendar.getInstance(); java.util.Date d = c.getTime(); // data do servidor return format.format(d); } public static Date getDataHoje() { java.util.Calendar c = java.util.Calendar.getInstance(); java.util.Date d = c.getTime(); // data do servidor return d; }
149
public static Date getDataFormatada(String data) { SimpleDateFormat format = new SimpleDateFormat(ConstantesCoral.FORMAT_DATA_STRING); format = new SimpleDateFormat("MM/dd/yyyy"); try { return format.parse(data); } catch (ParseException e) { // TODO Auto-generated catch block e.printStackTrace(); return null; } } //Atualiza ou insere uma pessoa no banco. public static Pessoa salvaPessoa(Pessoa pessoa) { DAOPessoa daoPessoa = new DAOPessoa(); try { return daoPessoa.savePessoa(pessoa); } catch (DAOException e) { // TODO Auto-generated catch block e.printStackTrace(); } return null; } // Verifica se o email é sintaticamente correto. public static boolean emailEhValido(String email) { String regex = "^[a-zA-Z0-9._-]+@([a-zA-Z0-9_-]+\\.[a-zA-Z0-9_-]+){1,3}$"; return email.matches(regex); } private Connection getConnection(String dataSourceName) { Context ctx; try { ctx = new InitialContext(); DataSource ds = (DataSource)ctx.lookup(dataSourceName); return ds.getConnection(); } catch (NamingException e) { //e.printStackTrace(); } catch (SQLException e) { // TODO Auto-generated catch block //e.printStackTrace(); } return null; } /* Real za con tornan i exão com o banco de dados, re do o objeto Connection */ private static Connection getConnection() throws ClassNotFoundException, SQLException { String driver = "org.gjt.mm.mysql.Driver"; String url = "jdbc:mysql://localhost/coral"; String user = "root"; String password = "coral"; Class.forName(driver);
150
Connection con = DriverManager.getConnection(url, user, password); return con; } /* Gera Relatorio e visualiza-o */ public void geraRelatorio(String relatorio, String strQuery) throws JRException, Exception { Connection con = getConnection(); Statement stm = con.createStatement(); String query = strQuery; ResultSet rs = stm.executeQuery(query); /* implementação da interface JRDataSource para DataSource ResultSet */ JRResultSetDataSource jrRS = new JRResultSetDataSource(rs); /* HashMap de parametros utilizados no relatório. Sempre instanciados */ Map parameters = new HashMap(); // parameters.put("COLUNA", valor); /* Preenche o relatório com os dados. Gera o arquivo BibliotecaPessoal.jrprint */ InputStream stream = this.getClass().getResourceAsStream("/util/relatorios/" + relatorio); JasperPrint print = JasperFillManager.fillReport(stream, parameters, jrRS); /* Exporta para o formato PDF */ JasperExportManager.exportReportToPdf(print); /* Preenche o relatorio e o salva diretamente em arquivo PDF. Sem a necessidade do .jrprint */ /* Visualiza o relatório em formato PDF */ JasperViewer.viewReport(print, false); } /** Returns an HQL query from the resource bundle. @param key the resource key @return String */ public static String getQuery(String key) { ResourceBundle bundle = getResourceBundle(); return bundle.getString(key); } /** Utility method to create a <code>Date</code> class from <code>dateString</code>. @param dateString @return Date @throws RuntimeException is dateString is invalid */ public static Date parseDate(String dateString) { try { if (dateString.equals("")) return null;
151
SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy"); return sdf.parse(dateString); } catch (ParseException pe) { throw new RuntimeException("Not a valid date: " + dateString + ". Must be of dd-MM-yyyy format."); } } private static ResourceBundle getResourceBundle() { if (bundle == null) { bundle = ResourceBundle.getBundle(RESOURCE_BUNDLE, Locale.ENGLISH, Thread.currentThread().getContextClassLoader()); } return bundle; } private static ResourceBundle bundle; public static final String RESOURCE_BUNDLE = "example_app"; /** * @param pessoaCadastro * @return */ public static Integer salvaDadosCantor(HashMap pessoaCadastro) { Pessoa pessoa = (Pessoa)pessoaCadastro.get("pessoa"); Endereco endereco = (Endereco)pessoaCadastro.get("endereco"); Cantor cantor = (Cantor)pessoaCadastro.get("cantor"); DAOPessoa daoPessoa = new DAOPessoa(); DAOCantor daoCantor = new DAOCantor(); DAOEndereco daoEndereco = new DAOEndereco(); try { Endereco enderecoSalvo = daoEndereco.saveEndereco(endereco); pessoa.setIdEndereco(enderecoSalvo.getIdEndereco()); Pessoa pessoaSalva = daoPessoa.savePessoa(pessoa); cantor.setIdPessoa(pessoa.getIdPessoa()); Cantor cantorSalvo = daoCantor.saveCantor(cantor); return cantorSalvo.getIdCantor(); } catch (DAOException e) { // TODO Auto-generated catch block e.printStackTrace(); return null; } } public static void salvaIdioma(Idiomas idioma) { DAOIdiomas daoIdiomas = new DAOIdiomas(); try { daoIdiomas.saveIdiomas(idioma); } catch (DAOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } /** * @param request
152
*/ public static void montaComboBoxGrupo(HttpServletRequest request) { DAOGrupo daoGrupo = new DAOGrupo(); try { Collection gruposList = daoGrupo.findAllGrupos(); request.getSession().setAttribute("gruposList", gruposList); } catch (DAOException e) { e.printStackTrace(); } catch (HibernateException e) { e.printStackTrace(); } } public static void montaComboBoxPessoa(HttpServletRequest request) { DAOPessoa daoPessoa = new DAOPessoa(); try { Collection pessoasList = daoPessoa.findAllPessoas("cantor"); request.getSession().setAttribute("pessoasList", pessoasList); } catch (DAOException e) { e.printStackTrace(); } catch (HibernateException e) { e.printStackTrace(); } } //Atualiza ou insere um grupo no banco. public static Grupo salvaGrupo(Grupo grupo) { DAOGrupo daoGrupo = new DAOGrupo(); try { return daoGrupo.saveGrupo(grupo); } catch (DAOException e) { // TODO Auto-generated catch block e.printStackTrace(); } return null; } //Atualiza ou insere um professor no banco. public static Professor salvaProfessor(Professor professor) { DAOProfessor daoProfessor = new DAOProfessor(); try { return daoProfessor.saveProfessor(professor); } catch (DAOException e) { // TODO Auto-generated catch block e.printStackTrace(); } return null; } static Cipher ecipher; static Cipher dcipher; public static String encrypt(String str) { try {
153
Key d = null; SecretKey key = KeyGenerator.getInstance("DES").generateKey(); ecipher = Cipher.getInstance("DES"); dcipher = Cipher.getInstance("DES"); ecipher.init(Cipher.ENCRYPT_MODE, key); dcipher.init(Cipher.DECRYPT_MODE, key); // Encode the string into bytes using utf-8 byte[] utf8 = str.getBytes("UTF8"); // Encrypt byte[] enc = ecipher.doFinal(utf8); // Encode bytes to base64 to get a string return new sun.misc.BASE64Encoder().encode(enc); } catch (Exception e) { e.printStackTrace(); } return null; } //public static String decrypt(String str) { public static String decrypt(String str) { try { SecretKey key = KeyGenerator.getInstance("DES").generateKey(); ecipher = Cipher.getInstance("DES"); dcipher = Cipher.getInstance("DES"); ecipher.init(Cipher.ENCRYPT_MODE, key); dcipher.init(Cipher.DECRYPT_MODE, key); // Decode base64 to get bytes byte[] dec = new sun.misc.BASE64Decoder().decodeBuffer(str); // Decrypt byte[] utf8 = dcipher.doFinal(dec); // Decode using utf-8 return new String(utf8, "UTF8"); } catch (Exception e) { e.printStackTrace(); } return null; } /** * @param pessoaAtualizada */ public static void salvaPessoaEEndereco(HashMap pessoaAtualizada) { Pessoa pessoa = (Pessoa)pessoaAtualizada.get("pessoa");
154
Endereco endereco = (Endereco)pessoaAtualizada.get("endereco"); DAOPessoa daoPessoa = new DAOPessoa(); DAOEndereco daoEndereco = new DAOEndereco(); try { Endereco enderecoSalvo = daoEndereco.saveEndereco(endereco); pessoa.setIdEndereco(enderecoSalvo.getIdEndereco()); Pessoa pessoaSalva = daoPessoa.savePessoa(pessoa); } catch (DAOException e) { e.printStackTrace(); } } }
Arquivo Mensagens.properties: erro.campo_email=O campo Email é obrigatório.<br> erro.campo_senha=O campo Senha é obrigatório.<br> erro.campo_nome=O campo Nome é obrigatório.<br> erro.campo_descricao=O campo Descrição é obrigatório.<br> erro.email_invalido=Email mal formado.<br> erro.email_inexistente=Email inexistente.<br> erro.senha_incorreta=Senha incorreta.<br> Arquivo Hibernate.cfg.xml: <?xml version="1.0" encoding="ISO-8859-1"?> <!DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate Configuration DTD//EN" "http://hibernate.sourceforge.net/hibernate-configuration-2.0.dtd"> <hibernate-configuration> <session-factory> <property name="connection.driver_class">org.gjt.mm.mysql.Driver</property> <property name="connection.url">jdbc:mysql://localhost/coral</property> <property name="connection.username">root</property> <property name="connection.password">coral</property> <property name="connection.pool_size">10</property> <property name="show_sql">false</property> <property name="use_outer_join">true</property> <property name="dialect">net.sf.hibernate.dialect.MySQLDialect</property> <mapping resource="coral/Pessoa.hbm.xml"/> <mapping resource="coral/Administrador.hbm.xml"/> <mapping resource="coral/Cantor.hbm.xml"/> <mapping resource="coral/Endereco.hbm.xml"/>
155
<mapping resource="coral/Grupo.hbm.xml"/> <mapping resource="coral/Idiomas.hbm.xml"/> <mapping resource="coral/Maestro.hbm.xml"/> <mapping resource="coral/Professor.hbm.xml"/> </session-factory> </hibernate-configuration> Arquivo Hibernate.properties: ################################### ### MySQL Database ################################### hibernate.connection.driver_class=org.gjt.mm.mysql.Driver hibernate.connection.url=jdbc:mysql://localhost/coral hibernate.connection.username=root hibernate.connection.password=coral hibernate.dialect=net.sf.hibernate.dialect.MySQLDialect hibernate.show_sql=true ################################### ### Apache DBCP Connection Pool ################################### hibernate.dbcp.maxActive 100 hibernate.dbcp.whenExhaustedAction 1 hibernate.dbcp.maxWait 120000 hibernate.dbcp.maxIdle 10 ## prepared statement cache hibernate.dbcp.ps.maxActive 100 hibernate.dbcp.ps.whenExhaustedAction 1 hibernate.dbcp.ps.maxWait 120000 hibernate.dbcp.ps.maxIdle 100 Arquivo struts-config.xml: <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE struts-config PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 1.1//EN" "http://jakarta.apache.org/struts/dtds/struts-config_1_1.dtd"> <struts-config> <form-beans> <form-bean name="cadastroParte1Action" type="cadastro.CadastroParte1ActionForm" /> <form-bean name="cadastroParte2Action" type="cadastro.CadastroParte2ActionForm" /> <form-bean name="cadastroParte3Action" type="cadastro.CadastroParte3ActionForm" /> <form-bean name="atualizaDadosAction" type="cadastro.AtualizaDadosActionForm" /> <form-bean name="alteraSenhaAction" type="cadastro.AlteraSenhaActionForm" />
156
<form-bean name="cadastraProfessorAction" type="cadastro.CadastraProfessorActionForm" /> <form-bean name="excluiCantorAction" type="cadastro.ExcluiCantorActionForm" /> <form-bean name="cadastraGrupoAction" type="cadastro.CadastraGrupoActionForm" /> <form-bean name="loginAction" type="login.LoginActionForm" /> <form-bean name="gerarRelatorioAction" type="ferramentas.GerarRelatorioActionForm" /> </form-beans> <global-forwards> <forward name="paginaErro" path="/paginaDeErro.jsp" redirect="true"/> </global-forwards> <action-mappings> <action path="/formCadastroParte1Action" forward="/cadastroParte1.jsp"/> <action path="/cadastroParte1Action" name="cadastroParte1Action" type="cadastro.CadastroParte1Action" scope="request" input="/cadastroParte1.jsp"> <forward name="parte2" path="/formCadastroParte2Action.do" /> </action> <action path="/formCadastroParte2Action" forward="/cadastroParte2.jsp"/> <action path="/cadastroParte2Action" name="cadastroParte2Action" type="cadastro.CadastroParte2Action" scope="request" input="/cadastroParte2.jsp"> <forward name="parte3" path="/cadastroParte3.jsp" /> </action> <action path="/formCadastroParte3Action" forward="/cadastroParte3.jsp"/> <action path="/cadastroParte3Action" name="cadastroParte3Action" type="cadastro.CadastroParte3Action" scope="request" input="/cadastroParte3.jsp"> <forward name="cadastroRealizado" path="/cadastroRealizado.jsp" /> <forward name="dadosAlterados" path="/dadosAlterados.jsp" /> </action> <action path="/atualizaDadosAction" name="atualizaDadosAction" type="cadastro.AtualizaDadosAction" scope="request" input="/atualizaDados.jsp"> <forward name="atualizaDados" path="/atualizaDados.jsp" /> <forward name="dadosAlterados" path="/dadosAlterados.jsp" /> </action> <action path="/formAlteraSenhaAction" forward="/alteraSenha.jsp"/> <action path="/alteraSenhaAction" name="alteraSenhaAction" type="cadastro.AlteraSenhaAction" scope="request" input="/alteraSenha.jsp"> <forward name="senhaAlterada" path="/senhaAlterada.jsp" /> </action>
157
<action path="/formCadastraProfessorAction" forward="/cadastraProfessor.jsp"/> <action path="/cadastraProfessorAction" name="cadastraProfessorAction" type="cadastro.CadastraProfessorAction" scope="request" input="/cadastraProfessor.jsp"> <forward name="professorCadastrado" path="/cadastroProfessorRealizado.jsp" /> </action> <action path="/excluiCantorAction" name="excluiCantorAction" type="cadastro.ExcluiCantorAction" scope="request" input="/excluiCantor.jsp"> <forward name="excluirCantor" path="/excluiCantor.jsp" /> <forward name="cantorExcluido" path="/cantorExcluido.jsp" /> </action> <action path="/formCadastraGrupoAction" forward="/cadastraGrupo.jsp"/> <action path="/cadastraGrupoAction" name="cadastraGrupoAction" type="cadastro.CadastraGrupoAction" scope="request" input="/cadastraGrupo.jsp"> <forward name="grupoCadastrado" path="/cadastroGrupoRealizado.jsp" /> </action> <action path="/formLoginAction" forward="/principal/login.jsp"/> <action path="/loginAction" name="loginAction" type="login.LoginAction" scope="request" input="/principal/login.jsp"> <forward name="paginaSudoeste" path="/principal/paginaSudoeste.jsp" /> <forward name="formLogin" path="/principal/login.jsp" /> </action> <action path="/formGerarRelatorioAction" forward="/gerarRelatorio.jsp"/> <action path="/gerarRelatorioAction" name="gerarRelatorioAction" type="ferramentas.GerarRelatorioAction" scope="request" input="/gerarRelatorio.jsp"> <forward name="relatorioGerado" path="/relatorioGerado.jsp" /> </action> </action-mappings> <message-resources parameter="Mensagens" /> </struts-config> Arquivo web.xml: <?xml version="1.0" encoding="ISO-8859-1"?> <web-app xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"
158
version="2.4"> <servlet> <servlet-name>action</servlet-name> <servlet-class>org.apache.struts.action.ActionServlet</servlet-class> <init-param> <param-name>config</param-name> <param-value>/WEB-INF/struts-config.xml</param-value> </init-param> <init-param> <param-name>aplicacao</param-name> <param-value>coral</param-value> </init-param> </servlet> <!-- Define servlets that are included in the example application --> <taglib> <taglib-uri>/WEB-INF/struts/struts-bean.tld</taglib-uri> <taglib-location>/WEB-INF/struts/struts-bean.tld</taglib-location> </taglib> <taglib> <taglib-uri>/WEB-INF/struts/struts-html.tld</taglib-uri> <taglib-location>/WEB-INF/struts/struts-html.tld</taglib-location> </taglib> <taglib> <taglib-uri>/WEB-INF/struts/struts-logic.tld</taglib-uri> <taglib-location>/WEB-INF/struts/struts-logic.tld</taglib-location> </taglib> <!-- JSPC servlet mappings start --> <servlet-mapping> <servlet-name>action</servlet-name> <url-pattern>*.do</url-pattern> </servlet-mapping> <!-- JSPC servlet mappings end --> </web-app>
Arquivo estiloCoral.css: .rotuloCampo { font-family: Verdana, Arial, Helvetica, sans-serif; /*font-weight:bold;*/ font-size: 11px; text-align: right;
159
} .rotuloErro { font-family: Verdana, Arial, Helvetica, sans-serif; font-weight:bold; color:#FF0000; font-size: 13px; text-align: center; } .apresentacao { font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 15px; text-align: center; } /*------------------------Campos---------------------*/ .campo_select { font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 11px; text-align: left; vertical-align: bottom; SCROLLBAR-FACE-COLOR: #FFFFFF; SCROLLBAR-HIGHLIGHT-COLOR: #FFFFFF; SCROLLBAR-SHADOW-COLOR: #FFFFFF; SCROLLBAR-3DLIGHT-COLOR: #FFFFFF; SCROLLBAR-ARROW-COLOR: #FFFFFF; SCROLLBAR-TRACK-COLOR: #FFFFFF; SCROLLBAR-DARKSHADOW-COLOR: #FFFFFF; border: 1px solid #333333; width: 192px; color: #000000; z-index:-1; } .campo_select_maior { font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 11px; text-align: left; vertical-align: bottom; SCROLLBAR-FACE-COLOR: #FFFFFF; SCROLLBAR-HIGHLIGHT-COLOR: #FFFFFF; SCROLLBAR-SHADOW-COLOR: #FFFFFF; SCROLLBAR-3DLIGHT-COLOR: #FFFFFF; SCROLLBAR-ARROW-COLOR: #FFFFFF; SCROLLBAR-TRACK-COLOR: #FFFFFF; SCROLLBAR-DARKSHADOW-COLOR: #FFFFFF; border: 1px solid #333333;
160
width: 252px; color: #000000; z-index:-1; } .campoLogin { font-family: Verdana, Arial, Helvetica, sans-serif; width: 155px; font-size: 11px; border: 1px solid #666666; } .campoTextoPadrao { font-family: Verdana, Arial, Helvetica, sans-serif; width: 190px; font-size: 11px; border: 1px solid #666666; } .campoTextoGrande { font-family: Verdana, Arial, Helvetica, sans-serif; width: 340px; font-size: 11px; border: 1px solid #666666; } .mensagem_erro { font-family: Verdana, Arial, Helvetica, sans-serif; color: #FF0000; font-weight: bold; } .campoTextoPequeno { font-family: Verdana, Arial, Helvetica, sans-serif; width: 90px; font-size: 11px; border: 1px solid #666666; } .campoTextoNumero { font-family: Verdana, Arial, Helvetica, sans-serif; width: 50px; font-size: 11px; border: 1px solid #666666; } .campoData { font-family: Verdana, Arial, Helvetica, sans-serif; width: 68px; font-size: 11px; border: 1px solid #666666; }
161
.campoAreaDeTexto { font-family: Verdana, Arial, Helvetica, sans-serif; width: 385px; height:75px; font-size: 11px; border: 1px solid #666666; } /*------------------------scrollbar---------------------*/ .barraDeRolagem{position: absolute; top: 82px; left: 48px; height: 150px; width: 150px; z-index: 3; font-family: "Arial"; font-size: 0pt; line-height: 120%; background-color: rgb(255,255,255); overflow: hidden} body{ scrollbar-face-color: rgb(51, 62, 102); scrollbar-arrow-color: rgb(0, 0, 0); scrollbar-highlight-color: rgb(102, 51, 255); scrollbar-3dlight-color: rgb(102, 255, 102); scrollbar-shadow-color: rgb(102, 255, 102); scrollbar-darkshadow-color: rgb(255, 255, 204); scrollbar-track-color: rgb(22, 181, 54) } /*------------------------link---------------------*/ a:link{color: rgb(171,0,219); font-weight: normal; font-style: normal; text-decoration: underline} a:visited{color: rgb(51,51,102); font-weight: normal; font-style: italic; text-decoration: none}
162
a:hover{color: rgb(255,255,0); font-weight: bold; font-style: normal; text-decoration: none} Arquivo funcoesJavaScript.js: function verificaCampos(){ var email = document.formCadastro.email.value; var nome = document.formCadastro.nome.value; var senha = document.formCadastro.senha.value; if (email == "" || nome == "" || senha == "") { alert('Os campos com * (asterisco) são obrigatórios.'); return false; }else{ return true; } } function verificaCamposSenha(){ var senhaAntiga = document.formAlterarSenha.senhaAntiga.value; var senhaNova = document.formAlterarSenha.senhaNova.value; var senhaConfirmacao = document.formAlterarSenha.senhaConfirmacao.value; if (senhaAntiga == "" || senhaNova == "" || senhaConfirmacao == "") { alert('Todos os campos devem ser preenchidos.'); return false; }else if (senhaNova != senhaConfirmacao) { alert('A senha Nova difere da Confirmação.'); return false; }else{ return true; } } function mask_date(campo,event) { var kCode; if(navigator.appName.indexOf("Netscape")!= -1) kCode = event.which; else kCode = event.keyCode; var validControlKeys = new Array(0,8,16,20,36,47); var validNumericKeys = new Array(48,49,50,51,52,53,54,55,56,57);
163
var validKeys = validNumericKeys.concat(validControlKeys); if(campo.value.length >= 10) return false; if(campo.value.length == 2 && kCode != 47) campo.value = campo.value + '/'; if(campo.value.length == 5 && kCode != 47) campo.value = campo.value + '/'; for(i=0;i<validKeys.length;i++){ if(validKeys[i] == kCode) return true; } return false; } // Using in Dinamic Search function mask_numeric(campo,event) { var kCode; if(navigator.appName.indexOf("Netscape")!= -1) kCode = event.which; else kCode = event.keyCode; var validControlKeys = new Array(0,8,16,20,36,45); var validNumericKeys = new Array(44,45,46,48,49,50,51,52,53,54,55,56,57); var validKeys = validNumericKeys.concat(validControlKeys); if(campo.value.length > 0 && (kCode == 45)){ return false; } for(i=0;i<validKeys.length;i++){ if(validKeys[i] == kCode) return true; } return false; } function isNum( caractere ) { var strValidos = "0123456789" if ( strValidos.indexOf( caractere ) == -1 ) return false; return true; } function isValid(valor) { var LEFT = 37; var RIGHT = 39; var HOM = 36;
164
var END = 35; var DEL = 46; var INS = 45; var CAPS = 20; var SHIFT = 16; var BACKSPACE = 8; var TAB = 0; if ((valor == LEFT) || (valor == RIGHT) || (valor == HOM) || (valor == END) || (valor == DEL) || (valor == INS) || (valor == CAPS) || (valor == SHIFT) || (valor == BACKSPACE) || (valor == TAB)) return(true); return(false); } function limpa_campoNum(valor) { t = valor.length; novovalor=''; for(i=0; i<=t-1; i++) { if (isNum(valor.charAt(i))) { novovalor += valor.charAt(i); } } return(novovalor); } function mascara_data(campo, event) { var key; var tecla; if(navigator.appName.indexOf("Netscape")!= -1) tecla= event.which; else tecla= event.keyCode; key = String.fromCharCode(tecla); if ( (isNum(key)) || (isValid(tecla)) ) { data = limpa_campoNum(campo.value); t = data.length; if (t > 8) t = 8; novodata = ""; for(i=0; i<=t-1; i++) { if (i==2)
165
novodata+="/"; if (i==4) novodata+="/"; novodata+=data.charAt(i); } campo.value = novodata; return(true); } else { return(false); } } function mascara_numero(campo, event){ var key; var tecla; if(navigator.appName.indexOf("Netscape")!= -1) tecla= event.which; else tecla= event.keyCode; key = String.fromCharCode(tecla); if ( (isNum(key)) || (isValid(tecla)) ) { return(true); } else { return(false); } } Arquivo login.jsp: <%@ taglib uri="/WEB-INF/struts_tld/struts-bean.tld" prefix="bean" %> <%@ taglib uri="/WEB-INF/struts_tld/struts-html.tld" prefix="html" %> <%@ taglib uri="/WEB-INF/struts_tld/struts-logic.tld" prefix="logic" %> <link href="folhaEstilo/estiloCoral.css" rel="stylesheet" type="text/css"> <SCRIPT language="JavaScript" type="text/javascript" src="javascript/funcoesJavaScript.js"></SCRIPT>
166
<HTML> <BODY bgcolor="#00CC00"> <% if (application.getAttribute("arrayPessoa")!= null){ request.getSession().setAttribute("arrayPessoa",application.getAttribute("arrayPessoa")); } %> <html:form action="/loginAction.do" method="post"> <table border="0" cellspacing="5"> <tr> <td><div align="right"><span class="rotuloCampo">Email:</span> </div></td> <td><html:text property="value(email)" alt="Digite seu email" styleClass="campoLogin" /></td> </tr> <tr> <!--html:hidden property="value(arrayPessoa)" value="2"/--> <p> <td><div align="right"><span class="rotuloCampo">Senha:</span> </div></td> <td><html:password property="value(senha)" alt="Digite seu email" styleClass="campoLogin" /></td> <p> </tr> <tr> <td></td> <td><html:submit value="Entrar"/></td> </tr> </table> <p align="center"><a TARGET="paginaSudeste.jsp" href="/coral/formCadastroParte1Action.do">Não sou cadastrado!</a></p> <p> </html:form> </BODY> </html> Arquivo paginaNordeste.jsp: <link href="../folhaEstilo/estiloCoral.css" rel="stylesheet" type="text/css"> <HTML> <BODY bgcolor="#009966"> <center>
167
<h1><font color="#0000FF">Sistema de Apoio aos Grupos do Movimento Coral</font></h1> <p align="right"><a href="../sair.jsp" target="_parent">página inicial</a></p> </center> </BODY> </html> Arquivo paginaSudeste.jsp: <HTML> <BODY bgcolor="#009900"> <link href="../folhaEstilo/estiloCoral.css" rel="stylesheet" type="text/css"> <center> <h1><strong>Bem vindo ao Movimento Coral</strong></h1> <span class="apresentacao"> O Movimento Coral Feevale foi criado em agosto de 2000 a partir de dois coros que já existiam em nosso estabelecimento e conta hoje com aproximadamente 120 cantores e cantoras distribuídos em cinco diferentes grupos corais: O Coro Universitário Feevale, o Coral Canto e Vida da 3ª Idade, o Grupo Vocal Feevale, o Coro Preparatório e o Coro Preparatório da 3ª idade. <p> Mais informações em <a href="" onClick="window.open('http://www.feevale.br/coral')">www.feevale.br/coral</a>. </span> </center> </BODY> </html> Arquivo paginaSudoeste.jsp: <%@page import="coral.Pessoa" %> <link href="folhaEstilo/estiloCoral.css" rel="stylesheet" type="text/css"> <SCRIPT language="JavaScript" type="text/javascript" src="javascript/funcoesJavaScript.js"></SCRIPT> <HTML> <BODY bgcolor="#00CC00"> <br><br><br><br> <table width="100%" border="0" cellspacing="5"> <tr>
168
<td colspan="2"><hr color="#006633"></td> </tr> <tr> <td align="left">Cadastro</td> <td> </td> </tr> <tr> <td colspan="2"><p align="right"> <a href="/coral/atualizaDadosAction.do" target="paginaSudeste.jsp">Alterar Dados</a> </p></td> </tr> <tr> <td colspan="2"><p align="right"> <a href="/coral/formAlteraSenhaAction.do" target="paginaSudeste.jsp">Alterar Senha</a> </p></td> </tr> <% Pessoa pessoa = null; if (request.getSession().getAttribute("pessoaAutenticada") != null){ pessoa = (Pessoa)request.getSession().getAttribute("pessoaAutenticada"); String tipoPessoa = pessoa.getTipoPessoa(); if (tipoPessoa.equals("professor")){ %> <tr> <td colspan="2"><hr color="#006633"></td> </tr> <tr> <td align="left">Ferramentas</td> <td> </td> </tr> <tr> <td colspan="2"><p align="right"> <a href="/coral/formGerarRelatorioAction.do" target="paginaSudeste.jsp" >Gerar Relatório</a> </p></td> </tr> <tr> <td></td> <td></td> </tr> <%}else if (tipoPessoa.equals("administrador")){ %> <tr> <td colspan="2"><hr color="#006633"></td> </tr> <tr>
169
<td align="left">Ferramentas</td> <td></td> </tr> <tr> <td colspan="2"><p align="right"> <a href="/coral/formGerarRelatorioAction.do" target="paginaSudeste.jsp" >Gerar Relatório</a> </p></td> </tr> <tr> <td></td> <td></td> </tr> <tr> <td colspan="2"><p align="right"> <a href="/coral/formCadastraProfessorAction.do" target="paginaSudeste.jsp">Cadastrar Professor</a> </p></td> </tr> <tr> <td colspan="2"><p align="right"> <a href="/coral/formCadastraGrupoAction.do" target="paginaSudeste.jsp">Cadastrar Grupo</a> </p></td> </tr> <tr> <td colspan="2"><p align="right"> <a href="/coral/excluiCantorAction.do" target="paginaSudeste.jsp">Excluir Cantor</a> </p></td> </tr> <% } }%> <tr> <td colspan="2"><hr color="#006633"></td> </tr> <tr><td colspan="2"> </td></tr> <tr><td colspan="2"> </td></tr> <tr> <td colspan="2"><p align="center"> <a href="/coral/sair.jsp" target="_parent">Sair</a> </p></td> </tr> </table> </BODY> </html>
170
Arquivo alteraSenha.jsp: <%@ taglib uri="/WEB-INF/struts_tld/struts-bean.tld" prefix="bean" %> <%@ taglib uri="/WEB-INF/struts_tld/struts-html.tld" prefix="html" %> <%@ taglib uri="/WEB-INF/struts_tld/struts-logic.tld" prefix="logic" %> <link href="folhaEstilo/estiloCoral.css" rel="stylesheet" type="text/css"> <SCRIPT language="JavaScript" type="text/javascript" src="javascript/funcoesJavaScript.js"></SCRIPT> <html:html> <BODY bgcolor='#00CC00'> <html:form action="/alteraSenhaAction.do" method="post"> <center> <h2><font color="#0000FF">Alteração de Senha</font> </h2> <br> <table bgcolor="#009900" border="1" bordercolor="#009966" cellpadding="0" cellspacing="0" > <tr> <td><div align="right"><span class="rotuloCampo">Senha Antiga:</span></div></td> <td><html:password property="value(senhaAntiga)" styleClass="campoTextoPequeno"/></td> </tr> <tr> <td><div align="right"><span class="rotuloCampo">Senha Nova:</span></div></td> <td><html:password property="value(senhaNova)" styleClass="campoTextoPequeno"/></td> </tr> <tr> <td><div align="right"><span class="rotuloCampo">Confirmação:</span></div></td> <td><html:password property="value(senhaConfirmacao)" styleClass="campoTextoPequeno"/></td> </tr> <tr> <td></td> <td><center><html:submit value="Alterar"/></center></td> </tr> </table> </center> </html:form> </BODY> </html:html>
171
Arquivo atualizaDados.jsp: <%@ taglib uri="/WEB-INF/struts_tld/struts-bean.tld" prefix="bean" %> <%@ taglib uri="/WEB-INF/struts_tld/struts-html.tld" prefix="html" %> <%@ taglib uri="/WEB-INF/struts_tld/struts-logic.tld" prefix="logic" %> <%@page import="coral.Pessoa" %> <link href="folhaEstilo/estiloCoral.css" rel="stylesheet" type="text/css"> <SCRIPT language="JavaScript" type="text/javascript" src="javascript/funcoesJavaScript.js"></SCRIPT> <html:html> <BODY bgcolor='#00CC00'> <html:form action="/atualizaDadosAction.do" method="post" onsubmit="atualizarDados"> <center> <h2><font color="#0000FF">Alteração de Dados</font> </h2> <br> <table bgcolor="#009900" border="1" bordercolor="#009966" cellpadding="0" cellspacing="0"> <html:hidden property="value(atualizar)" value="true"/> <tr> <td><div align="right"><span class="rotuloCampo"><span class="rotuloCampo">Nome Completo: </span> </div></td> <td colspan="3"><html:text property="value(nome)" styleClass="campoTextoGrande" /></td> <td colspan="7"></td> </tr> <tr> <td><div align="right"><span class="rotuloCampo">Data de Nascimento: </span> </div></td> <td><html:text property="value(dataNascimento)" styleClass="campoTextoPequeno" onchange="return mascara_data(this,event)" onkeypress="return mascara_data(this,event)" /></td> <td><div align="right"><span class="rotuloCampo">Naturalidade:</span> </div></td> <td><html:text property="value(naturalidade)" styleClass="campoTextoPadrao" /></td> <td colspan="5"></td> </tr> <tr> <td><div align="right"><span class="rotuloCampo">N° do RG:</span> </div></td> <td><html:text property="value(rg)" styleClass="campoTextoPequeno" onchange="return mascara_numero(this,event)" onkeypress="return mascara_numero(this,event)" /></td>
172
<td><div align="right"><span class="rotuloCampo">Órgão Expedidor: </span> </div></td> <td><html:text property="value(orgaoExpedidor)" styleClass="campoTextoPadrao" /></td> <td colspan="5"></td> </tr> <tr> <td><div align="right"><span class="rotuloCampo">Estado Civil: </span> </div></td> <td><html:text property="value(estadoCivil)" styleClass="campoTextoPequeno" /></td> <td><div align="right"><span class="rotuloCampo">Data de Emissão:</span> </div></td> <td><html:text property="value(dataEmissao)" styleClass="campoTextoPequeno" onchange="return mascara_data(this,event)" onkeypress="return mascara_data(this,event)" /></td> <td colspan="5"></td> </tr> <tr> <td><div align="right"><span class="rotuloCampo">N° do CPF:</span> </div></td> <td><html:text property="value(cpf)" styleClass="campoTextoPequeno" onchange="return mascara_numero(this,event)" onkeypress="return mascara_numero(this,event)" /></td> <td><div align="right"><span class="rotuloCampo">N° do Passaporte:</span> </div></td> <td><html:text property="value(passaporte)" styleClass="campoTextoPequeno" /></td> <td colspan="5"></td> </tr> <tr> <td colspan="5"><span class="rotuloCampo">Endereço: </span></td> </tr> <tr> <td><div align="right"><span class="rotuloCampo">Rua:</span> </div></td> <td colspan="5"><html:text property="value(rua)" styleClass="campoTextoGrande" /></td> </tr> <tr> <td><div align="right"><span class="rotuloCampo">Bairro: </span> </div></td> <td><html:text property="value(bairro)" styleClass="campoTextoPadrao" /></td> <td><div align="right"><span class="rotuloCampo">Número:</span> </div></td> <td><html:text property="value(numero)" styleClass="campoTextoNumero" /></td> </tr> <tr> <td><div align="right"><span class="rotuloCampo">CEP: </span> </div></td>
173
<td><html:text property="value(cep)" styleClass="campoTextoPequeno" /></td> <td ><div align="right"><span class="rotuloCampo">Cidade: </span> </div></td> <td><html:text property="value(cidade)" styleClass="campoTextoPadrao" /></td> </tr> <tr> <td><div align="right"><span class="rotuloCampo">Estado: </span> </div></td> <td><html:text property="value(estado)" styleClass="campoTextoPadrao" /></td> </tr> <tr> <td colspan="7"><span class="rotuloCampo">Telefones:</span></td> </tr> <tr> <td ><div align="right"><span class="rotuloCampo">Residencial: </span> </div></td> <td ><html:text property="value(telResidencial)" styleClass="campoTextoPequeno" onchange="return mascara_numero(this,event)" onkeypress="return mascara_numero(this,event)"/></td> <td colspan="7"></td> </tr> <tr> <td><div align="right"><span class="rotuloCampo">Comercial:</span> </div></td> <td><html:text property="value(telComercial)" styleClass="campoTextoPequeno" onchange="return mascara_numero(this,event)" onkeypress="return mascara_numero(this,event)"/></td> <td colspan="7"></td> </tr> <tr> <td><div align="right"><span class="rotuloCampo">Outros:</span> </div></td> <td><html:text property="value(telOutros)" styleClass="campoTextoPadrao" /></td> <td colspan="7"></td> </tr> <tr> <td colspan="9"> </td> </tr> </table> <% Pessoa pessoa = null; if (request.getSession().getAttribute("pessoaAutenticada") != null){ pessoa = (Pessoa)request.getSession().getAttribute("pessoaAutenticada"); String tipoPessoa = pessoa.getTipoPessoa(); if (tipoPessoa.equals("cantor")){ %> <br> <hr color="#006633"> <br>
174
<table bgcolor="#009900" border="1" bordercolor="#009966" cellpadding="0" cellspacing="0"> <tr><td><div align="right"><span class="rotuloCampo"><span class="rotuloCampo">Naipe:</span></span> </div></td> <td><html:text property="value(naipe)" styleClass="campoTextoPadrao" /></td> <td width="100"><div align="right"><span class="rotuloCampo">Cantando no: </span> </div></td> <td width="144"><html:text property="value(cantandoNo)" styleClass="campoTextoPadrao" /></td> <td width="0" colspan="3"></td> </tr> <tr> <td colspan="7"> </td> </tr> <tr> <td><div align="right"><div align="right"><span class="rotuloCampo">Empresa ou Instituição onde trabalha: </span></div></td> <td colspan="6"><html:text property="value(empresaQueTrabalha)" styleClass="campoTextoGrande" /></td> <td colspan="7"></td> </tr> <tr> <td colspan="2" width="335"><span class="rotuloCampo">Em caso de gravações ou publicações do Movimento Coral Feevale, como você deseja que seu nome apareça?</span> </td> <td colspan="6"><html:text property="value(nomeArtistico)" styleClass="campoTextoPadrao" /></td> </tr> <tr> <td colspan="7"><span class="rotuloCampo">Se você utilizar automóvel ou motocicleta para vir aos ensaios ou outras atividades do Movimento Coral:</span> </td> </tr> <tr> <td><div align="right"><span class="rotuloCampo">N° da Placa: </span></div></td> <td colspan="7"><html:text property="value(placaCarro)" styleClass="campoTextoPequeno" /></td> </tr> <tr> <td><div align="right"><span class="rotuloCampo">Modelo: </span></div></td>
175
<td colspan="7"><html:text property="value(modeloCarro)" styleClass="campoTextoPequeno" /></td> </tr> <tr> <td><div align="right"><span class="rotuloCampo">Cor:</span></div></td> <td colspan="7"><html:text property="value(corCarro)" styleClass="campoTextoPequeno" /></td> </tr> <tr> <td colspan="7"><span class="rotuloCampo">Grau de Instrução:</span></td> </tr> <tr> <td width="145"><html:radio property="value(grauInstrucao)" value="1" /> <span class="rotuloCampo">1° Grau Incompleto</span> </td> <td><html:radio property="value(grauInstrucao)" value="2" /> <span class="rotuloCampo">1° Grau Completo</span></td> <td width="120"><html:radio property="value(grauInstrucao)" value="3" /> <span class="rotuloCampo">2 ° Grau Incompleto</span> </td> <td width="110"><html:radio property="value(grauInstrucao)" value="4" /> <span class="rotuloCampo">2° Grau Completo</span> </td> <td colspan="2"><html:radio property="value(grauInstrucao)" value="5" /> <span class="rotuloCampo">3° Grau Incompleto</span> </td> </tr> <tr> <td><html:radio property="value(grauInstrucao)" value="6" /> <span class="rotuloCampo">3° Grau Completo</span> </td> <td><html:radio property="value(grauInstrucao)" value="7" /> <span class="rotuloCampo"> Especialização</span></td> <td><html:radio property="value(grauInstrucao)" value="8" /> <span class="rotuloCampo">Mestrado</span></td> <td><html:radio property="value(grauInstrucao)" value="9" /> <span class="rotuloCampo">Doutorado</span></td> <td colspan="2"><html:radio property="value(grauInstrucao)" value="10" /> <span class="rotuloCampo">Pós-doutorado</span></td> </tr> <tr> <td colspan="7"><span class="rotuloCampo">Se você é aluno da Feevale :</span></td> </tr> <tr> <td><div align="right"><span class="rotuloCampo">Curso: </span></div></td> <td><html:text property="value(cursoFeevale)" styleClass="campoTextoPadrao" /></td> </tr> <tr> <td><div align="right"><span class="rotuloCampo">Semestre:</span></div></td>
176
<td><html:text property="value(semestreFeevale)" styleClass="campoTextoPequeno" /></td> </tr> <tr> <td><div align="right"><span class="rotuloCampo">N° de Matrícula: </span></div></td> <td><html:text property="value(matricula)" styleClass="campoTextoPadrao" /></td> </tr> <tr> <td colspan="7"><span class="rotuloCampo">Se você é estudante em outra Instituição:</span></td> </tr> <tr> <td><div align="right"><span class="rotuloCampo">Curso:</span></div></td> <td><html:text property="value(cursoOutraInst)" styleClass="campoTextoPadrao" /></td> </tr> <tr> <td><div align="right"><span class="rotuloCampo">Semestre:</span></div></td> <td><html:text property="value(semestreOutraInst)" styleClass="campoTextoPequeno" /></td> </tr> <tr> <td><div align="right"><span class="rotuloCampo">Instituição: </span></div></td> <td><html:text property="value(instituicao)" styleClass="campoTextoPadrao" /></td> </tr> <tr> <td colspan="9"> </td> </tr> </table> <br> <hr color="#006633"> <br> <table bgcolor="#009900" border="1" bordercolor="#009966" cellpadding="0" cellspacing="0"> </tr> <tr> <td colspan="7"><span class="rotuloCampo">Outros couros nos quais canta atualmente(coro, em que naipe, há quanto tempo):</span> </td> </tr> <tr>
177
<td colspan="7"><html:textarea property="value(textCantaAtualmente)" styleClass="campoAreaDeTexto" /></td> </tr> <tr> <td colspan="7"> </td> </tr> <tr> <td colspan="7"><span class="rotuloCampo">Outros couros nos quais já cantou(coro, em que naipe, quando, há quanto tempo):</span> </td> </tr> <tr> <td colspan="7"><html:textarea property="value(textJaCantou)" styleClass="campoAreaDeTexto" /></td> </tr> <tr> <td colspan="7"> </td> </tr> <tr> <td colspan="7"><span class="rotuloCampo">Estudos em música e domínio de instrumentos musicais(o quê, quanto tempo):</span> </td> </tr> <tr> <td colspan="7"><html:textarea property="value(textInstrumentosMusicais)" styleClass="campoAreaDeTexto" /></td> </tr> <tr> <td colspan="7"> </td> </tr> <tr> <td colspan="7"><span class="rotuloCampo">Conhecimentos de idiomas estrangeiros( principalmente pronúncia):</td> </tr> <tr> <td>1. <html:text property="value(idioma1)" styleClass="campoTextoPadrao" /></td> <td><html:radio property="value(idioma1Radio)" value="1" /> Elementar</td> <td><html:radio property="value(idioma1Radio)" value="2" /> Razoável</td> <td><html:radio property="value(idioma1Radio)" value="3" /> Bom</td> <td colspan="2"><html:radio property="value(idioma1Radio)" value="4" /> Muito bom </td> </tr> <tr> <td>2. <html:text property="value(idioma2)" styleClass="campoTextoPadrao" /></td>
178
<td><html:radio property="value(idioma2Radio)" value="1" /> Elementar</td> <td><html:radio property="value(idioma2Radio)" value="2" /> Razoável</td> <td><html:radio property="value(idioma2Radio)" value="3" /> Bom</td> <td colspan="2"><html:radio property="value(idioma2Radio)" value="4" /> Muito bom </td> </tr> <tr> <td>3. <html:text property="value(idioma3)" styleClass="campoTextoPadrao" /></td> <td><html:radio property="value(idioma3Radio)" value="1" /> Elementar</td> <td><html:radio property="value(idioma3Radio)" value="2" /> Razoável</td> <td><html:radio property="value(idioma3Radio)" value="3" /> Bom</td> <td colspan="2"><html:radio property="value(idioma3Radio)" value="4" /> Muito bom </td> </tr> <tr> <td>4. <html:text property="value(idioma4)" styleClass="campoTextoPadrao" /></td> <td><html:radio property="value(idioma4Radio)" value="1" /> Elementar</td> <td><html:radio property="value(idioma4Radio)" value="2" /> Razoável</td> <td><html:radio property="value(idioma4Radio)" value="3" /> Bom</td> <td colspan="2"><html:radio property="value(idioma4Radio)" value="4" /> Muito bom </td> </tr> <tr> <td>5. <html:text property="value(idioma5)" styleClass="campoTextoPadrao" /></td> <td width="135"><html:radio property="value(idioma5Radio)" value="1" /> Elementar</td> <td width="135"><html:radio property="value(idioma5Radio)" value="2" /> Razoável</td> <td width="135"><html:radio property="value(idioma5Radio)" value="3" /> Bom</td> <td width="135" colspan="2"><html:radio property="value(idioma5Radio)" value="4" /> Muito bom </td> </tr> <tr>
179
<td colspan="9"> </td> </tr> </table> <% } }%> <table bgcolor="#009900" border="1" bordercolor="#009966" cellpadding="0" cellspacing="0"> <tr> <td colspan="9"><center><html:submit value="Atualizar"/></center></td> </tr> </table> </center> </html:form> </BODY> </html:html> Arquivo cadastraGrupo.jsp: <%@ taglib uri="/WEB-INF/struts_tld/struts-bean.tld" prefix="bean" %> <%@ taglib uri="/WEB-INF/struts_tld/struts-html.tld" prefix="html" %> <%@ taglib uri="/WEB-INF/struts_tld/struts-logic.tld" prefix="logic" %> <link href="folhaEstilo/estiloCoral.css" rel="stylesheet" type="text/css"> <SCRIPT language="JavaScript" type="text/javascript" src="javascript/funcoesJavaScript.js"></SCRIPT> <html:html> <BODY bgcolor='#00CC00'> <html:form action="/cadastraGrupoAction.do" method="post"> <center> <h2><font color="#0000FF">Cadastro de Grupo</font> </h2> <br> <span class="rotuloErro"> <html:errors/></span> <br> <table bgcolor="#009900" border="1" bordercolor="#009966" cellpadding="0" cellspacing="0" > <tr> <td><div align="right"><span class="rotuloCampo">Nome:</span></div></td> <td><html:text property="value(nome)" styleClass="campoTextoPadrao"/></td> </tr> <tr> <td><div align="right"><span class="rotuloCampo">Descrição:</span></div></td> <td><html:textarea property="value(descricao)" styleClass="campoAreaDeTexto"/></td>
180
</tr> <tr> <td></td> <td><center><html:submit value="Cadastrar"/></center></td> </tr> </table> </center> </html:form> </BODY> </html:html> Arquivo cadastraProfessor.jsp: <%@ taglib uri="/WEB-INF/struts_tld/struts-bean.tld" prefix="bean" %> <%@ taglib uri="/WEB-INF/struts_tld/struts-html.tld" prefix="html" %> <%@ taglib uri="/WEB-INF/struts_tld/struts-logic.tld" prefix="logic" %> <link href="folhaEstilo/estiloCoral.css" rel="stylesheet" type="text/css"> <SCRIPT language="JavaScript" type="text/javascript" src="javascript/funcoesJavaScript.js"></SCRIPT> <html:html> <BODY bgcolor='#00CC00'> <html:form action="/cadastraProfessorAction.do" method="post"> <center> <h2><font color="#0000FF">Cadastro de Professor</font> </h2> <br> <span class="rotuloErro"> <html:errors/></span> <br> <table bgcolor="#009900" border="1" bordercolor="#009966" cellpadding="0" cellspacing="0" > <tr> <td><div align="right"><span class="rotuloCampo">Email:</span></div></td> <td><html:text property="value(email)" styleClass="campoTextoPadrao"/></td> </tr> <tr> <td><div align="right"><span class="rotuloCampo">Senha:</span></div></td> <td><html:password property="value(senha)" styleClass="campoTextoPadrao"/></td> </tr> <tr> <td></td> <td><center><html:submit value="Cadastrar"/></center></td> </tr> </table> </center>
181
</html:form> </BODY> </html:html> Arquivo cadastroGrupoRealizado.jsp: <%@ page contentType="text/html; charset=iso-8859-1" language="java" import="java.sql.*" errorPage="" %> <%@page import="cadastro.*" %> <%@page import="java.util.HashMap" %> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> <title>Cadastro Realizado</title> </head> <BODY bgcolor='#00CC00'> <BR> <h2 align="center"><font color="#0000FF">Cadastro de Grupo Realizado com Sucesso.</font> </h2> <BR> </body> </html> Arquivo cadastroParte1.jsp: <%@ taglib uri="/WEB-INF/struts_tld/struts-bean.tld" prefix="bean" %> <%@ taglib uri="/WEB-INF/struts_tld/struts-html.tld" prefix="html" %> <%@ taglib uri="/WEB-INF/struts_tld/struts-logic.tld" prefix="logic" %> <link href="folhaEstilo/estiloCoral.css" rel="stylesheet" type="text/css"> <SCRIPT language="JavaScript" type="text/javascript" src="javascript/funcoesJavaScript.js"></SCRIPT> <html:html> <BODY bgcolor='#00CC00'> <html:form action="/cadastroParte1Action.do" method="post"> <center> <h2><font color="#0000FF">Cadastro de Aluno. Passo 1/3</font> </h2> <br> <span class="rotuloErro"> <html:errors/></span> <br>
182
<table bgcolor="#009900" border="1" bordercolor="#009966" cellpadding="0" cellspacing="0" > <tr> <td><div align="right"><span class="rotuloCampo"><!--font color="#FF0000">*</font-->Email:</span> </div></td> <td><html:text property="value(email)" alt="Digite seu email" styleClass="campoTextoPadrao" /></td> </tr> <tr> <td><div align="right"><span class="rotuloCampo">Senha:</span> </div></td> <td><html:password property="value(senha)" alt="Digite sua senha" styleClass="campoTextoPadrao" /></td> </tr> </table> <br> <table bgcolor="#009900" border="1" bordercolor="#009966" cellpadding="0" cellspacing="0"> <tr> <td><div align="right"><span class="rotuloCampo"><span class="rotuloCampo">Nome Completo: </span> </div></td> <td colspan="3"><html:text property="value(nome)" styleClass="campoTextoGrande" /></td> <td colspan="7"></td> </tr> <tr> <td><div align="right"><span class="rotuloCampo">Data de Nascimento: </span> </div></td> <td><html:text property="value(dataNascimento)" styleClass="campoTextoPequeno" onchange="return mascara_data(this,event)" onkeypress="return mascara_data(this,event)" /></td> <td><div align="right"><span class="rotuloCampo">Naturalidade:</span> </div></td> <td><html:text property="value(naturalidade)" styleClass="campoTextoPadrao" /></td> <td colspan="5"></td> </tr> <tr> <td><div align="right"><span class="rotuloCampo">N° do RG:</span> </div></td> <td><html:text property="value(rg)" styleClass="campoTextoPequeno" onchange="return mascara_numero(this,event)" onkeypress="return mascara_numero(this,event)" /></td> <td><div align="right"><span class="rotuloCampo">Órgão Expedidor: </span> </div></td>
183
<td><html:text property="value(orgaoExpedidor)" styleClass="campoTextoPadrao" /></td> <td colspan="5"></td> </tr> <tr> <td><div align="right"><span class="rotuloCampo">Estado Civil: </span> </div></td> <td><html:text property="value(estadoCivil)" styleClass="campoTextoPequeno" /></td> <td><div align="right"><span class="rotuloCampo">Data de Emissão:</span> </div></td> <td><html:text property="value(dataEmissao)" styleClass="campoTextoPequeno" onchange="return mascara_data(this,event)" onkeypress="return mascara_data(this,event)" /></td> <td colspan="5"></td> </tr> <tr> <td><div align="right"><span class="rotuloCampo">N° do CPF:</span> </div></td> <td><html:text property="value(cpf)" styleClass="campoTextoPequeno" onchange="return mascara_numero(this,event)" onkeypress="return mascara_numero(this,event)" /></td> <td><div align="right"><span class="rotuloCampo">N° do Passaporte:</span> </div></td> <td><html:text property="value(passaporte)" styleClass="campoTextoPequeno" /></td> <td colspan="5"></td> </tr> <tr> <td colspan="5"><span class="rotuloCampo">Endereço: </span></td> </tr> <tr> <td><div align="right"><span class="rotuloCampo">Rua:</span> </div></td> <td colspan="5"><html:text property="value(rua)" styleClass="campoTextoGrande" /></td> </tr> <tr> <td><div align="right"><span class="rotuloCampo">Bairro: </span> </div></td> <td><html:text property="value(bairro)" styleClass="campoTextoPadrao" /></td> <td><div align="right"><span class="rotuloCampo">Número:</span> </div></td> <td><html:text property="value(numero)" styleClass="campoTextoNumero" /></td> </tr> <tr> <td><div align="right"><span class="rotuloCampo">CEP: </span> </div></td> <td><html:text property="value(cep)" styleClass="campoTextoPequeno" /></td> <td ><div align="right"><span class="rotuloCampo">Cidade: </span> </div></td>
184
<td><html:text property="value(cidade)" styleClass="campoTextoPadrao" /></td> </tr> <tr> <td><div align="right"><span class="rotuloCampo">Estado: </span> </div></td> <td><html:text property="value(estado)" styleClass="campoTextoPadrao" /></td> </tr> <tr> <td colspan="7"><span class="rotuloCampo">Telefones:</span></td> </tr> <tr> <td ><div align="right"><span class="rotuloCampo">Residencial: </span> </div></td> <td ><html:text property="value(telResidencial)" styleClass="campoTextoPequeno" onchange="return mascara_numero(this,event)" onkeypress="return mascara_numero(this,event)"/></td> <td colspan="7"></td> </tr> <tr> <td><div align="right"><span class="rotuloCampo">Comercial:</span> </div></td> <td><html:text property="value(telComercial)" styleClass="campoTextoPequeno" onchange="return mascara_numero(this,event)" onkeypress="return mascara_numero(this,event)"/></td> <td colspan="7"></td> </tr> <tr> <td><div align="right"><span class="rotuloCampo">Outros:</span> </div></td> <td><html:text property="value(telOutros)" styleClass="campoTextoPadrao" /></td> <td colspan="7"></td> </tr> <tr> <td colspan="9"> </td> </tr> <tr> <td colspan="9"><center><html:submit value="Enviar"/></center></td> </tr> </table> </center> </html:form> </BODY> </html:html> Arquivo cadastroParte2.jsp:
185
<%@ taglib uri="/WEB-INF/struts_tld/struts-bean.tld" prefix="bean" %> <%@ taglib uri="/WEB-INF/struts_tld/struts-html.tld" prefix="html" %> <%@ taglib uri="/WEB-INF/struts_tld/struts-logic.tld" prefix="logic" %> <link href="folhaEstilo/estiloCoral.css" rel="stylesheet" type="text/css"> <SCRIPT language="JavaScript" type="text/javascript" src="javascript/funcoesJavaScript.js"></SCRIPT> <html:html> <BODY bgcolor='#00CC00'> <html:form action="/cadastroParte2Action.do" method="post"> <center> <h2><font color="#0000FF">Cadastro de Aluno. Passo 2/3</font> </h2> <br> <span class="rotuloErro"> <html:errors/></span> <br> <table bgcolor="#009900" border="1" bordercolor="#009966" cellpadding="0" cellspacing="0"> <tr><td><div align="right"><span class="rotuloCampo"><span class="rotuloCampo">Naipe:</span></span> </div></td> <td><html:text property="value(naipe)" styleClass="campoTextoPadrao" /></td> <td width="100"><div align="right"><span class="rotuloCampo">Cantando no: </span> </div></td> <td width="144"><html:text property="value(cantandoNo)" styleClass="campoTextoPadrao" /></td> <td width="0" colspan="3"></td> </tr> <tr> <td colspan="7"> </td> </tr> <tr> <td><div align="right"><div align="right"><span class="rotuloCampo">Empresa ou Instituição onde trabalha: </span></div></td> <td colspan="6"><html:text property="value(empresaQueTrabalha)" styleClass="campoTextoGrande" /></td> <td colspan="7"></td> </tr> <tr> <td colspan="2" width="335"><span class="rotuloCampo">Em caso de gravações ou publicações do Movimento Coral Feevale, como você deseja que seu nome apareça?</span> </td>
186
<td colspan="6"><html:text property="value(nomeArtistico)" styleClass="campoTextoPadrao" /></td> </tr> <tr> <td colspan="7"><span class="rotuloCampo">Se você utilizar automóvel ou motocicleta para vir aos ensaios ou outras atividades do Movimento Coral:</span> </td> </tr> <tr> <td><div align="right"><span class="rotuloCampo">N° da Placa: </span></div></td> <td colspan="7"><html:text property="value(placaCarro)" styleClass="campoTextoPequeno" /></td> </tr> <tr> <td><div align="right"><span class="rotuloCampo">Modelo: </span></div></td> <td colspan="7"><html:text property="value(modeloCarro)" styleClass="campoTextoPequeno" /></td> </tr> <tr> <td><div align="right"><span class="rotuloCampo">Cor:</span></div></td> <td colspan="7"><html:text property="value(corCarro)" styleClass="campoTextoPequeno" /></td> </tr> <tr> <td colspan="7"><span class="rotuloCampo">Grau de Instrução:</span></td> </tr> <tr> <td width="145"><html:radio property="value(grauInstrucao)" value="1" /> <span class="rotuloCampo">1° Grau Incompleto</span> </td> <td><html:radio property="value(grauInstrucao)" value="2" /> <span class="rotuloCampo">1° Grau Completo</span></td> <td width="120"><html:radio property="value(grauInstrucao)" value="3" /> <span class="rotuloCampo">2 ° Grau Incompleto</span> </td> <td width="110"><html:radio property="value(grauInstrucao)" value="4" /> <span class="rotuloCampo">2° Grau Completo</span> </td> <td colspan="2"><html:radio property="value(grauInstrucao)" value="5" /> <span class="rotuloCampo">3° Grau Incompleto</span> </td> </tr> <tr> <td><html:radio property="value(grauInstrucao)" value="6" /> <span class="rotuloCampo">3° Grau Completo</span> </td> <td><html:radio property="value(grauInstrucao)" value="7" /> <span class="rotuloCampo"> Especialização</span></td> <td><html:radio property="value(grauInstrucao)" value="8" /> <span class="rotuloCampo">Mestrado</span></td> <td><html:radio property="value(grauInstrucao)" value="9" />
187
<span class="rotuloCampo">Doutorado</span></td> <td colspan="2"><html:radio property="value(grauInstrucao)" value="10" /> <span class="rotuloCampo">Pós-doutorado</span></td> </tr> <tr> <td colspan="7"><span class="rotuloCampo">Se você é aluno da Feevale :</span></td> </tr> <tr> <td><div align="right"><span class="rotuloCampo">Curso: </span></div></td> <td><html:text property="value(cursoFeevale)" styleClass="campoTextoPadrao" /></td> </tr> <tr> <td><div align="right"><span class="rotuloCampo">Semestre:</span></div></td> <td><html:text property="value(semestreFeevale)" styleClass="campoTextoPequeno" /></td> </tr> <tr> <td><div align="right"><span class="rotuloCampo">N° de Matrícula: </span></div></td> <td><html:text property="value(matricula)" styleClass="campoTextoPadrao" /></td> </tr> <tr> <td colspan="7"><span class="rotuloCampo">Se você é estudante em outra Instituição:</span></td> </tr> <tr> <td><div align="right"><span class="rotuloCampo">Curso:</span></div></td> <td><html:text property="value(cursoOutraInst)" styleClass="campoTextoPadrao" /></td> </tr> <tr> <td><div align="right"><span class="rotuloCampo">Semestre:</span></div></td> <td><html:text property="value(semestreOutraInst)" styleClass="campoTextoPequeno" /></td> </tr> <tr> <td><div align="right"><span class="rotuloCampo">Instituição: </span></div></td> <td><html:text property="value(instituicao)" styleClass="campoTextoPadrao" /></td> </tr> <tr> <td colspan="9"> </td> </tr>
188
<tr> <td colspan="9"><center><html:submit value="Enviar"/></center></td> </tr> </table> </center> </html:form> </BODY> </html:html> Arquivo cadastroParte3.jsp: <%@ taglib uri="/WEB-INF/struts_tld/struts-bean.tld" prefix="bean" %> <%@ taglib uri="/WEB-INF/struts_tld/struts-html.tld" prefix="html" %> <%@ taglib uri="/WEB-INF/struts_tld/struts-logic.tld" prefix="logic" %> <link href="folhaEstilo/estiloCoral.css" rel="stylesheet" type="text/css"> <SCRIPT language="JavaScript" type="text/javascript" src="javascript/funcoesJavaScript.js"></SCRIPT> <html:html> <BODY bgcolor='#00CC00'> <html:form action="/cadastroParte3Action.do" method="post"> <center> <h2><font color="#0000FF">Cadastro de Aluno. Passo 3/3</font> </h2> <br> <span class="rotuloErro"> <html:errors/></span> <br> <table bgcolor="#009900" border="1" bordercolor="#009966" cellpadding="0" cellspacing="0"> <tr> <td><span class="rotuloCampo">Grupo em que irá entrar: </span></td> <td colspan="3" align="left"> <html:select property="value(idGrupo)" styleClass="campo_select"> <html:options collection="gruposList" property="idGrupo" labelProperty="nome" /> </html:select> </td> </tr> <tr> <td colspan="7"> </td> </tr>
189
<tr> <td colspan="7"><span class="rotuloCampo">Outros couros nos quais canta atualmente(coro, em que naipe, há quanto tempo):</span> </td> </tr> <tr> <td colspan="7"><html:textarea property="value(textCantaAtualmente)" styleClass="campoAreaDeTexto" /></td> </tr> <tr> <td colspan="7"> </td> </tr> <tr> <td colspan="7"><span class="rotuloCampo">Outros couros nos quais já cantou(coro, em que naipe, quando, há quanto tempo):</span> </td> </tr> <tr> <td colspan="7"><html:textarea property="value(textJaCantou)" styleClass="campoAreaDeTexto" /></td> </tr> <tr> <td colspan="7"> </td> </tr> <tr> <td colspan="7"><span class="rotuloCampo">Estudos em música e domínio de instrumentos musicais(o quê, quanto tempo):</span> </td> </tr> <tr> <td colspan="7"><html:textarea property="value(textInstrumentosMusicais)" styleClass="campoAreaDeTexto" /></td> </tr> <tr> <td colspan="7"> </td> </tr> <tr> <td colspan="7"><span class="rotuloCampo">Conhecimentos de idiomas estrangeiros( principalmente pronúncia):</td> </tr> <tr> <td>1. <html:text property="value(idioma1)" styleClass="campoTextoPadrao" /></td> <td><html:radio property="value(idioma1Radio)" value="1" /> Elementar</td> <td><html:radio property="value(idioma1Radio)" value="2" /> Razoável</td> <td><html:radio property="value(idioma1Radio)" value="3" /> Bom</td>
190
<td colspan="2"><html:radio property="value(idioma1Radio)" value="4" /> Muito bom </td> </tr> <tr> <td>2. <html:text property="value(idioma2)" styleClass="campoTextoPadrao" /></td> <td><html:radio property="value(idioma2Radio)" value="1" /> Elementar</td> <td><html:radio property="value(idioma2Radio)" value="2" /> Razoável</td> <td><html:radio property="value(idioma2Radio)" value="3" /> Bom</td> <td colspan="2"><html:radio property="value(idioma2Radio)" value="4" /> Muito bom </td> </tr> <tr> <td>3. <html:text property="value(idioma3)" styleClass="campoTextoPadrao" /></td> <td><html:radio property="value(idioma3Radio)" value="1" /> Elementar</td> <td><html:radio property="value(idioma3Radio)" value="2" /> Razoável</td> <td><html:radio property="value(idioma3Radio)" value="3" /> Bom</td> <td colspan="2"><html:radio property="value(idioma3Radio)" value="4" /> Muito bom </td> </tr> <tr> <td>4. <html:text property="value(idioma4)" styleClass="campoTextoPadrao" /></td> <td><html:radio property="value(idioma4Radio)" value="1" /> Elementar</td> <td><html:radio property="value(idioma4Radio)" value="2" /> Razoável</td> <td><html:radio property="value(idioma4Radio)" value="3" /> Bom</td> <td colspan="2"><html:radio property="value(idioma4Radio)" value="4" /> Muito bom </td> </tr> <tr> <td>5. <html:text property="value(idioma5)" styleClass="campoTextoPadrao" /></td>
191
<td width="115"><html:radio property="value(idioma5Radio)" value="1" /> Elementar</td> <td width="115"><html:radio property="value(idioma5Radio)" value="2" /> Razoável</td> <td width="115"><html:radio property="value(idioma5Radio)" value="3" /> Bom</td> <td width="115" colspan="2"><html:radio property="value(idioma5Radio)" value="4" /> Muito bom </td> </tr> <tr> <td colspan="9"> </td> </tr> <tr> <td colspan="9"><center><html:submit value="Enviar"/></center></td> </tr> </table> </center> </html:form> </BODY> </html:html> Arquivo cadastroProfessorRealizado.jsp: <%@ page contentType="text/html; charset=iso-8859-1" language="java" import="java.sql.*" errorPage="" %> <%@page import="cadastro.*" %> <%@page import="java.util.HashMap" %> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> <title>Cadastro Realizado</title> </head> <BODY bgcolor='#00CC00'> <BR> <h2 align="center"><font color="#0000FF">Cadastro de Professor Realizado com Sucesso.</font> </h2> <BR> </body>
192
</html> Arquivo cadastroRealizado.jsp: <%@ page contentType="text/html; charset=iso-8859-1" language="java" import="java.sql.*" errorPage="" %> <%@page import="cadastro.*" %> <%@page import="java.util.HashMap" %> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> <title>Cadastro Realizado</title> </head> <BODY bgcolor='#00CC00'> <%if (request.getSession().getAttribute("pessoaCadastro") != null){ %> <BR> <h2 align="center"><font color="#0000FF">Cadastro Realizado com Sucesso.</font> </h2> <BR> <!--h2 align="center"><font color="#0000FF">Um email foi enviado a você para confirmação do Cadastro.</font> </h2--> <%} else {%> <jsp:forward page="paginaDeErro.jsp" /> <%}%> </body> </html> Arquivo cantorExcluido.jsp: <%@ page contentType="text/html; charset=iso-8859-1" language="java" import="java.sql.*" errorPage="" %> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> <title>Dados Alterados</title> </head>
193
<BODY bgcolor='#00CC00'> <BR> <h2 align="center"><font color="#0000FF">Cantor Excluido com Sucesso.</font> </h2> </body> </html> Arquivo dadosAlterados.jsp: <%@ page contentType="text/html; charset=iso-8859-1" language="java" import="java.sql.*" errorPage="" %> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> <title>Dados Alterados</title> </head> <BODY bgcolor='#00CC00'> <BR> <h2 align="center"><font color="#0000FF">Dados Alterados com Sucesso.</font> </h2> </body> </html> Arquivo excluiCantor.jsp: <%@ taglib uri="/WEB-INF/struts_tld/struts-bean.tld" prefix="bean" %> <%@ taglib uri="/WEB-INF/struts_tld/struts-html.tld" prefix="html" %> <%@ taglib uri="/WEB-INF/struts_tld/struts-logic.tld" prefix="logic" %> <link href="folhaEstilo/estiloCoral.css" rel="stylesheet" type="text/css"> <SCRIPT language="JavaScript" type="text/javascript" src="javascript/funcoesJavaScript.js"></SCRIPT> <html:html> <BODY bgcolor='#00CC00'> <html:form action="/excluiCantorAction.do" method="post"> <center>
194
<h2><font color="#0000FF">Exclusão de Cantor</font> </h2> <br> <span class="rotuloErro"> <html:errors/></span> <br> <table bgcolor="#009900" border="1" bordercolor="#009966" cellpadding="0" cellspacing="0" > <html:hidden property="value(auxiliarHidden)" value="" styleId="auxiliarHidden"/> <tr> <td><span class="rotuloCampo">Escolha o Cantor que deseja excluir: </span></td> <td colspan="3" align="left"> <html:select property="value(idPessoa)" styleClass="campo_select"> <html:options collection="pessoasList" property="idPessoa" labelProperty="email" /> </html:select> </td> <td><html:button property="value(botaoVisualizar)" value="Visualizar" onclick="executeVisualizar()"/></td> </tr> <tr> <td></td> <td><center><html:button property="value(botaoExcluir)" value="Excluir" onclick="executeExcluir()"/></center></td> </tr> </table> <BR> <% if (request.getSession().getAttribute("estado") != null){ request.getSession().removeAttribute("estado"); %> <table bgcolor="#009900" border="1" bordercolor="#009966" cellpadding="0" cellspacing="0"> <tr> <td><div align="right"><span class="rotuloCampo"><span class="rotuloCampo">Email: </span> </div></td> <td colspan="3"><html:text property="value(email)" styleClass="campoTextoPadrao" readonly="true"/></td> <td colspan="7"></td> </tr> <tr> <td><div align="right"><span class="rotuloCampo"><span class="rotuloCampo">Nome Artístico: </span> </div></td>
195
<td colspan="3"><html:text property="value(nomeArtistico)" styleClass="campoTextoPadrao" readonly="true"/></td> <td colspan="7"></td> </tr> <tr> <td><div align="right"><span class="rotuloCampo"><span class="rotuloCampo">Grupo: </span> </div></td> <td colspan="3"><html:text property="value(grupo)" styleClass="campoTextoPadrao" readonly="true"/></td> <td colspan="7"></td> </tr> </table> <br> <table bgcolor="#009900" border="1" bordercolor="#009966" cellpadding="0" cellspacing="0"> <tr> <td><div align="right"><span class="rotuloCampo"><span class="rotuloCampo">Nome Completo: </span> </div></td> <td colspan="3"><html:text property="value(nome)" styleClass="campoTextoGrande" readonly="true"/></td> <td colspan="7"></td> </tr> <tr> <td><div align="right"><span class="rotuloCampo">Data de Nascimento: </span> </div></td> <td><html:text property="value(dataNascimento)" styleClass="campoTextoPequeno" onchange="return mascara_data(this,event)" onkeypress="return mascara_data(this,event)" readonly="true"/></td> <td><div align="right"><span class="rotuloCampo">Naturalidade:</span> </div></td> <td><html:text property="value(naturalidade)" styleClass="campoTextoPadrao" readonly="true"/></td> <td colspan="5"></td> </tr> <tr> <td><div align="right"><span class="rotuloCampo">N° do RG:</span> </div></td> <td><html:text property="value(rg)" styleClass="campoTextoPequeno" onchange="return mascara_numero(this,event)" onkeypress="return mascara_numero(this,event)" readonly="true"/></td> <td><div align="right"><span class="rotuloCampo">Órgão Expedidor: </span> </div></td> <td><html:text property="value(orgaoExpedidor)" styleClass="campoTextoPadrao" readonly="true"/></td> <td colspan="5"></td>
196
</tr> <tr> <td><div align="right"><span class="rotuloCampo">Estado Civil: </span> </div></td> <td><html:text property="value(estadoCivil)" styleClass="campoTextoPequeno" readonly="true"/></td> <td><div align="right"><span class="rotuloCampo">Data de Emissão:</span> </div></td> <td><html:text property="value(dataEmissao)" styleClass="campoTextoPequeno" onchange="return mascara_data(this,event)" onkeypress="return mascara_data(this,event)" readonly="true"/></td> <td colspan="5"></td> </tr> <tr> <td><div align="right"><span class="rotuloCampo">N° do CPF:</span> </div></td> <td><html:text property="value(cpf)" styleClass="campoTextoPequeno" onchange="return mascara_numero(this,event)" onkeypress="return mascara_numero(this,event)" readonly="true"/></td> <td><div align="right"><span class="rotuloCampo">N° do Passaporte:</span> </div></td> <td><html:text property="value(passaporte)" styleClass="campoTextoPequeno" readonly="true"/></td> <td colspan="5"></td> </tr> <tr> <td colspan="5"><span class="rotuloCampo">Endereço: </span></td> </tr> <tr> <td><div align="right"><span class="rotuloCampo">Rua:</span> </div></td> <td colspan="5"><html:text property="value(rua)" styleClass="campoTextoGrande" readonly="true"/></td> </tr> <tr> <td><div align="right"><span class="rotuloCampo">Bairro: </span> </div></td> <td><html:text property="value(bairro)" styleClass="campoTextoPadrao" readonly="true"/></td> <td><div align="right"><span class="rotuloCampo">Número:</span> </div></td> <td><html:text property="value(numero)" styleClass="campoTextoNumero" readonly="true"/></td> </tr> <tr> <td><div align="right"><span class="rotuloCampo">CEP: </span> </div></td> <td><html:text property="value(cep)" styleClass="campoTextoPequeno" readonly="true"/></td>
197
<td ><div align="right"><span class="rotuloCampo">Cidade: </span> </div></td> <td><html:text property="value(cidade)" styleClass="campoTextoPadrao" readonly="true"/></td> </tr> <tr> <td><div align="right"><span class="rotuloCampo">Estado: </span> </div></td> <td><html:text property="value(estado)" styleClass="campoTextoPadrao" readonly="true"/></td> </tr> <tr> <td colspan="7"><span class="rotuloCampo">Telefones:</span></td> </tr> <tr> <td ><div align="right"><span class="rotuloCampo">Residencial: </span> </div></td> <td ><html:text property="value(telResidencial)" styleClass="campoTextoPequeno" onchange="return mascara_numero(this,event)" onkeypress="return mascara_numero(this,event)" readonly="true"/></td> <td colspan="7"></td> </tr> <tr> <td><div align="right"><span class="rotuloCampo">Comercial:</span> </div></td> <td><html:text property="value(telComercial)" styleClass="campoTextoPequeno" onchange="return mascara_numero(this,event)" onkeypress="return mascara_numero(this,event)" readonly="true"/></td> <td colspan="7"></td> </tr> <tr> <td><div align="right"><span class="rotuloCampo">Outros:</span> </div></td> <td><html:text property="value(telOutros)" styleClass="campoTextoPadrao" readonly="true"/></td> <td colspan="7"></td> </tr> <tr> <td colspan="9"> </td> </tr> </table> <%}%> <SCRIPT> function executeVisualizar(){ document.forms[0].auxiliarHidden.value = "visualizar"; document.forms[0].submit(); } function executeExcluir(){ document.forms[0].auxiliarHidden.value = "excluir";
198
if (confirm("Você realmente deseja excluir esse aluno?")){ document.forms[0].submit(); } } </SCRIPT> </center> </html:form> </BODY> </html:html> Arquivo gerarRelatorio.jsp: <%@ taglib uri="/WEB-INF/struts_tld/struts-bean.tld" prefix="bean" %> <%@ taglib uri="/WEB-INF/struts_tld/struts-html.tld" prefix="html" %> <%@ taglib uri="/WEB-INF/struts_tld/struts-logic.tld" prefix="logic" %> <link href="folhaEstilo/estiloCoral.css" rel="stylesheet" type="text/css"> <SCRIPT language="JavaScript" type="text/javascript" src="javascript/funcoesJavaScript.js"></SCRIPT> <html:html> <BODY bgcolor='#00CC00'> <html:form action="/gerarRelatorioAction.do" method="post"> <center> <h2><font color="#0000FF">Geração de Relatório</font> </h2> <br> <table bgcolor="#009900" border="1" bordercolor="#009966" cellpadding="0" cellspacing="0" > <tr> <td><span class="rotuloCampo">Gerar Relatório por: </span></td> <td colspan="3" align="left"></td> </tr> <tr> <td colspan="3"> </td> </tr> <tr> <td colspan="3"> <html:radio property="value(relatorio)" value="1" /> <span class="rotuloCampo">nome, email e Data de Inclusão</span> </td> </tr> <tr> <td colspan="3"> <html:radio property="value(relatorio)" value="2" />
199
<span class="rotuloCampo">nome, curso, matricula e Data de Inclusão</span> </td> </tr> <tr> <td colspan="3"> <html:radio property="value(relatorio)" value="3" /> <span class="rotuloCampo">nome, grupo, nome artístico e Data de Inclusão</span> </td> </tr> <tr> <td colspan="3"> <html:radio property="value(relatorio)" value="4" /> <span class="rotuloCampo">nome, naipe, cantando_no e Data de Inclusão</span> </td> </tr> <tr> <td colspan="3"> <html:radio property="value(relatorio)" value="5" /> <span class="rotuloCampo">nome, email, naturalidade, rg e Data de Inclusão</span> </td> </tr> <%--html:select property="value(id)" styleClass="campo_select_maior"> <html:options collection="relatoriosList" property="id" labelProperty="nome" /> </html:select--%> <tr> <td colspan="3"> </td> </tr> <tr> <td colspan="3"><center><html:submit value="Gerar"/></center></td> </tr> </table> </center> </html:form> </BODY> </html:html> Arquivo index.jsp:
200
<HTML> <HEAD> <TITLE>Página Inicial</TITLE> </HEAD> <FRAMESET COLS="20%,80%"> <FRAME NAME="paginaSudoeste.jsp" SCROLLING="No" SRC="formLoginAction.do" NORESIZE> <FRAMESET ROWS="15%,85%"> <FRAME NAME="paginaNordeste.jsp" SCROLLING="No" SRC="principal/paginaNordeste.jsp" NORESIZE> <FRAME NAME="paginaSudeste.jsp" SRC="principal/paginaSudeste.jsp" NORESIZE> </FRAMESET> </FRAMESET> <NOFRAMES> <BODY> <P> </BODY></NOFRAMES></HTML> Arquivo paginaDeErro.jsp: <%@ page contentType="text/html; charset=iso-8859-1" language="java" import="java.sql.*" errorPage="" %> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <link href="folhaEstilo/estiloCoral.css" rel="stylesheet" type="text/css"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> <title>Erro</title> </head> <body bgcolor='#00CC00'> <BR> <h2 align="center"><font color="#0000FF">Você não tem permissão para acessar essa página.</font> </h2> <BR> <p align="center"><a href="index.jsp" target="_parent">página inicial</a></p> </body> </html> Arquivo relatorioGerado.jsp:
201
<%@ page contentType="text/html; charset=iso-8859-1" language="java" import="java.sql.*" errorPage="" %> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> <title>Dados Alterados</title> </head> <BODY bgcolor='#00CC00'> <BR> <h2 align="center"><font color="#0000FF">Relatório Gerado com Sucesso.</font> </h2> </body> </html> Arquivo sair.jsp: <% request.getSession().removeAttribute("pessoaAutenticada");%> <jsp:forward page="/index.jsp"/> Arquivo senhaAlterada.jsp: <%@ page contentType="text/html; charset=iso-8859-1" language="java" import="java.sql.*" errorPage="" %> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> <title>Dados Alterados</title> </head> <BODY bgcolor='#00CC00'> <BR> <h2 align="center"><font color="#0000FF">Senha Alterada com Sucesso.</font> </h2> </body>