Você está na página 1de 18

Laboratrio 04 de Programao VI

Professor Everson Mauda

Valor: 1 ponto

Quantidade de Integrantes para realizar o trabalho


Este laboratrio dever ser realizado com a mesma dupla do Laboratrio 2.
O objetivo final desta disciplina criar um software na linguagem de programao Java que possua todos
os itens bsicos de um software de mercado. Dessa forma esse semestre ser criado um sistema chamado
TicketsEventosBSI, o qual ser responsvel por gerenciar a criao e venda de tickets para eventos.

Especificao do Laboratrio para a Camada View Parte 1


O objetivo deste laboratrio ser a criao da interface grfica utilizando o framework do Java Server
Faces. Para iniciar ser necessrio realizar o download do Servidor JBoss e configur-lo dentro do Eclipse.
Existe um documento chamado configurao de um Projeto JSF que possui os passos para realizar essa
configurao.
Um ponto a ser citado a utilizao dos componentes da biblioteca Prime Faces. Existem diversos
componentes disponveis para serem utilizados nas telas do Projeto. Para ver em mais detalhes os
componentes necessrio acessar o Show Case do Prime Faces na http://www.primefaces.org/showcase/
A maioria das telas a serem criadas nesse projeto sero do estilo CRUD, ou seja, devero realizar o
cadastro, edio, remoo e busca de uma entidade ou conjunto de entidades. Alm disso cada CRUD ser
dividido em duas telas. A primeira tela consiste em um filtro de informaes sobre uma entidade e um
result set com os resultados da pesquisa realizada sobre o filtro. A partir da seleo de uma das linhas
possvel acessar as opes de edio e remoo. Independente do filtro possvel cadastrar uma entidade
a qualquer momento.
As funcionalidades de insero, edio e remoo so realizadas na segunda tela. Essa segunda tela ter os
campos necessrios para realizar essas operaes. Dependendo da funcionalidade alguns dados e
informaes devero ser preenchidas ao carregar a tela. Cada uma das telas ter um ManagedBean, assim
para criar um CRUD completo devero haver 2 MBs.
Todos os MBs devero estar no seguinte pacote:
- br.pucpr.bsi.prog6.ticketsEventosBSI.view.mb
Todas as pginas XHTML devero estar na pasta:
- src > main > webapp > paginas
Existem vrios recursos que podem ser utilizados, como CSS, Imagens e arquivos Java Script
- src > main > webapp > resources > css
- src > main > webapp > resources > images

Configurao do Servidor JBoss dentro da IDE Eclipse


Para realizar a configurao do servidor JBoss dentro da IDE Eclipse, favor verificar o seguinte tutorial
http://www.mauda.com.br/?p=606

O Fluxo Bsico de uma Requisio no Projeto:


1. O Usurio acessa uma determinada funcionalidade do sistema na pgina XHTML que est
renderizada em seu Browser.
o Exemplo: Clica no boto Salvar da pgina manterCiaAerea.jsf
2. O Sistema, atravs da biblioteca JSF, chega a um mtodo Action de um ManagedBean, o qual o
correspondente do que est codificado na ao da funcionalidade clicada pelo Usurio.
o Exemplo: A pgina XHTML manterCiaAerea.jsf, atravs da biblioteca JSF, chama o mtodo
salvar() do ManagedBean chamado ManterCiaAereaMB.
3. O Sistema, atravs do mtodo action do MB, obtm uma instncia do Business Controller o qual
deseja realizar uma ao de validao.
o Exemplo: O ManagedBeanManterCiaAereaMB, obtm a instncia da classe CiaAereaBC,
atravs do mtodo getInstance() e com a instncia chama os mtodos
validateForDataModification(CiaAerea) einsert(CiaAerea)
4. O Sistema, atravs do mtodo da Business Controller, obtm uma instncia do Data Access Object
o qual deseja realizar uma ao no Banco de Dados.
o Exemplo: A Business ControllerCiaAereaBC, obtm a instncia da classe CiaAereaDAO,
atravs do mtodo getInstance() e com a instncia chama o mtodo persist(CiaAerea)
5. Ao persistir os dados, o fluxo de execuo retornar da classe DAO para a classe BC, e da classe BC
para a classe MB, o qual ir atualizar certas informaes para serem renderizadas novamente na
tela e retornar o fluxo de execuo para o JSF.

