laboratório 04
DESCRIPTION
Laboratório 04 de Programação VITRANSCRIPT
Laboratório 04 de Programação VI
Professor Everson Mauda Valor: 1 ponto
Quantidade de Integrantes para realizar o trabalho
Este laboratório deverá ser realizado com a mesma dupla do Laboratório 2.
O objetivo final desta disciplina é criar um software na linguagem de programação Java que possua todos
os itens básicos de um software de mercado. Dessa forma esse semestre será criado um sistema chamado
TicketsEventosBSI, o qual será responsável por gerenciar a criação e venda de tickets para eventos.
Especificação do Laboratório para a Camada View – Parte 1
O objetivo deste laboratório será a criação da interface gráfica utilizando o framework do Java Server
Faces. Para iniciar será necessário realizar o download do Servidor JBoss e configurá-lo dentro do Eclipse.
Existe um documento chamado configuração de um Projeto JSF que possui os passos para realizar essa
configuração.
Um ponto a ser citado é a utilização dos componentes da biblioteca Prime Faces. Existem diversos
componentes disponíveis para serem utilizados nas telas do Projeto. Para ver em mais detalhes os
componentes é necessário acessar o Show Case do Prime Faces na http://www.primefaces.org/showcase/
A maioria das telas a serem criadas nesse projeto serão do estilo CRUD, ou seja, deverão realizar o
cadastro, edição, remoção e busca de uma entidade ou conjunto de entidades. Além disso cada CRUD será
dividido em duas telas. A primeira tela consiste em um filtro de informações sobre uma entidade e um
result set com os resultados da pesquisa realizada sobre o filtro. A partir da seleção de uma das linhas é
possível acessar as opções de edição e remoção. Independente do filtro é possível cadastrar uma entidade
a qualquer momento.
As funcionalidades de inserção, edição e remoção são realizadas na segunda tela. Essa segunda tela terá os
campos necessários para realizar essas operações. Dependendo da funcionalidade alguns dados e
informações deverão ser preenchidas ao carregar a tela. Cada uma das telas terá um ManagedBean, assim
para criar um CRUD completo deverão haver 2 MBs.
Todos os MBs deverão estar no seguinte pacote:
- br.pucpr.bsi.prog6.ticketsEventosBSI.view.mb
Todas as páginas XHTML deverão estar na pasta:
- src > main > webapp > paginas
Existem vários recursos que podem ser utilizados, como CSS, Imagens e arquivos Java Script
- src > main > webapp > resources > css
- src > main > webapp > resources > images
Configuração do Servidor JBoss dentro da IDE Eclipse
Para realizar a configuração do servidor JBoss dentro da IDE Eclipse, favor verificar o seguinte tutorial
http://www.mauda.com.br/?p=606
O Fluxo Básico de uma Requisição no Projeto:
1. O Usuário acessa uma determinada funcionalidade do sistema na página XHTML que está
renderizada em seu Browser.
o Exemplo: Clica no botão Salvar da página manterCiaAerea.jsf
2. O Sistema, através da biblioteca JSF, chega a um método Action de um ManagedBean, o qual é o
correspondente do que está codificado na ação da funcionalidade clicada pelo Usuário.
o Exemplo: A página XHTML manterCiaAerea.jsf, através da biblioteca JSF, chama o método
salvar() do ManagedBean chamado ManterCiaAereaMB.
3. O Sistema, através do método action do MB, obtém uma instância do Business Controller o qual
deseja realizar uma ação de validação.
o Exemplo: O ManagedBeanManterCiaAereaMB, obtém a instância da classe CiaAereaBC,
através do método getInstance() e com a instância chama os métodos
validateForDataModification(CiaAerea) einsert(CiaAerea)
4. O Sistema, através do método da Business Controller, obtém uma instância do Data Access Object
o qual deseja realizar uma ação no Banco de Dados.
o Exemplo: A Business ControllerCiaAereaBC, obtém a instância da classe CiaAereaDAO,
através do método getInstance() e com a instância chama o método persist(CiaAerea)
5. Ao persistir os dados, o fluxo de execução retornará da classe DAO para a classe BC, e da classe BC
para a classe MB, o qual irá atualizar certas informações para serem renderizadas novamente na
tela e retornar o fluxo de execução para o JSF.
Especifição das Telas
Como já explicado anteriormente deverão ser criadas 2 telas para cada CRUD necessário. Essas telas são
compostas de ManagedBeans e ainda é necessário escrever as frases de português e inglês para a
internacionalização do sistema. O layout da tela é definido no arquivo layoutTeste.xhtml
Todos os labels do sistema estão definidos no arquivo Arquivo de Labels do Sistema.docx
A nossa tela principal terá o seguinte formato:
1. Menu do Sistema
a. Todos os itens do menu deverão ser cadastrados a partir da página menu.xhtml
2. Idiomas do Sistema
a. Os idiomas possíveis no sistema são o português e o inglês. Todas os labels e mensagens
deverão ser cadastrados nos arquivos messages_pt_BR.properties e
messages_en_US.properties
3. Rodapé
a. Deverá ser inserido os nomes dos alunos que estão realizando o trabalho
4. Tela atual do Sistema
a. Representa a tela em execução no momento pelo usuário
1 2
3
4
CRUD Artista - Tela 1 - Tela pesquisarArtista.xhtml
Tela responsável por realizar a pesquisa de Artistas. Ela possui um filtro de pesquisa com o campo nome,
onde é necessário digitar um nome para realizar a pesquisa a partir do botão Pesquisar. Caso o campo
nome não esteja preenchido será apresentada a mensagem ER0001.
Após realizar a pesquisa a informação retornada é exibida em um dataTable, o qual retorna 3 botões com
ações para serem realizadas ao selecionar uma linha. Caso uma linha não seja selecionada será
apresentada a mensagem ER0002. Essas ações irão redirecionar o usuário para a Tela 2 – Tela
manterArtista, a qual terá certas características de acordo com a funcionalidade escolhida.
Tela 1 – Pesquisar Artista Tela 1 – Pesquisar Artista após a pesquisa
O filtro de pesquisa dessa tela é composto pelos seguintes campos:
Nome
ID nomeArtista
idLabel Nome
Componente JSF p:inputText
Tipo Alfanumérico (AN)
Tamanho 50
Máscara Texto à esquerda
Obrigatório Sim
Regra Validação Não possui
Essa tela é composta pelos seguintes botões:
ID idLabel
Evento no MB
PesquisarCiaAereaMB
Ajax Tela Destino
btnEditar editar editar() N manterArtista
btnExcluir excluir excluir() N manterArtista
btnPesquisar pesquisar pesquisar() S Mesma Tela
btnVisualizar visualizar visualizar() N manterArtista
Essa tela é composta por um dataset que contém os seguintes campos:
Campo Tipo Tam Máscara
Nome do Artista AN 50 Centralizado
CRUD Artista - Tela 2 - Tela manterArtista.xhtml
Tela responsável por realizar as operações de Crud sobre uma instância da classe Artista. Essa tela pode ser
utilizada tanto para visualizar informações de um Artista, quanto para preencher/editar informações deste.
Essa tela possui um campo nome. Existe um botão Salvar, que irá realizar a operação correspondente ao
estado da tela, inserir, atualizar, deletar. Esse botão não deve aparecer quando a operação for de
visualização. Caso o usuário tente salvar um artista sem preencher os campos obrigatórios o sistema
deverá exibir as mensagens de acordo com as regras de validação do Laboratório 1 camada de Business
Controller.
Além disso existe outro botão, Voltar, o qual não deve realizar a ação desejada da tela e retornar para a
tela de pesquisarArtista. Ao retornar, a tela deve estar com o mesmo filtro e busca por resultados,
simulando assim que o usuário entrou na tela, realizou a edição e retornou para a tela de pesquisa com a
mesma pesquisa feita anteriormente, sem perda de informações. Essa tela será composta pelos seguintes
campos:
Nome
ID nomeArtista
idLabel Nome
Componente JSF p:inputText
Tipo Alfanumérico
Tamanho 50
Máscara Texto à esquerda
Obrigatório Sim
RegraValidação Não possui
Tela 2 – Manter Artista ao clicar na opção Artista > Cadastrar
Essa tela é composta pelos seguintes botões:
ID idLabel
Evento no MB
ManterArtistaMB
Ajax Tela Destino
btnSalvar salvar salvar() N pesquisarArtista
btnVoltar Voltar voltar() N pesquisarArtista
CRUD Diretor - Tela 3 - Tela pesquisarDiretor.xhtml
Tela responsável por realizar a pesquisa de Diretores. Esta tela possui um filtro de pesquisa com o campo
nome, onde é necessário digitar um nome para realizar a pesquisa a partir do botão Pesquisar. Caso o
campo nome não esteja preenchido será apresentada a mensagem ER0001.
Após realizar a pesquisa a informação retornada é exibida em um dataTable, o qual retorna 3 botões com
ações para serem realizadas ao selecionar uma linha. Caso uma linha não seja selecionada será
apresentada a mensagem ER0002. Essas ações irão redirecionar o usuário para a Tela 4 – Tela
manterDiretor, a qual terá certas características de acordo com a funcionalidade escolhida.
Tela 3 – Pesquisar Diretor Tela 3 – Pesquisar Diretor após a pesquisa
O filtro de pesquisa dessa tela é composto pelos seguintes campos:
Nome
ID nomeDiretor
idLabel Nome
Componente JSF p:inputText
Tipo Alfanumérico (AN)
Tamanho 50
Máscara Texto à esquerda
Obrigatório Sim
Regra Validação Não possui
Essa tela é composta pelos seguintes botões:
ID idLabel
Evento no MB
PesquisarDiretorMB
Ajax Tela Destino
btnEditar editar editar() N manterDiretor
btnExcluir excluir excluir() N manterDiretor
btnPesquisar pesquisar pesquisar() S Mesma Tela
btnVisualizar visualizar visualizar() N manterDiretor
Essa tela é composta por um dataset que contém os seguintes campos:
Campo Tipo Tam Máscara
Nome do Diretor AN 50 Centralizado
CRUD Diretor - Tela 4 - Tela manterDiretor.xhtml
Tela responsável por realizar as operações de Crud sobre uma instância da classe Diretor. Essa tela pode
ser utilizada tanto para visualizar informações de um Diretor, quanto para preencher/editar informações
deste. Essa tela possui um campo nome. Existe um botão Salvar, que irá realizar a operação
correspondente ao estado da tela, inserir, atualizar, deletar. Esse botão não deve aparecer quando a
operação for de visualização. Caso o usuário tente salvar um diretor sem preencher os campos obrigatórios
o sistema deverá exibir as mensagens de acordo com as regras de validação do Laboratório 1 camada de
Business Controller.
Além disso existe outro botão, Voltar, o qual não deve realizar a ação desejada da tela e retornar para a
tela de pesquisarDiretor. Ao retornar, a tela deve estar com o mesmo filtro e busca por resultados,
simulando assim que o usuário entrou na tela, realizou a edição e retornou para a tela de pesquisa com a
mesma pesquisa feita anteriormente, sem perda de informações.
Tela 4 – Manter Diretor ao clicar na opção Diretor > Cadastrar
Essa tela será composta pelos seguintes campos:
Nome
ID nomeDiretor
idLabel Nome
Componente JSF p:inputText
Tipo Alfanumérico
Tamanho 50
Máscara Texto à esquerda
Obrigatório Sim
RegraValidação Não possui
Essa tela é composta pelos seguintes botões:
ID idLabel
Evento no MB
ManterDiretorMB
Ajax Tela Destino
btnSalvar salvar salvar() N pesquisarDiretor
btnVoltar Voltar voltar() N pesquisarDiretor
CRUD Cliente - Tela 5 - Tela pesquisarCliente.xhtml
Tela responsável por realizar a pesquisa de Cliente. Ela possui os campos nome, email, usuário, código,
cidade e estado. É necessário preencher algum dos campos para realizar a pesquisa a partir do botão
Pesquisar. Caso contrário, será apresentada a mensagem ER0001.
Após realizar a pesquisa a informação retornada é exibida em um dataTable, o qual retorna 3 botões com
ações para serem realizadas ao selecionar uma linha. Caso uma linha não seja selecionada será
apresentada a mensagem ER0002. Essas ações irão redirecionar o usuário para a Tela 6 – Tela
manterCliente, a qual terá certas características de acordo com a funcionalidade escolhida.
Tela 7 – Pesquisar Cliente
Tela 7 – Pesquisar Cliente após a pesquisa
Essa tela é composta pelos seguintes campos:
Nome Email Usuário Código Cidade Estado
ID Nome email usuario codigo cidade estado
idLabel Nome email usuario codigo cidade estado
Componente JSF p:inputText
Tipo Alfanumérico
Tamanho 50 50 15 10 50 50
Máscara Texto à esq.
Obrigatório Ao menos um dos 6 campos deve ser preenchido
Regra Validação Não possui E-mail válido Não possui
Essa tela é composta pelos seguintes botões:
ID idLabel
Evento no MB
PesquisarClienteMB
Ajax Tela Destino
btnEditar editar editar() N manterCliente
btnExcluir excluir excluir() N manterCliente
btnPesquisar pesquisar pesquisar() S Mesma Tela
btnVisualizar visualizar visualizar() N manterCliente
Essa tela é composta por um dataset que contém os seguintes campos:
Campo Tipo Tam Máscara
Nome do Cliente AN 50 Centralizado
Email do Cliente AN 50 Centralizado
Papel do Cliente AN 50 Centralizado
Cidade / Estado AN 50/50 Centralizado
CRUD Funcionário - Tela 6 - Tela manterCliente.xhtml
Tela responsável por realizar as operações de Crud sobre uma instância da classe Cliente. Essa tela pode ser
utilizada tanto para visualizar informações sobre um Cliente, quanto para preencher/editar informações
deste. Ela possui os campos:
O nome do cliente
O email do cliente
O telefone do cliente
A data de Nascimento do cliente
O usuário do cliente
A senha do cliente
O documento do cliente
O número do cartão do cliente
A rua do endereço
O número do endereço
O complemento do endereço
O bairro do endereço
A cidade do endereço
O estado do endereço
O país do endereço
Existe um botão Salvar, que irá realizar a operação correspondente ao estado da tela, inserir, atualizar,
deletar. Esse botão não deve aparecer quando a operação for de visualização. Caso o usuário tente salvar
um Cliente sem preencher os campos obrigatórios o sistema deverá exibir as mensagens de acordo com as
regras de validação do Laboratório 1 camada de Business Controller.
Além disso, existe outro botão, Voltar, o qual não deve realizar a ação desejada da tela e retornar para a
tela de pesquisarCliente. Ao retornar, a tela deve estar com o mesmo filtro e busca por resultados,
simulando assim que o usuário entrou na tela, editou o que queria e retornou para a tela de pesquisa com
a mesma pesquisa feita anteriormente, sem perda de informações.
Tela 6 – Manter Funcionário ao clicar na opção Funcionário > Cadastrar
Essa tela será composta pelos seguintes campos:
Nome Email Telefone Data Nascimento Usuário
ID nome email telefone dataNascimento usuario
idLabel nome email telefone dataNascimento usuario
Componente
JSF p:inputText p:calendar p:inputText
Tipo Alfanumérico java.util.Date Alfanumérico
Tamanho 50 50 15 Não se Aplica 50
Máscara Texto à esq.
Obrigatório Todos os campos devem ser preenchidos
Regra Validação Não possui E-mail válido Não possui Data válida
Menor que a atual Não possui
Documento NumeroCartao Conta Corrente Rua Numero
ID documento numeroCartao contaCorrente rua numero
idLabel documento numeroCartao contaCorrente rua numero
Componente
JSF p:inputText
Tipo Alfanumérico Numérico
Tamanho 20 15 15 50
Não se
aplica
Máscara Texto à esquerda
Texto à
direita
Obrigatório Todos os campos devem ser preenchidos
Regra Validação Não possui
Complemento Bairro Cidade Estado País
ID complemento bairro cidade estado pais
idLabel complemento bairro cidade estado pais
Componente JSF p:inputText
Tipo Alfanumérico
Tamanho 50 50 50 50 50
Máscara Texto à esq.
Obrigatório Todos os campos devem ser preenchidos
Regra Validação Não possui
Essa tela é composta pelos seguintes botões:
ID idLabel
Evento no MB
ManterFuncionarioMB
Ajax Tela Destino
btnSalvar salvar salvar() N pesquisarFuncionario
btnVoltar Voltar voltar() N pesquisarFuncionario
CRUD Funcionário - Tela 7 - Tela pesquisarFuncionario.xhtml
Tela responsável por realizar a pesquisa de Funcionários. Ela possui os campos nome, email, usuário,
código, cidade e estado. É necessário preencher algum dos campos para realizar a pesquisa a partir do
botão Pesquisar. Caso contrário, será apresentada a mensagem ER0001.
Após realizar a pesquisa a informação retornada é exibida em um dataTable, o qual retorna 3 botões com
ações para serem realizadas ao selecionar uma linha. Caso uma linha não seja selecionada será
apresentada a mensagem ER0002. Essas ações irão redirecionar o usuário para a Tela 8 – Tela
manterFuncionario, a qual terá certas características de acordo com a funcionalidade escolhida.
Tela 7 – Pesquisar Funcionários
Tela 7 – Pesquisar Funcionários após a pesquisa
Essa tela é composta pelos seguintes campos:
Nome Email Usuário Código Cidade Estado
ID Nome email usuario codigo cidade estado
idLabel Nome email usuario codigo cidade estado
Componente JSF p:inputText
Tipo Alfanumérico
Tamanho 50 50 15 10 50 50
Máscara Texto à esq.
Obrigatório Ao menos um dos 6 campos deve ser preenchido
Regra Validação Não possui E-mail válido Não possui
Essa tela é composta pelos seguintes botões:
ID idLabel
Evento no MB
PesquisarFuncionarioMB
Ajax Tela Destino
btnEditar editar editar() N manterFuncionario
btnExcluir excluir excluir() N manterFuncionario
btnPesquisar pesquisar pesquisar() S Mesma Tela
btnVisualizar visualizar visualizar() N manterFuncionario
Essa tela é composta por um dataset que contém os seguintes campos:
Campo Tipo Tam Máscara
Código do Funcionário AN 10 Centralizado
Nome do Funcionário AN 50 Centralizado
Email do Funcionário AN 50 Centralizado
Papel do Funcionário AN 50 Centralizado
Cidade / Estado AN 50/50 Centralizado
CRUD Funcionário - Tela 8 - Tela manterFuncionario.xhtml
Tela responsável por realizar as operações de Crud sobre uma instância da classe Funcionário. Essa tela
pode ser utilizada tanto para visualizar informações sobre um Funcionário, quanto para preencher/editar
informações deste. Ela possui os campos:
O nome do funcionário
O email do funcionário
O telefone do funcionário
A data de Nascimento do funcionário
O usuário do funcionário
A senha do funcionário
O código do funcionário
A conta corrente do funcionário
A rua do endereço
O número do endereço
O complemento do endereço
O bairro do endereço
A cidade do endereço
O estado do endereço
O país do endereço
Existe um botão Salvar, que irá realizar a operação correspondente ao estado da tela, inserir, atualizar,
deletar. Esse botão não deve aparecer quando a operação for de visualização. Caso o usuário tente salvar
um Funcionário sem preencher os campos obrigatórios o sistema deverá exibir as mensagens de acordo
com as regras de validação do Laboratório 1 camada de Business Controller.
Além disso, existe outro botão, Voltar, o qual não deve realizar a ação desejada da tela e retornar para a
tela de pesquisarFuncionário. Ao retornar, a tela deve estar com o mesmo filtro e busca por resultados,
simulando assim que o usuário entrou na tela, editou o que queria e retornou para a tela de pesquisa com
a mesma pesquisa feita anteriormente, sem perda de informações.
Tela 6 – Manter Funcionário ao clicar na opção Funcionário > Cadastrar
Essa tela será composta pelos seguintes campos:
Nome Email Telefone Data Nascimento Usuário
ID nome email telefone dataNascimento usuario
idLabel nome email telefone dataNascimento usuario
Componente
JSF p:inputText p:calendar p:inputText
Tipo Alfanumérico java.util.Date Alfanumérico
Tamanho 50 50 15 Não se Aplica 50
Máscara Texto à esq.
Obrigatório Todos os campos devem ser preenchidos
Regra Validação Não possui E-mail válido Não possui Data válida
Menor que a atual Não possui
Senha Código Conta Corrente Rua Numero
ID senha Código contaCorrente rua numero
idLabel senha Código contaCorrente rua numero
Componente JSF p:password p:inputText
Tipo Alfanumérico Numérico
Tamanho 50 10 15 50 Não se aplica
Máscara Texto à esquerda Texto à direita
Obrigatório Todos os campos devem ser preenchidos
Regra Validação Não possui
Complemento Bairro Cidade Estado País
ID complemento bairro cidade estado pais
idLabel complemento bairro cidade estado pais
Componente JSF p:inputText
Tipo Alfanumérico
Tamanho 50 50 50 50 50
Máscara Texto à esq.
Obrigatório Todos os campos devem ser preenchidos
Regra Validação Não possui
Essa tela é composta pelos seguintes botões:
ID idLabel
Evento no MB
ManterFuncionarioMB
Ajax Tela Destino
btnSalvar salvar salvar() N pesquisarFuncionario
btnVoltar Voltar voltar() N pesquisarFuncionario
CompositeComponent Endereço - endereco.xhtml
Componente JSF, baseado na especificação CompositeComponent. O objetivo deste componente é
representar como um componente todos os atributos correspondentes a um objeto Endereco. Esse objeto
deverá ser passado como parâmetro para o componente. Além disso, a implementação deste componente
consistirá nos campos já construídos para a Tela 6 – manterCliente.xhtml e Tela 8 –
manterFuncionario.xhtml.
Esse componente deverá seguir a especificação CompositeComponent do JSF. Um exemplo de como criar
um componente está descrito na seguinte url: https://www.mauda.com.br/?p=133
Esse componente não possuirá nenhum botão de ação, somente os campos necessários para o objeto
Endereço, conforme quadro abaixo:
Numero Rua Complemento Bairro Cidade Estado País
ID numero rua complemento bairro cidade estado pais
idLabel numero rua complemento bairro cidade estado pais
Comp. JSF p:inputText
Tipo Numérico Alfanumérico
Tamanho Não se aplica 50
Máscara Texto à direita Texto à esquerda
Obrigatório Sim
Regra Valid. Não possui
O namespace a ser definido para o Projeto será ticketsEventos com o acrônimo te:
xmlns:te="http://java.sun.com/jsf/composite/ticketsEventos"
Assim dentro da pasta resources deverá ser criada uma pasta com o nome ticketsEventos. Um exemplo de
utilização do componente é apresentado no código abaixo:
<te:endereço endereco="#{manterFuncionarioMB.funcionario.endereco}"/>
Como é possível perceber esse componente receberá um objeto endereço, assim o tipo do atributo da
interface do componente deverá ser um endereço.
Um detalhe importante é que na Tela 6 – manterCliente.xhtml e Tela 8 – manterFuncionario.xhtml deverá
ser substituído a parte que tratam os campos do Endereço pelo componente aqui criado.