Especifio das Telas


Como j explicado anteriormente devero ser criadas 2 telas para cada CRUD necessrio. Essas telas so
compostas de ManagedBeans e ainda necessrio escrever as frases de portugus e ingls para a
internacionalizao do sistema. O layout da tela definido no arquivo layoutTeste.xhtml
Todos os labels do sistema esto definidos no arquivo Arquivo de Labels do Sistema.docx
A nossa tela principal ter o seguinte formato:
1

1. Menu do Sistema
a. Todos os itens do menu devero ser cadastrados a partir da pgina menu.xhtml
2. Idiomas do Sistema
a. Os idiomas possveis no sistema so o portugus e o ingls. Todas os labels e mensagens
devero
ser
cadastrados
nos
arquivos
messages_pt_BR.properties
e
messages_en_US.properties
3. Rodap
a. Dever ser inserido os nomes dos alunos que esto realizando o trabalho
4. Tela atual do Sistema
a. Representa a tela em execuo no momento pelo usurio

CRUD Artista - Tela 1 - Tela pesquisarArtista.xhtml


Tela responsvel por realizar a pesquisa de Artistas. Ela possui um filtro de pesquisa com o campo nome,
onde necessrio digitar um nome para realizar a pesquisa a partir do boto Pesquisar. Caso o campo
nome no esteja preenchido ser apresentada a mensagem ER0001.
Aps realizar a pesquisa a informao retornada exibida em um dataTable, o qual retorna 3 botes com
aes para serem realizadas ao selecionar uma linha. Caso uma linha no seja selecionada ser
apresentada a mensagem ER0002. Essas aes iro redirecionar o usurio para a Tela 2 Tela
manterArtista, a qual ter certas caractersticas de acordo com a funcionalidade escolhida.

Tela 1 Pesquisar Artista

Tela 1 Pesquisar Artista aps a pesquisa

O filtro de pesquisa dessa tela composto pelos seguintes campos:


Nome
ID

nomeArtista

idLabel

Nome

Componente JSF

p:inputText

Tipo

Alfanumrico (AN)

Tamanho

50

Mscara

Texto esquerda

Obrigatrio

Sim

Regra Validao

No possui

Essa tela composta pelos seguintes botes:


ID

idLabel

Evento no MB

Ajax

Tela Destino

PesquisarCiaAereaMB

btnEditar

editar

editar()

manterArtista

btnExcluir

excluir

excluir()

manterArtista

btnPesquisar

pesquisar

pesquisar()

Mesma Tela

btnVisualizar

visualizar

visualizar()

manterArtista

Essa tela composta por um dataset que contm os seguintes campos:


Campo
Nome do Artista

Tipo

Tam

AN

50

Mscara
Centralizado

CRUD Artista - Tela 2 - Tela manterArtista.xhtml


Tela responsvel por realizar as operaes de Crud sobre uma instncia da classe Artista. Essa tela pode ser
utilizada tanto para visualizar informaes de um Artista, quanto para preencher/editar informaes deste.
Essa tela possui um campo nome. Existe um boto Salvar, que ir realizar a operao correspondente ao
estado da tela, inserir, atualizar, deletar. Esse boto no deve aparecer quando a operao for de
visualizao. Caso o usurio tente salvar um artista sem preencher os campos obrigatrios o sistema
dever exibir as mensagens de acordo com as regras de validao do Laboratrio 1 camada de Business
Controller.
Alm disso existe outro boto, Voltar, o qual no deve realizar a ao 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 usurio entrou na tela, realizou a edio e retornou para a tela de pesquisa com a
mesma pesquisa feita anteriormente, sem perda de informaes. Essa tela ser composta pelos seguintes
campos:
Nome
ID

nomeArtista

idLabel

Nome

Componente JSF

p:inputText

Tipo

Alfanumrico

Tamanho

50

Mscara

Texto esquerda

Obrigatrio

Sim

RegraValidao

No possui

Tela 2 Manter Artista ao clicar na opo Artista > Cadastrar


Essa tela composta pelos seguintes botes:
ID

idLabel

Evento no MB

Ajax

Tela Destino

ManterArtistaMB

btnSalvar

salvar

salvar()

pesquisarArtista

btnVoltar

Voltar

voltar()

pesquisarArtista

CRUD Diretor - Tela 3 - Tela pesquisarDiretor.xhtml


Tela responsvel por realizar a pesquisa de Diretores. Esta tela possui um filtro de pesquisa com o campo
nome, onde necessrio digitar um nome para realizar a pesquisa a partir do boto Pesquisar. Caso o
campo nome no esteja preenchido ser apresentada a mensagem ER0001.
Aps realizar a pesquisa a informao retornada exibida em um dataTable, o qual retorna 3 botes com
aes para serem realizadas ao selecionar uma linha. Caso uma linha no seja selecionada ser
apresentada a mensagem ER0002. Essas aes iro redirecionar o usurio para a Tela 4 Tela
manterDiretor, a qual ter certas caractersticas de acordo com a funcionalidade escolhida.

Tela 3 Pesquisar Diretor

Tela 3 Pesquisar Diretor aps a pesquisa

O filtro de pesquisa dessa tela composto pelos seguintes campos:


Nome
ID

nomeDiretor

idLabel

Nome

Componente JSF

p:inputText

Tipo

Alfanumrico (AN)

Tamanho

50

Mscara

Texto esquerda

Obrigatrio

Sim

Regra Validao

No possui

Essa tela composta pelos seguintes botes:


ID

idLabel

Evento no MB

Ajax

Tela Destino

PesquisarDiretorMB

btnEditar

editar

editar()

manterDiretor

btnExcluir

excluir

excluir()

manterDiretor

btnPesquisar

pesquisar

pesquisar()

Mesma Tela

btnVisualizar

visualizar

visualizar()

manterDiretor

Essa tela composta por um dataset que contm os seguintes campos:


Campo
Nome do Diretor

Tipo
AN

Tam
50

Mscara
Centralizado

CRUD Diretor - Tela 4 - Tela manterDiretor.xhtml


Tela responsvel por realizar as operaes de Crud sobre uma instncia da classe Diretor. Essa tela pode
ser utilizada tanto para visualizar informaes de um Diretor, quanto para preencher/editar informaes
deste. Essa tela possui um campo nome. Existe um boto Salvar, que ir realizar a operao
correspondente ao estado da tela, inserir, atualizar, deletar. Esse boto no deve aparecer quando a
operao for de visualizao. Caso o usurio tente salvar um diretor sem preencher os campos obrigatrios
o sistema dever exibir as mensagens de acordo com as regras de validao do Laboratrio 1 camada de
Business Controller.

Alm disso existe outro boto, Voltar, o qual no deve realizar a ao 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 usurio entrou na tela, realizou a edio e retornou para a tela de pesquisa com a
mesma pesquisa feita anteriormente, sem perda de informaes.

Tela 4 Manter Diretor ao clicar na opo Diretor > Cadastrar


Essa tela ser composta pelos seguintes campos:
Nome
ID

nomeDiretor

idLabel

Nome

Componente JSF

p:inputText

Tipo

Alfanumrico

Tamanho

50

Mscara

Texto esquerda

Obrigatrio

Sim

RegraValidao

No possui

Essa tela composta pelos seguintes botes:


ID

idLabel

Evento no MB

Ajax

Tela Destino

ManterDiretorMB

btnSalvar

salvar

salvar()

pesquisarDiretor

btnVoltar

Voltar

voltar()

pesquisarDiretor

CRUD Cliente - Tela 5 - Tela pesquisarCliente.xhtml


Tela responsvel por realizar a pesquisa de Cliente. Ela possui os campos nome, email, usurio, cdigo,
cidade e estado. necessrio preencher algum dos campos para realizar a pesquisa a partir do boto
Pesquisar. Caso contrrio, ser apresentada a mensagem ER0001.
Aps realizar a pesquisa a informao retornada exibida em um dataTable, o qual retorna 3 botes com
aes para serem realizadas ao selecionar uma linha. Caso uma linha no seja selecionada ser
apresentada a mensagem ER0002. Essas aes iro redirecionar o usurio para a Tela 6 Tela
manterCliente, a qual ter certas caractersticas de acordo com a funcionalidade escolhida.

Tela 7 Pesquisar Cliente

Tela 7 Pesquisar Cliente aps a pesquisa

Essa tela composta pelos seguintes campos:


Nome

Email

Usurio

Cdigo

Cidade

Estado

ID

Nome

email

usuario

codigo

cidade

estado

idLabel

Nome

email

usuario

codigo

cidade

estado

10

50

50

Componente JSF

p:inputText

Tipo

Alfanumrico

Tamanho

50

50

15

Mscara

Texto esq.

Obrigatrio

Ao menos um dos 6 campos deve ser preenchido

Regra Validao

No possui

E-mail vlido

No possui

Essa tela composta pelos seguintes botes:


ID

idLabel

Evento no MB

Ajax Tela Destino

PesquisarClienteMB

btnEditar

editar

editar()

manterCliente

btnExcluir

excluir

excluir()

manterCliente

btnPesquisar pesquisar pesquisar()

Mesma Tela

btnVisualizar

manterCliente

visualizar

visualizar()

Essa tela composta por um dataset que contm os seguintes campos:


Campo
Tipo
Tam
Mscara
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 Funcionrio - Tela 6 - Tela manterCliente.xhtml


Tela responsvel por realizar as operaes de Crud sobre uma instncia da classe Cliente. Essa tela pode ser
utilizada tanto para visualizar informaes sobre um Cliente, quanto para preencher/editar informaes
deste. Ela possui os campos:

O nome do cliente
O email do cliente
O telefone do cliente
A data de Nascimento do cliente
O usurio do cliente
A senha do cliente
O documento do cliente
O nmero do carto do cliente
A rua do endereo
O nmero do endereo
O complemento do endereo
O bairro do endereo
A cidade do endereo
O estado do endereo
O pas do endereo

Existe um boto Salvar, que ir realizar a operao correspondente ao estado da tela, inserir, atualizar,
deletar. Esse boto no deve aparecer quando a operao for de visualizao. Caso o usurio tente salvar
um Cliente sem preencher os campos obrigatrios o sistema dever exibir as mensagens de acordo com as
regras de validao do Laboratrio 1 camada de Business Controller.
Alm disso, existe outro boto, Voltar, o qual no deve realizar a ao 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 usurio entrou na tela, editou o que queria e retornou para a tela de pesquisa com
a mesma pesquisa feita anteriormente, sem perda de informaes.

Tela 6 Manter Funcionrio ao clicar na opo Funcionrio > Cadastrar

Essa tela ser composta pelos seguintes campos:


Nome

Email

Telefone

Data Nascimento

Usurio

ID

nome

email

telefone

dataNascimento

usuario

idLabel

nome

email

telefone

dataNascimento

usuario

Componente
JSF

p:inputText

p:calendar

p:inputText

Tipo

Alfanumrico

java.util.Date

Alfanumrico

No se Aplica

50

Tamanho

50

50

15

Mscara

Texto esq.

Obrigatrio
Regra Validao

Todos os campos devem ser preenchidos


No possui

E-mail vlido

Data vlida

No possui

Menor que a atual

No possui

Documento

NumeroCartao

Conta Corrente

Rua

ID

documento

numeroCartao

contaCorrente

rua

numero

idLabel

documento

numeroCartao

contaCorrente

rua

numero

Componente

p:inputText

JSF
Tipo
Tamanho

Mscara
Obrigatrio
Regra Validao

Numero

Alfanumrico

Numrico
No se

20

15

15

50

aplica
Texto

Texto esquerda
Todos os campos devem ser preenchidos
No possui

direita

Complemento

Bairro

Cidade

Estado

Pas

ID

complemento

bairro

cidade

estado

pais

idLabel

complemento

bairro

cidade

estado

pais

50

50

Componente JSF

p:inputText

Tipo

Alfanumrico

Tamanho

50

Mscara

50

50

Texto esq.

Obrigatrio

Todos os campos devem ser preenchidos

Regra Validao

No possui

Essa tela composta pelos seguintes botes:


ID

idLabel

Evento no MB

Ajax

Tela Destino

ManterFuncionarioMB

btnSalvar

salvar

salvar()

pesquisarFuncionario

btnVoltar

Voltar

voltar()

pesquisarFuncionario

CRUD Funcionrio - Tela 7 - Tela pesquisarFuncionario.xhtml


Tela responsvel por realizar a pesquisa de Funcionrios. Ela possui os campos nome, email, usurio,
cdigo, cidade e estado. necessrio preencher algum dos campos para realizar a pesquisa a partir do
boto Pesquisar. Caso contrrio, ser apresentada a mensagem ER0001.
Aps realizar a pesquisa a informao retornada exibida em um dataTable, o qual retorna 3 botes com
aes para serem realizadas ao selecionar uma linha. Caso uma linha no seja selecionada ser
apresentada a mensagem ER0002. Essas aes iro redirecionar o usurio para a Tela 8 Tela
manterFuncionario, a qual ter certas caractersticas de acordo com a funcionalidade escolhida.

Tela 7 Pesquisar Funcionrios

Tela 7 Pesquisar Funcionrios aps a pesquisa


Essa tela composta pelos seguintes campos:
Nome

Email

Usurio

Cdigo

Cidade

Estado

ID

Nome

email

usuario

codigo

cidade

estado

idLabel

Nome

email

usuario

codigo

cidade

estado

10

50

50

Componente JSF

p:inputText

Tipo

Alfanumrico

Tamanho

50

50

Mscara

15
Texto esq.

Obrigatrio

Ao menos um dos 6 campos deve ser preenchido

Regra Validao

No possui

E-mail vlido

No possui

Essa tela composta pelos seguintes botes:


ID

idLabel

Evento no MB

Ajax Tela Destino

PesquisarFuncionarioMB

btnEditar

editar

editar()

manterFuncionario

btnExcluir

excluir

excluir()

manterFuncionario

btnPesquisar pesquisar pesquisar()

Mesma Tela

btnVisualizar

manterFuncionario

visualizar

visualizar()

Essa tela composta por um dataset que contm os seguintes campos:


Campo
Tipo
Tam
Mscara
Cdigo do Funcionrio

AN

10

Centralizado

Nome do Funcionrio

AN

50

Centralizado

Email do Funcionrio

AN

50

Centralizado

Papel do Funcionrio

AN

50

Centralizado

Cidade / Estado

AN

50/50

Centralizado

CRUD Funcionrio - Tela 8 - Tela manterFuncionario.xhtml


Tela responsvel por realizar as operaes de Crud sobre uma instncia da classe Funcionrio. Essa tela
pode ser utilizada tanto para visualizar informaes sobre um Funcionrio, quanto para preencher/editar
informaes deste. Ela possui os campos:

O nome do funcionrio
O email do funcionrio
O telefone do funcionrio
A data de Nascimento do funcionrio
O usurio do funcionrio
A senha do funcionrio
O cdigo do funcionrio
A conta corrente do funcionrio
A rua do endereo
O nmero do endereo
O complemento do endereo
O bairro do endereo
A cidade do endereo
O estado do endereo
O pas do endereo

Existe um boto Salvar, que ir realizar a operao correspondente ao estado da tela, inserir, atualizar,
deletar. Esse boto no deve aparecer quando a operao for de visualizao. Caso o usurio tente salvar
um Funcionrio sem preencher os campos obrigatrios o sistema dever exibir as mensagens de acordo
com as regras de validao do Laboratrio 1 camada de Business Controller.
Alm disso, existe outro boto, Voltar, o qual no deve realizar a ao desejada da tela e retornar para a
tela de pesquisarFuncionrio. Ao retornar, a tela deve estar com o mesmo filtro e busca por resultados,
simulando assim que o usurio entrou na tela, editou o que queria e retornou para a tela de pesquisa com
a mesma pesquisa feita anteriormente, sem perda de informaes.

Tela 6 Manter Funcionrio ao clicar na opo Funcionrio > Cadastrar


Essa tela ser composta pelos seguintes campos:
Nome

Email

Telefone

Data Nascimento

Usurio

ID

nome

email

telefone

dataNascimento

usuario

idLabel

nome

email

telefone

dataNascimento

usuario

Componente
JSF

p:inputText

p:calendar

p:inputText

Tipo

Alfanumrico

java.util.Date

Alfanumrico

No se Aplica

50

Tamanho

50

50

Mscara

Texto esq.

Obrigatrio
Regra Validao

15

Todos os campos devem ser preenchidos


No possui

E-mail vlido

No possui

Data vlida
Menor que a atual

No possui

Senha

Cdigo

Conta Corrente

Rua

ID

senha

Cdigo

contaCorrente

rua

numero

idLabel

senha

Cdigo

contaCorrente

rua

numero

Componente JSF

p:password

p:inputText

Tipo

Alfanumrico

Tamanho

50

10

Mscara

Numrico
15

50

Texto esquerda

Obrigatrio

Numero

No se aplica
Texto direita

Todos os campos devem ser preenchidos

Regra Validao

No possui

Complemento

Bairro

Cidade

Estado

Pas

ID

complemento

bairro

cidade

estado

pais

idLabel

complemento

bairro

cidade

estado

pais

50

50

Componente JSF

p:inputText

Tipo

Alfanumrico

Tamanho

50

Mscara

50

50

Texto esq.

Obrigatrio

Todos os campos devem ser preenchidos

Regra Validao

No possui

Essa tela composta pelos seguintes botes:


ID

idLabel

Evento no MB

Ajax

Tela Destino

ManterFuncionarioMB

btnSalvar

salvar

salvar()

pesquisarFuncionario

btnVoltar

Voltar

voltar()

pesquisarFuncionario

CompositeComponent Endereo - endereco.xhtml


Componente JSF, baseado na especificao CompositeComponent. O objetivo deste componente
representar como um componente todos os atributos correspondentes a um objeto Endereco. Esse objeto
dever ser passado como parmetro para o componente. Alm disso, a implementao deste componente
consistir nos campos j construdos para a Tela 6 manterCliente.xhtml e Tela 8
manterFuncionario.xhtml.
Esse componente dever seguir a especificao CompositeComponent do JSF. Um exemplo de como criar
um componente est descrito na seguinte url: https://www.mauda.com.br/?p=133
Esse componente no possuir nenhum boto de ao, somente os campos necessrios para o objeto
Endereo, conforme quadro abaixo:
Numero

Rua

Complemento

Bairro

Cidade

Estado

Pas

ID

numero

rua

complemento

bairro

cidade

estado

pais

idLabel

numero

rua

complemento

bairro

cidade

estado

pais

Comp. JSF
Tipo

p:inputText
Numrico

Alfanumrico

Tamanho

No se aplica

50

Mscara

Texto direita

Texto esquerda

Obrigatrio

Sim

Regra Valid.

No possui

O namespace a ser definido para o Projeto ser ticketsEventos com o acrnimo 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
utilizao do componente apresentado no cdigo abaixo:

<te:endereo endereco="#{manterFuncionarioMB.funcionario.endereco}"/>
Como possvel perceber esse componente receber um objeto endereo, assim o tipo do atributo da
interface do componente dever ser um endereo.
Um detalhe importante que na Tela 6 manterCliente.xhtml e Tela 8 manterFuncionario.xhtml dever
ser substitudo a parte que tratam os campos do Endereo pelo componente aqui criado.