Sistema Web para Aluguel de Roupas

Fazer download em pdf ou txt
Fazer download em pdf ou txt
Você está na página 1de 51

UNIVERSIDADE TECNOLGICA FEDERAL DO PARAN

CURSO SUPERIOR DE TECNOLOGIA EM ANLISE E DESENVOLVIMENTO DE


SISTEMAS











CSSYO JUNIOR REBONATO KIST









SISTEMA WEB PARA LOJAS DE ALUGUEL E VENDA DE ROUPAS









TRABALHO DE CONCLUSO DE CURSO











PATO BRANCO
2012


CSSYO JUNIOR REBONATO KIST














SISTEMA WEB PARA LOJAS DE ALUGUEL E VENDA DE ROUPAS








Trabalho de Concluso de Curso de
graduao, apresentado disciplina de
Trabalho de Diplomao, do Curso Superior
de Tecnologia em Anlise e Desenvolvimento
de Sistemas, da Universidade Tecnolgica
Federal do Paran, Cmpus Pato Branco, como
requisito parcial para obteno do ttulo de
Tecnlogo.

Orientadora: Profa. Beatriz Terezinha Borsoi











PATO BRANCO
2012





RESUMO


KIST, Cssyo Junior Rebonato. Sistema web para lojas de aluguel e venda de roupas. 2012.
50 f. Trabalho de concluso de curso - Curso Superior de Tecnologia em Anlise e
Desenvolvimento de Sistemas, Universidade Tecnolgica Federal do Paran, Cmpus Pato
Branco. Pato Branco, 2012.


As aplicaes web facilitam o acesso dos usurios porque as exigncias bsicas para uso
dessas aplicaes um computador com acesso Internet e com um navegador web instalado.
Esse tipo de aplicao tambm til para empresas que possuem filiais. Com uso da Internet
no h necessidade de uma rede dedicada para conectar os computadores da matriz e das
filiais. Considerando esse contexto, verificou-se que o desenvolvimento de um sistema web
poderia ser relevante para o gerenciamento de uma empresa de aluguel e venda de roupas que
possua filiais. A implementao desse sistema tambm tem o objetivo de apresentar a forma
de uso das tecnologias empregadas, destacando-se a linguagem Java para web, os frameworks
Hibernate e PrimeFaces e a biblioteca JQuery.


Palavras-chave: Java para web. Aplicaes web. PrimeFaces. JQuery


ABSTRACT


KIST, Cssyo Junior Rebonato. Web application to manage rental and sale of clothes. 2012.
50 f. Relatrio de Estgio Supervisionado - Curso Superior de Tecnologia em Anlise e
Desenvolvimento de Sistemas, Universidade Tecnolgica Federal do Paran, Cmpus Pato
Branco. Pato Branco, 2012.


The web applications provide easy access for users because the basic requirement to access
these applications is a computer with Internet access and a web browser installed. This type of
application is also useful for companies that have branches. With use of the Internet there is
no need for a dedicated network to connect computers and array of subsidiaries. Considering
this context, it was found that the development of a web-based system could be relevant to the
management of a company that rents and sells clothes and has offices. The implementation
aims to show how to use the technologies employed, especially Java web and the frameworks
PrimeFaces and Hibernate, and the JQuery library.

Keywords: JavaEE. Web applications. PrimeFaces. JQuery.



LISTA DE FIGURAS E QUADROS


Figura 1 - Apresentao das camadas e dos contineres ....................................................... 13
Figura 2 Arquitetura MVC com JSP.................................................................................. 16
Figura 3 Diagrama de casos de uso.................................................................................... 26
Figura 4 Diagrama de classes do sistema........................................................................... 27
Figura 5 Diagrama de sequncia para o processo de aluguel de roupas .............................. 28
Figura 6 Diagrama de sequncia para login no sistema...................................................... 28
Figura 7 Diagrama de sequncia para cadastro de clientes................................................. 29
Figura 8 Diagrama de sequncia para cadastro de uma despesa ......................................... 29
Figura 9 Diagrama de sequncia para a venda de roupas ................................................... 30
Figura 10 Diagrama de sequncia para cadastrar uma roupa no sistema............................. 30
Figura 11 Tela de login no sistema.................................................................................... 31
Figura 12 Tela inicial do sistema....................................................................................... 31
Figura 13 Cadastro de usurio........................................................................................... 32
Figura 14 Tela de cadastro de usurios.............................................................................. 32
Figura 15 Cadastro de Aluguel .......................................................................................... 33
Figura 16 Tela para efetuar aluguis.................................................................................. 33

Quadro 1 Suporte a tributos de qualidade em JavaEE utilizando MVC.............................. 15
Quadro 2 Tecnologias utilizadas na definio, implementao e execuo do sistema....... 19




LISTAGENS DE CDIGO


Listagem 1 Cdigo para login ao sistema .......................................................................... 34
Listagem 2 Classe Form.................................................................................................... 35
Listagem 3 Login ao sistema............................................................................................. 36
Listagem 4 Cdigo para consulta de usurio ao banco de dados ........................................ 37
Listagem 5 Cdigo para cadastro de usurio...................................................................... 38
Listagem 6 Cdigo para salvar o cadastro de usurio......................................................... 39
Listagem 7 Cdigo para chamar mtodos de incluso, excluso e edio de objetos.......... 39
Listagem 8 Cdigo para salvar cadastro ............................................................................ 40
Listagem 9 Cdigo para efetuar aluguel ............................................................................ 43
Listagem 10 Cdigo do Managed Bean para efetuar o aluguel e outras funcionalidades .... 45
Listagem 11 Cdigo para chamar mtodos de listagem, desativao, ativao e efetuao do
aluguel e autocomplete do cliente......................................................................................... 45
Listagem 12 Cdigo para efetuar o aluguel no banco de dados .......................................... 46



LISTA DE SIGLAS


API Application Programming Interface
CGI Common Gateway Interface
CSS Cascading Style Sheet
DAO Data Access Objects
DDL Data Definition Language
DOM Document Object Model
EIS Executive Information System
EJB Enterprise JavaBeans
EJB Enterprise Java Beans
FTP File Transfer Protocol
HTML Hyper Text Markup Language
IBM International Business Machines
IDE Integrated Development Environment
IIS Internet Information Services
JavaEE Java Enterprise Edition
JDBC Java Database Connectivity
JIT Just Int Time
JNDI Java Naming and Directory Interface
JSF Java Server Faces
JSP Java Server Page
JTA Java Transaction API
JVM Java Virtual Machine
MVC Model-View-Controller
PHP PHP Hypertext Preprocessor
RIA Rich Internet Application
SQL Structured Query Language
UML Unified Modeling Language
URL Uniform Resource Locator
W3C World Wide Web Consortium
XHTML eXtensible Hyper Text Markup Language
XML eXtensible Markup Language
XSD XML Schema Document




SUMRIO


1 INTRODUO.........................................................................................................9
1.1 CONSIDERAES INICIAIS ........................................................................................ 9
1.2 OBJETIVOS.................................................................................................................. 10
1.2.1 Objetivo Geral............................................................................................................. 10
1.2.2 Objetivos Especficos.................................................................................................. 10
1.3 JUSTIFICATIVA .......................................................................................................... 11
1.4 ESTRUTURA DO TRABALHO ................................................................................... 11
2 JAVA PARA WEB.................................................................................................13
2.1 A PLATAFORMA JAVAEE......................................................................................... 13
2.2 Padro de projetos MVC................................................................................................ 15
3 MATERIAIS E MTODO........................................................................................18
3.1 MATERIAIS.................................................................................................................. 18
3.1.1 Astah Community ....................................................................................................... 19
3.1.2 IDE Eclipse................................................................................................................. 19
3.1.3 Linguagem Java .......................................................................................................... 19
3.1.4 JavaServer Faces ......................................................................................................... 20
3.1.5 PrimeFaces.................................................................................................................. 20
3.1.6 jQuery......................................................................................................................... 20
3.1.7 MySQL....................................................................................................................... 21
3.1.8 Hibernate .................................................................................................................... 21
3.1.9 Apache Tomcat ........................................................................................................... 22
3.1.10 DeZign For Database v6............................................................................................ 22
3.2 MTODO...................................................................................................................... 23
4 RESULTADO.........................................................................................................25
4.1 APRESENTAO DO SISTEMA................................................................................ 25
4.2 MODELAGEM DO SISTEMA...................................................................................... 26
4.3 DESCRIO DO SISTEMA......................................................................................... 31
4.4 IMPLEMENTAO DO SISTEMA............................................................................. 34
5 CONCLUSO........................................................................................................47
REFERNCIAS.........................................................................................................49


9
1 INTRODUO


Este captulo apresenta o contexto do sistema desenvolvido como resultado deste
trabalho, os seus objetivos e a sua justificativa. E por fim est a organizao dos captulos que
compem o texto.


1.1 CONSIDERAES INICIAIS


Uma empresa que fabrica e aluga roupas, comumente denominada de atelier de costura
ou de locao, geralmente disponibiliza um grande nmero de peas para que seus clientes
possam escolher. Alm de locar peas prontas e de solicitar a confeco de peas que
adquirir, o cliente pode solicitar a confeco de uma pea que alugar. A solicitao de
confeco pelo cliente de uma pea que ele alugar definida como primeira locao.
Para as peas locadas importante manter o histrico das locaes para que o cliente
possa ser informado dos usos anteriores da respectiva pea. Para determinadas peas,
especialmente confeces de vesturio feminino, necessrio haver um controle para que a
locao no se torne repetida em eventos semelhantes ou eventos de pblico semelhante, por
exemplo.
A existncia de matriz e filiais nesse tipo de negcio aumenta a vida til das peas a
serem locadas. Isso porque as peas que j foram alugadas em uma das lojas podem ser
disponibilizadas para aluguel em outras lojas, proporcionando maior rentabilidade para o
empresrio.
O gerenciamento das peas locadas e mesmo da confeco, quando a empresa possui
matriz e filiais, pode ser facilitado pelo uso de um sistema web. Assim, este trabalho se refere
ao desenvolvimento de um sistema web contar com um servidor (computador na matriz) que
disponibilizar acesso aos terminais (cliente web) nas filiais. O controle de estoque e o
gerenciamento do banco de dados so centralizados, mas o acesso e a manuteno do sistema
so distribudos. A manuteno, nesse caso, se refere s operaes realizadas no banco de
dados, como os cadastros e o controle das locaes.
O sistema desenvolvido composto basicamente de cadastros, controle de aluguel e de
distribuio das peas entre a matriz e as filiais da empresa. A implementao do sistema est


10
baseada no padro de projetos MVC (Model-View-Controller). Esse padro ser usado para
facilitar a implementao e mesmo a manuteno, em termos de cdigo, do sistema
desenvolvido. Os dados para a modelagem do sistema so provenientes de uma empresa de
aluguel e confeco de roupas que possui matriz e filiais.
O desenvolvimento desse sistema uma oportunidade de aprendizado pelas
tecnologias utilizadas na implementao, destacando-se a linguagem Java, os frameworks
Hibernate e PrimeFaces, a biblioteca JQuery e o padro de projetos MVC. Alm de fornecer
uma forma de controle e gerenciamento para empresas de aluguel e venda de roupas sob
medida.


1.2 OBJETIVOS

O objetivo geral se refere ao resultado principal a ser obtido com a realizao deste
trabalho. Os objetivos especficos complementam o objetivo geral.


1.2.1 Objetivo Geral

Implementar um sistema web para gerenciar aluguel e venda de roupas de uma
empresa com matriz e filiais utilizando a linguagem Java.

1.2.2 Objetivos Especficos

Dentre os objetivos especficos, destacam-se:
Apresentar a forma de uso do padro de projetos MVC no desenvolvimento de
uma aplicao Java para web.
Apresentar a forma de uso das tecnologias de suporte ao desenvolvimento Java
para web, incluindo o framework PrimeFaces e a biblioteca JQuery.






11
1.3 JUSTIFICATIVA

O desenvolvimento de um sistema web para uma empresa de aluguel e de venda de
roupas se justifica fortemente quando a empresa composta por matriz e filiais. Com um
sistema web, a comunicao entre elas fica mais eficaz. Alm da comunicao, o controle das
operaes realizadas e a viso geral do negcio se tornam mais fceis e efetivas. tambm
uma possibilidade de aumentar a vida til das peas locadas porque elas podem ser
redistribudas entre a matriz e as filiais.
Para o desenvolvimento de aplicaes para web, diversas tecnologias podem ser
utilizadas incluindo dos CGIs (Common Gateway Interface) com HTML (HyperText Markup
Language) s aplicaes Internet ricas. As linguagens de programao tambm so distintas,
como, por exemplo, .Net, Java e PHP (PHP Hypertext Preprocessor).
Para a implementao do sistema resultado deste trabalho, optou-se pela linguagem
Java pelas funcionalidades que a mesma oferece no desenvolvimento de sistemas para web.
Essas funcionalidades esto, tambm, relacionadas s tecnologias agregadas ao uso da
linguagem. Dentre essas tecnologias esto os frameworks e os padres de projeto.
Os padres de projeto, embora sejam conceituais, definem a forma de empregar
tecnologias na resoluo de determinados problemas. Esses padres no esto relacionados
linguagem, mas fornecem uma maneira de resolver problemas recorrentes em programao,
otimizando o uso dos recursos que as linguagens e as tecnologias possuem.
Para o desenvolvimento deste trabalho sero utilizados os frameworks PrimeFaces e
Hibernate, a biblioteca JQuery para interface e o padro de projetos MVC. Eles sero
utilizados visando agilizar a implementao do sistema e prover facilidade de interatividade
do usurio.
Este trabalho est centrado na implementao do sistema, uma primeira verso da
modelagem foi desenvolvida como trabalho de estgio. No estgio tambm foram
implementados alguns cadastros, mas houve mudanas nas tecnologias e toda a codificao
foi refeita.


1.4 ESTRUTURA DO TRABALHO

Este trabalho est organizado em captulos, dos quais este o primeiro. O Captulo 2
apresenta o referencial terico que fundamenta as tecnologias e os conceitos utilizados no


12
desenvolvimento do trabalho. O Captulo 3 apresenta os materiais e o mtodo empregado na
modelagem e na implementao do sistema. No Captulo 4 est a modelagem e a
implementao obtidas como resultado da realizao deste trabalho. No Captulo 5 est a
concluso e por fim esto as referncias utilizadas.


13
2 JAVA PARA WEB


Este captulo apresenta os conceitos relacionados plataforma JavaEE (Java
Enterprise Edition) no desenvolvimento de aplicaes web e ao padro de projetos MVC, que
so utilizados na implementao do sistema resultado deste trabalho.


2.1 A PLATAFORMA JAVAEE


A plataforma JavaEE, tambm conhecida como J2EE ou JEE, est voltada para o
desenvolvimento de aplicaes multicamadas, baseadas em componentes que so executados
em um servidor de aplicaes. A plataforma JavaEE considerada um padro de
desenvolvimento porque necessrio seguir determinadas regras para que o produto de
software gerado seja compatvel com JavaEE. O desenvolvimento de software para esse
ambiente realizado por meio da linguagem de programao Java e de um conjunto de
ferramentas de desenvolvimento e de tecnologias associadas.
A plataforma JavaEE multicamadas, cujas camadas podem estar distribudas em
vrias mquinas. Geralmente conhecida como trs camadas, mas no necessariamente
somente trs. Por exemplo: camada cliente que executa na mquina do cliente; camada web
que executa no servidor JavaEE; camada de negcio que executa no servidor JavaEE; e
camada EIS (Executive Information System) que executa no servidor EIS. A Figura 1
apresenta uma viso geral das camadas tpicas desse padro.

Figura 1 - Apresentao das camadas e dos contineres
Fonte: Adaptado de Miranda e Silva (2006).
Camada de
apresentao
Servidor JavaEE


14
A plataforma JavaEE trabalha com o conceito de continer de componentes. Um
continer fornece servios aos componentes, tais como, segurana. Dentre os exemplos de
continer esto o servidor JavaEE; continer EJB (Enterprise JavaBeans); continer web;
continer aplicao cliente; e continer applet.
A plataforma JavaEE aberta, baseada em padres, independente de hardware e de
sistema operacional que as aplicaes desenvolvidas executaro. As aplicaes web baseadas
na plataforma JavaEE usam o padro de projetos MVC que composto por trs componentes
arquiteturais (GAMMA et al., 2000):
a) lgica de apresentao que define a viso e est relacionada a exibir os dados ou
informaes da aplicao.
b) lgica de controle - coordena o modelo e a viso e exibe a interface.
c) lgica de negcio que representada pelo modelo. O modelo encapsula os dados
do aplicativo e as regras de negcio.
Para Prajapati e Dabhi (2009), aplicaes web desenvolvidas em plataforma JavaEE
possuem alta qualidade e atendem mudanas de requisitos de negcio e do cliente. Chung e
Lee (2003) exemplificam o desenvolvimento de aplicaes web com o uso da linguagem Java
e de tecnologias relacionadas a XML (eXtensible Markup Language). Para a camada de
apresentao eles citam o uso de: eXtensible Hyper Text Markup Language (XHTML),
Cascading Style Sheet (CSS), JavaScript, XML, XML Schema Document (XSD) e Java
Server Page (JSP). Para a camada de negcios citam o uso de JavaBean. E para a camada de
acesso a dados, o MySQL como sistema de gerenciamento de banco de dados e o driver
Database Connectivity. Como servidor web eles incluem o Apache, JSP e Tomcat.
Como a tecnologia Java orientada a objetos e independente de plataforma,
caractersticas, como escalabilidade, portabilidade, reusabilidade, segurana, alto desempenho
e flexibilidade so inerentes as suas classes e componentes (PRAJAPATI; DABHI, 2009).
Servlet, componentes JavaBeans e EJB (Enterprise Java Beans), por exemplo, so classes
Java. A linguagem de script JSP usada para criar pginas web. Esses elementos so
utilizados para implementar o padro de projetos MVC na plataforma JavaEE.
O Quadro 1 apresenta uma anlise de como os atributos de qualidade de
componentes so atendidos na plataforma JavaEE, considerando o padro de projetos MVC.






15
Atributos Suporte para atributos de qualidade para componentes MVC
Modelo Viso Controle
Desempenho Compilador JIT (Just Int Time) para compilao rpida de byte code. Separa
thread para requisio de usurios. Componentes EJB locais para melhorar
desempenho.
Extensibilidade Todos os componentes so orientados a objetos.
Escalabilidade Componentes EJB so
acessveis por meio da
viso/controle
Usa mscara URL
(Uniform Resource
Locator)
Segurana para
componentes Servlet
realizada por
programao
Robustez Componentes executam sob o controle de JVM (Java Virtual Machine), as
classes so carregadas e byte code verificado dinamicamente.
Flexibilidade Usa JNDI (Java
Naming and
Directory Interface)
baseada em
configurao de acesso
a banco de dados
Usa pginas principais,
incluso de
arquivos/pginas.
Usa mtodos de
requisio e resposta e
cadeias de filtros.
Modularidade Mdulos jar EJB Bibliotecas de tags Filtros.
Reuso Suporte a objetos EJB
remotos
Biblioteca de tags
customizadas, incluso
de pginas/arquivos e
links.
Usando mtodos de
requisio e resposta e
cadeias de filtros
Quadro 1 Suporte a tributos de qualidade em JavaEE utilizando MVC
Fonte: traduzido de Prajapati e Dabhi (2009, p. 1668).


2.2 Padro de projetos MVC

Uma aplicao JavaEE usa o modelo trs camadas: apresentao, negcio e
persistncia. Na camada de apresentao esto as pginas JSP, a camada de negcio contm a
modelagem do domnio do problema e a camada de persistncia contm as classes com
conhecimento sobre a persistncia de objetos no banco de dados.
O Model-View-Controller um padro de arquitetura que divide a aplicao em
controladores que tratam as entradas dos usurios, no modelo que prove as funcionalidades
principais e nas vises que apresentam as informaes para os usurios (SOUZA, 2008).
Em aplicaes complexas, que enviam uma srie de dados para o usurio, o
desenvolvedor frequentemente necessita separar os dados (model) da interface (view).
Utilizando MVC, alteraes feitas na interface no afetaro a manipulao dos dados e estes
podero ser reorganizados sem alterar a interface do usurio. O MVC resolve esse problema
por meio da separao das tarefas de acesso aos dados e a lgica do negcio da apresentao e
da interao com o usurio. Isso feito por meio da insero de um componente entre model e
wiew. Esse componente o controller.


16
O objetivo bsico do padro de projeto MVC separar dados ou lgica de negcios
(model) da interface do usurio (view) e do fluxo da aplicao (controller). Assim, uma
mesma lgica de negcios pode ser acessada e visualizada por interfaces distintas. Na
arquitetura MVC, a lgica de negcios (modelo) no sabe quantas nem quais interfaces com o
usurio esto exibindo seu estado. A Figura 2 apresenta um esquema de representao da
arquitetura MVC utilizando JSP para a camada de interface.

Figura 2 Arquitetura MVC com JSP
Fonte: traduzido de Khin (2009, p. 280).

Na Figura 2, os nmeros indicam (KHIN, 2009):
1) A requisio enviada pelo usurio por meio de um navegador web (o browser),
para o controle que tratar essa requisio.
2) O controle (servlet) instancia o modelo, realiza as aes necessrias e faz as
devidas conexes com o JavaBean para obter as informaes solicitadas.
3) O controle envia a representao para a viso por meio das pginas JSP, com as
respostas conforme a solicitao do usurio.
4) A pgina JSP atualizada ou composta com informaes provenientes do modelo.
5) A resposta enviada ao cliente por meio de uma pgina JSP, com todos os dados
que os mtodos produziram ao executar o cdigo do sistema.
De acordo com a representao da Figura 2, o servlet age como o controle e est
encarregado do processamento das requisies e da criao de quaisquer beans ou objetos
usados pelo JSP, bem como decidir, dependendo das aes do usurio, quais pginas JSP
devem ser encaminhadas para atender a requisio solicitada. Neste modelo no h lgica de
processamento na pgina JSP. Esta simplesmente responsvel por recuperar qualquer objeto
ou bean que pode ter sido previamente criado pelo servlet e extrair o contedo dinmico do
servlet para insero em modelos (templates) estticos. Essa abordagem resulta tipicamente


17
na separao da apresentao do contedo, deixando clara a delimitao dos papis e
responsabilidades dos programadores e dos projetistas das pginas (KHIN, 2009).
Na Figura 2, o browser representa a viso definida em JSP e fornece a interao do
usurio com a viso elaborada em JSP. A viso envia informaes para o controlador
(controller) que altera o modelo. O modelo (model) representa a lgica de negcio e envia
eventos para a viso (view) indicando as mudanas.
As funcionalidades de cada uma das trs partes do modelo MVC, de acordo com
Bianchini (2008), Prajapati e Dabhi (2009) e Wang (2011) so:
a) Modelo - representa os dados da aplicao e a sua lgica de negcio que determina
o acesso aos dados. O modelo mantm o estado persistente dos dados e fornece ao controlador
a possibilidade de acesso s funcionalidades da aplicao. Essas funcionalidades so
encapsuladas pelo prprio modelo. O modelo notifica a viso que recebe solicitaes de
alteraes e l o contedo do modelo para ser atualizada.
b) Viso - a camada de interface com o usurio. Nesta camada o usurio v o estado
do modelo e pode manipular a interface para ativar a lgica do negcio. A viso apresenta o
contedo de um modelo, coleta os dados para o modelo, especifica como esses dados devem
ser apresentados e encaminha para o controlador as aes do usurio.
c) Controle - o componente que define o comportamento da aplicao. Ele recebe e
interpreta as aes do usurio e as traduz para aes de atualizao do modelo que, por
exemplo, ativam processos da lgica de negcio ou alteram o estado do modelo. O
controlador se encarrega de selecionar a visualizao que ser mostrada a partir da interao
com o usurio, atualizando a viso apresentada ao usurio. O controlador transforma eventos
gerados pela interface em aes de negcio, alterando o modelo.



18
3 MATERIAIS E MTODO


Neste captulo esto os materiais e o mtodo utilizados no desenvolvimento deste
trabalho. Os materiais se referem s tecnologias e s ferramentas utilizadas na modelagem e
na implementao do sistema e o mtodo apresenta a sequncia das principais atividades
realizadas para desenvolvimento do trabalho.


3.1 MATERIAIS


As seguintes ferramentas e tecnologias foram utilizadas para modelar e exemplificar a
implementao do sistema:
a) Astah* Community (ASTAH, 2012) para a documentao da modelagem que
baseada na UML (Unified Modeling Language).
b) Eclipse (ECLIPSE, 2012) IDE (Integrated Development Environment) para
desenvolvimento.
c) Linguagem Java (JAVA, 2012) para a implementao do sistema, complementada
por HTML por ser desenvolvimento para web.
d) JavaServer Faces 2.0 (JSF, 2012) para controle entre as classes Java e os JSPs.
e) PrimeFaces (PRIMEFACES, 2012) para desenvolvimento da interface.
d) Jquery (JQUERY, 2012) componentes para os scripts da interface.
f) MySQL 5 (MYSQL, 2012) como banco de dados.
g) Hibernate (HIBERNATE, 2012) framework para o mapeamento objeto relacional.
h) Apache Tomcat (TOMCAT, 2012) como continer/servidor web.
i) DeZign (DEZIGN, 2012) para modelagem do banco de dados.
O Quadro 2 apresenta as tecnologias utilizadas para modelagem, implementao e
execuo do sistema. Elas esto distribudas nas camadas de interface, aplicao (lgica de
negcio) e dados.






19
Modelagem Implementao Execuo
Interface (viso) No realizada IDE Eclipse
JSF, PrimeFaces,
JQuery, (JavaScript,
HTML, CSS)
Navegador web com
suporte a HTML e
JavaScript
Lgica de negcio
(controle)
Astah Community IDE Eclipse
Java,
Apache Tomcat
Banco de dados
(modelo)
DeZign for Database
v6
MySQL
Hibernate
MySQL Admin
Apache Tomcat
Quadro 2 Tecnologias utilizadas na definio, implementao e execuo do sistema

3.1.1 Astah Community

A ferramenta Astah Commuity a sucessora da ferramenta Jude Community. uma
ferramenta para modelagem de sistemas com suporte para a UML 2.1 (ASTAH, 2012). Os
diagramas podem ser impressos ou exportados como imagem.

3.1.2 IDE Eclipse

A IDE Eclipse (ECLIPSE, 2012) uma ferramenta de desenvolvimento de cdigo
aberto para a construo de programas de computador desenvolvida em Java pela empresa
IBM (International Business Machines). Com o uso de plugins, a IDE Eclipse pode ser usada
no somente para desenvolver em Java, mas tambm em, por exemplo, C, C++, PHP,
ColdFusion, Python e Flex.

3.1.3 Linguagem Java

Java uma linguagem de programao orientada a objetos, sendo assim, a maior parte
dos elementos de um programa Java so objetos (JAVA, 2012). Dentre os elementos que no
so objetos esto os tipos bsicos, como o int e o float. O cdigo organizado em classes, que
permite somente relacionamentos de herana simples entre si.
Chamadas a funes de acesso remoto (sockets) e os protocolos Internet mais comuns
(HTTP, FTP (File Transfer Protocol), Telnet, etc.) so suportados em Java, facilitando a
implementao de aplicativos baseados na arquitetura cliente/servidor e o desenvolvimento de
aplicaes web. Em aplicaes web, a camada de interao com o usurio geralmente
desenvolvida em tecnologias agregadas como, por exemplo, JSF (Java Server Faces), Flex ou
HTML.



20
3.1.4 JavaServer Faces

JavaServer Faces (JSF) um framework padro orientado a componentes de interface
com o usurio para a plataforma JavaEE e comumente referenciando como um framework
web baseado em Java (JSF, 2012).
A tecnologia JavaServer Faces simplifica a construo de interfaces com o usurio
para aplicaes JavaServer. Isso porque os desenvolvedores podem construir aplicaes web
por meio da composio de componentes de interface com o usurio reusveis, conectar esses
componentes com um banco de dados e vincular os eventos gerados no cliente com os
manipuladores de eventos que esto no servidor (GLASSFISH, 2012).

3.1.5 PrimeFaces

PrimeFaces uma sute de componentes de cdigo fonte aberto para Java Server Faces
2.0 com um conjunto de mais de cem componentes JSF para o desenvolvimento de interfaces
ricas (PRIMEFACES, 2012). Dentre as caractersticas de PrimeFaces, destacam-se
(PRIMEFACES, 2012):
a) Possui um conjunto de componentes de interface grfica para implementao de
Rich Internet Application (RIA), como, por exemplo, DataTable, AutoComplete, HtmlEditor e
Charts (grficos).
b) No h necessidade de configurao XML extra e no h dependncias requeridas
de outras tecnologias.
c) A construo de Ajax baseada no padro JSF 2.0 Ajax APIs (Application
Programming Interface).
d) Possui um skinning Framework com mais de 25 temas.

3.1.6 jQuery

jQuery (JQUERY, 2012) uma biblioteca JavaScript que simplifica a identificao de
tags em documentos HTML, a manipulao de eventos, o desenvolvimento de animao e de
interaes Ajax, facilitando o desenvolvimento web. jQuery possui as seguintes caractersticas
(SILVA, 2010):
a) Uso de seletores CSS para localizar elementos da estrutura de marcao HTML da
pgina;


21
b) Arquitetura compatvel com instalao de plugins e extenses em geral;
c) Indiferena s inconsistncias de renderizao entre navegadores;
d) Oferece interao implcita, isto , no h necessidade de construo de estruturas
de repetio para localizao de elementos no documento;
e) Admite programao encadeada, ou seja, cada mtodo retorna um objeto;
f) extensvel, permite a criao e a insero de novas funcionalidades em bibliotecas
existentes.
jQuery se destina a adicionar interatividade e dinamismo s pginas web e proporciona
facilidades como: adicionar efeitos visuais e animaes; acessar e manipular o DOM
(Document Object Model); buscar informaes no servidor sem necessidade de recarregar a
pgina; prover interatividade; alterar contedos; modificar apresentao e estilo; e simplificar
tarefas especficas de JavaScript.
jQuery foi criada com a preocupao de ser uma biblioteca em conformidade com os
padres web, ou seja, compatvel com qualquer sistema operacional, navegador e com suporte
total para a biblioteca CSS3. Essa biblioteca foi criada e est em acordo com as diretrizes do
W3C (World Wide Web Consortium), mas cabe ao desenvolvedor escrever os scripts de
maneira a atender essa conformidade (SILVA, 2010).

3.1.7 MySQL

O MySQL um servidor e gerenciador de banco de dados relacional, que utiliza a
linguagem SQL (MYSQL, 2012). O MySQL possui licena como software livre e licena
paga. Atualmente esse servidor e gerenciador de banco de dados atende tambm aplicaes de
grande porte, embora tenha sido inicialmente projetado e desenvolvido para aplicaes de
pequeno porte.

3.1.8 Hibernate

O Hibernate (HIBERNATE, 2012) um framework para o mapeamento objeto-
relacional escrito na linguagem Java e tambm disponibilizado em .Net com o nome
NHibernate. Esse framework facilita o mapeamento dos atributos entre uma base de dados
relacional e o modelo de objetos de uma aplicao por meio do uso de arquivos XML.
O Hibernate visa minimizar a complexidade dos programas Java baseados no modelo
orientado a objeto que trabalham com banco de dados no modelo relacional. O Hibernate


22
transforma os dados tabulares de um banco de dados em um grafo de objetos definido pelo
desenvolvedor. Sua principal caracterstica a transformao das classes Java para tabelas de
dados e dos tipos de dados Java para tipos SQL (Structured Query Language). O Hibernate
gera as sentenas SQL, mantendo o programa portvel para qualquer banco de dados padro
SQL.
Em aplicaes construdas para serem executadas em servidores, o gerenciamento das
transaes realizado segundo o padro JTA (Java Transaction API). Nas aplicaes desktop,
o tratamento transacional realizado pelo driver JDBC (Java Database Connectivity).
Hibernate pode ser utilizado em aplicaes Java desktop ou em aplicaes JavaEE, utilizando
servlet ou sesses EJB.

3.1.9 Apache Tomcat

O Apache Tomcat (TOMCAT, 2012) um continer servlet, ou seja, um servidor de
aplicaes utilizado para interpretar aplicaes escritas em Java para web. Ele no implementa
um continer EJB, mas abrange parte da especificao JEE com tecnologias como servlet e
JSP e tecnologias de apoio relacionadas, como segurana, JNDI Resources (API para acesso a
diretrios) e JDBC DataSources.
O Tomcat pode atuar tambm como servidor web, ou pode funcionar integrado a um
servidor web dedicado como o Apache ou o IIS (Internet Information Services). Como
servidor web, ele prov um servidor HTTP puramente em Java. O servidor inclui ferramentas
para configurao e gerenciamento, o que tambm pode ser feito editando-se manualmente
arquivos de configurao formatados em XML.

3.1.10 DeZign For Database v6

DeZign for Databases (DEZIGN, 2012) uma ferramenta para projeto de banco de
dados que auxilia a criar e a manter bancos de dados. Essa ferramenta utiliza diagramas de
entidade e relacionamentos para projetar e gerar bases de dados graficamente e sentenas
SQLs.
Os principais recursos da ferramenta DeZign for Databases so (DEZIGN, 2012):
a) Modelar visualmente bancos de dados a modelagem feita graficamente por meio
de diagramas de entidades e relacionamentos. O projeto pode ser apresentado em nveis de
detalhes distintos.


23
b) Gerar bancos de dados gerar scripts DDL (Data Definition Language) completos
para criar o banco de dados ou ger-lo diretamente.
c) Importar base de dados derivar um modelo grfico a partir de um banco de dados
existente. A engenharia reversa feita diretamente a partir do banco de dados ou importada de
scripts SQL.
d) Sincronizar modelos ou bancos de dados as funcionalidades de sincronizao e
comparao so possveis para todos os casos de uso: do modelo para a base de dados, do
modelo para script, da base de dados para o modelo, do script para o modelo e do modelo
para o modelo.


3.2 MTODO

No mtodo utilizado para o desenvolvimento do sistema so consideradas as trs
fases anlise, projeto e implementao propostas por Rumbaugh, et al. (1997) e as fases de
anlise, projeto, codificao e testes do modelo sequencial linear de Pressman (2005).
Contudo, so acrescentadas outras denominaes e mesmo fases visando explicitar as
atividades realizadas. As fases definidas para o desenvolvimento do projeto foram:
a) Reviso da modelagem
A modelagem do sistema foi realizada como trabalho de estgio. Para o trabalho de
concluso de curso essa modelagem foi revisada e ajustes foram realizados. A reviso teve
como base os processos de negcio de uma empresa de confeco e locao de roupas.
A definio dos requisitos foi baseada nas necessidades e interesse de uma empresa
(loja) que fabrica e aluga roupas. No foram realizadas entrevistas formais ou mesmo
questionrios porque o autor desse trabalho conhece os procedimentos dessa empresa. E
conversas informais foram realizadas com o proprietrio e com outros funcionrios.
b) Implementao
Para o trabalho de estgio, alm da modelagem, tambm foram implementados alguns
cadastros visando estudar as tecnologias que eram, basicamente, Java com VRaptor. No
trabalho de estgio foi utilizado o VRaptor para o controle entre as classes Java e os JSPs.
Contudo, no prosseguimento da implementao, como trabalho de concluso de curso, muitas
dificuldades foram encontradas com o uso do VRaptor. Assim, fez-se um levantamento de
outros frameworks que poderiam ser utilizados. As pesquisas indicaram que o uso de JSF com
PrimeFaces, IceFaces ou RichFaces facilitaria a implementao.


24
Optou-se pelo uso de PrimeFaces juntamente com JSF pelos vrios comentrios
favorveis postados em blogs tcnicos, ou seja, de programadores. Com o desenvolvimento
do trabalho percebeu-se que, efetivamente, o uso do PrimeFaces relativamente mais fcil, se
comparado com o VRaptor. Assim, os cadastros implementados como trabalho de estgio
foram completamente refeitos.
c) Testes
Em termos de testes eles estiveram centrados em verificar o cdigo e foram realizados
pelo prprio autor deste trabalho. Os testes de requisitos e mesmo de usurio sero realizados
posteriormente. Isso porque h interesse em implantar esse sistema em uma empresa de
confeco e aluguel de roupas. Essa empresa serviu de base para a definio dos requisitos.


25
4 RESULTADO


Este captulo apresenta o sistema obtido como resultado da realizao deste trabalho.


4.1 APRESENTAO DO SISTEMA


O sistema gerenciar os aluguis de roupas da empresa. As roupas de aluguis podem
ser fabricadas sob medida, mas, neste caso, o valor do primeiro aluguel da roupa mais
elevado. As roupas para locao tambm podem ser ajustadas s medidas do cliente.
Depois de realizada uma locao, o cliente tem trs dias para cancelar o aluguel. Se a
locao for cancelada aps esse perodo ser cobrado 50% do valor da locao. As roupas
disponibilizadas para locao podero ser vendidas, caso o cliente deseje compr-las. No caso
de venda, h cobrana de juros se houver atraso no pagamento.
Ao ser efetuado um aluguel definido um valor de entrada. Esse valor destinado
para compra de materiais, quando o primeiro aluguel ou simplesmente como garantia. O
restante do pagamento realizado na entrega da pea ao cliente. A data de devoluo
informada pelo cliente. Se essa data ultrapassar um final de semana, o cliente dever pagar
mais um aluguel da roupa, podendo ser 30% a menos, caso a roupa no tenha sido reservada
para locao para outro cliente. Se na devoluo a roupa retornar com danos, como rasgos e
manchas impossveis de serem retiradas, ser cobrado o valor da roupa do cliente, aps ser
feita uma avaliao dos danos.
O sistema contar com um controle de estoque das roupas j confeccionadas, as roupas
tero referncia prpria e dados adicionais como cor e tamanho (um vestido curto ou longo,
por exemplo).
O controle financeiro da empresa ser tratado pelo sistema como entradas e sadas.
Contando com um cadastro de contas, boletos, tarifas e despesas em geral. O sistema emitir
um alerta (por email) para o cliente das contas a serem pagas com at uma semana de
antecedncia e o informar tambm sobre contas vencidas.
O sistema gerenciar tambm a devoluo de roupas danificadas que no tenham
conserto. Haver uma opo para dar baixa na roupa e tir-la do cadastro de aluguis. Porm


26
ficar gravado no sistema qual foi o cliente responsvel pelo dano, a data e o valor da roupa,
alm da identificao da roupa e do valor pago pelo cliente.
O acesso ao sistema ser feito por meio de login. O cadastro dos usurios realizado
pelo administrador do sistema.


4.2 MODELAGEM DO SISTEMA


A Figura 3 contm o diagrama de casos de uso definido para o sistema. Esse diagrama
tambm mostra que todas as operaes sero feitas aps o usurio estar logado no sistema.
Por meio desse diagrama possvel, tambm, verificar que o gerente da empresa herda todas
as funcionalidades da classe funcionrio e assim tem acesso a todas as funcionalidades do
sistema.

Figura 3 Diagrama de casos de uso


27

A Figura 4 contm o diagrama de classes do sistema. Por meio desse diagrama
possvel verificar que a nica maneira de acesso ao sistema por login. O acesso realizado
por meio da classe login. Por questo de segurana somente podero fazer login os usurios
que forem cadastrados pelo gerente da empresa usuria. O gerente tem permisses de
administrador do sistema.

Figura 4 Diagrama de classes do sistema

O sistema implementado realiza processos para chegar a resultados. Para exemplificar
as funes representadas por esses processos foram utilizados diagramas de sequncia. A
Figura 5 contm o diagrama de sequncia do processo de aluguel de roupas.


28

Figura 5 Diagrama de sequncia para o processo de aluguel de roupas

A Figura 6 ilustra o processo para efetuar login no sistema. Se o login est correto, o
sistema realiza o login e informa que o mesmo foi efetuado.

Figura 6 Diagrama de sequncia para login no sistema

Na Figura 7 est o processo de registro do cliente. Nesse processo, o cliente informa
os seus dados ao funcionrio que o cadastra no sistema. O sistema faz a verificao se o
cliente j est cadastrado, caso ele no esteja permitido o cadastro do mesmo.


29

Figura 7 Diagrama de sequncia para cadastro de clientes

O diagrama da Figura 8 mostra o processo para cadastro de uma despesa. O gerente da
empresa foi tratado como um funcionrio neste diagrama, porm somente o gerente poder
cadastrar estas despesas. O sistema recebe os dados da despesa, verifica se ela j existe, caso
no exista permite o cadastro da mesma.

Figura 8 Diagrama de sequncia para cadastro de uma despesa

O diagrama da Figura 9 representa a venda de uma roupa. Nessa venda o cliente
informa a roupa e o cliente. Se o cliente no estiver cadastrado, o sistema solicita seu registro
e aps isso solicitada a data da compra da roupa para registrar a venda no sistema.


30

Figura 9 Diagrama de sequncia para a venda de roupas

Na Figura 10 est o diagrama que representa a sequncia de aes para o registro de
uma roupa. Para cadastrar uma roupa, o funcionrio informa os dados e o sistema verificar se
a mesma j est cadastrada. Caso no esteja, permitir fazer o cadastro da mesma, informando
se o cadastro foi efetuado com sucesso.

Figura 10 Diagrama de sequncia para cadastrar uma roupa no sistema





31
4.3 DESCRIO DO SISTEMA


Ao acessar o sistema apresentada uma tela de login. Nessa tela, o usurio informa
os dados para acesso que so o identificador do usurio (login) e a respectiva senha. A Figura
11 apresenta a tela de login.

Figura 11 Tela de login no sistema

Caso os dados informados para login estejam corretos, o sistema redirecionar o
usurio para a tela inicial do sistema (Figura 12). Nessa tela h um menu de opes que
apresentam as funcionalidades disponveis do sistema.

Figura 12 Tela inicial do sistema



32
A Figura 13 apresenta a forma de cadastro de usurio. Para isso basta estar logado
com um usurio administrador (Admin) e selecionar a opo Usurios - Cadastrar que o
sistema mostrar a tela de cadastro de usurio.

Figura 13 Cadastro de usurio

Nesta tela aps serem informados os dados do usurio e clicar em Salvar, o sistema
efetuar o processo de incluso do usurio no banco de dados. Caso este processo tenha sido
efetuado sem nenhum problema, o sistema redirecionar o contedo da pgina via Ajax para a
listagem de usurios cadastrados e ser emitida uma mensagem de que o usurio foi
cadastrado com sucesso, como mostra a Figura 14.

Figura 14 Tela de cadastro de usurios


33
A Figura 15 apresenta a forma de cadastro de aluguel. Para isso basta estar logado
com um usurio administrador (Admin) ou um usurio (User).

Figura 15 Cadastro de Aluguel

Para efetuar um aluguel (Figura 16) basta selecionar o cliente, digitando as iniciais
do nome. Se o cliente estiver cadastrado aparecer no auto-complete do campo as opes
para selecionar. Em seguida necessrio escolher a filial que o usurio deseja efetuar o
aluguel. Selecionados cliente e filial, clicando no cone com o smbolo + acima da tabela
podem ser adicionadas as peas para aluguel. Depois de adicionadas todas as peas desejadas,
basta clicar em Efetuar Aluguel que o sistema salvar o registro do aluguel.

Figura 16 Tela para efetuar aluguis


34

4.4 IMPLEMENTAO DO SISTEMA


As listagens de cdigo a seguir visam exemplificar a forma de implementao do
sistema. O objetivo mostrar o uso das tecnologias empregadas na implementao do
sistema. A Listagem 1 apresenta o cdigo para login ao sistema. Na tela de login so
informados dados para acesso ao sistema.
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:f="http://java.sun.com/jsf/core"
xmlns:p="http://primefaces.org/ui"
xmlns:ui="http://java.sun.com/jsf/facelets">
<h:head>
<title><ui:insert name="title">Login</ui:insert></title>
<link type="text/css" rel="stylesheet"
href="#{request.contextPath}/css/default.css" />
<link type="text/css" rel="stylesheet"
href="#{request.contextPath}/css/style.css" />
</h:head>
<h:body>
<h:form prependId="false">
<div id="loginPainel">
<p:panel header="Digite seu login" id="boxDlg">
<p>Bem Vindo, informe seu usurio e senha para entrar no sistema.</p>
<div><h:panelGrid columns="2" cellpadding="5">
<p:inputText id="username" value="#{loginMB.lf.usuario}" required="true"
size="40" requiredMessage="Usurio incorreto!" />
<p:watermark for="username" value="Informe o usurio" />
<p:password id="password" value="#{loginMB.lf.senha}" required="true"
size="40" requiredMessage="Senha incorreta!" />
<p:watermark for="password" value="Informe sua senha" />
</h:panelGrid>
<f:facet name="footer">
<p:commandButton action="#{loginMB.login}" value="Entrar"
onclick="PrimeFaces.cleanWatermarks();"
oncomplete="PrimeFaces.showWatermarks();"
update="boxDlg, messages" />
<p:commandButton type="reset" value="Limpar" />
</f:facet>
</div>
<p:panel>
<p:messages id="messages" display="icon" />
</div>
</h:form>
</h:body>
</html>
Listagem 1 Cdigo para login ao sistema



35
O cdigo da Listagem 1 est em HTML, com sua estrutura bsica head e body.
Todos os cdigos relacionados ao sistema so colocados na tag body. O formulrio que est
denominado com a tag form necessita de um action e um method, que por padro o POST,
para funcionar. Os campos Login e Senha usaro uma caixa de texto com a estrutura
HTML <p:inputText>, para que o usurio informe os respectivos dados. No action
informado o caminho que o sistema acessar a pgina. O method especifica a forma que os
dados sero transferidos para o servidor, podendo ser post ou get. Neste projeto foi optado
pelo post porque os dados no so mostrados na URL. Desta forma, eles no ficam visveis
para o usurio e mantido o conceito de URL clean, que se baseia em manter a URL o mais
legvel possvel.
Na tag <p:messages> h uma varivel chamada messages. Essa varivel
interpretada pelo PrimeFaces, que carrega uma mensagem de retorno que includa na
varivel FacesContext do JSF na classe Managed Bean. Na tag <p:inputText> do login e da
senha informado um value. Esse value informado para que o JSF vincule os dados com
um form (Listagem 2), que nada mais que uma classe com os gets e sets dos atributos que a
pgina conversa com o Managed Bean, o real motivo do form existir e manter os dados
encapsulados no Managed Bean que contem os mtodos das conexes com o banco de dados
para capturar os dados da tabela User.
package br.com.usandoprimefaces.form.user;
import java.io.Serializable;
import br.com.usandoprimefaces.bean.user.User;
public class UserForm extends User implements Serializable{

/**
*
*/
private static final long serialVersionUID = 1L;

public UserForm() {
super();
}

}
Listagem 2 Classe Form

A Listagem 3 apresenta o cdigo responsvel por apanhar os dados informados na
tela do login e verificar no banco de dados se esses dados esto corretos, para assim ser
possvel o acesso ao sistema.
public String login() {

User usuarioLogado = null;



36
try {
LoginDAO dao = new LoginDAOImpl();
usuarioLogado = dao.efetuaLogin(lf);
if (usuarioLogado != null) {
HttpSession session = (HttpSession) FacesContext
.getCurrentInstance().getExternalContext()
.getSession(false);
session.setAttribute("usuarioLogado", usuarioLogado);
return "/protected/index.xhtml";
} else
FacesContext.getCurrentInstance().addMessage(null,
new FacesMessage("Usurio no autenticado!"));
}
} catch (Exception e) {
e.getMessage();
}
return null;
}
Listagem 3 Login ao sistema

No cdigo apresentado na Listagem 3, as informaes de login so enviadas para o
mtodo que carregado da classe DAOImpl. Esse mtodo espera como parmetro um objeto
do tipo user e verifica se ele est correto. Caso o mtodo carregado retorne null, significa que
o login ou a senha informados so invlidos. E ento o mtodo redireciona o usurio para a
pgina do login do sistema com uma mensagem de erro. Se as informaes de login esto
corretas, o usurio adicionado em uma session com o nome de usuarioLogado e
redirecionado para a pgina index, que a tela inicial do sistema. Nessa listagem de cdigo
tambm so efetuados os tratamentos de erros que podem ser gerados. Caso um erro ocorra
uma mensagem adicionada na FacesContext do JSF e o usurio redirecionado para a tela
de login do sistema.
Na Listagem 4 est o cdigo que cria a query de consulta para verificao dos dados
e retorna o usurio caso encontrado, ou uma mensagem de erro.
package br.com.usandoprimefaces.daoimpl.login;

import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.criterion.Restrictions;

import br.com.usandoprimefaces.bean.user.User;
import br.com.usandoprimefaces.dao.login.LoginDAO;
import br.com.usandoprimefaces.form.login.LoginForm;
import br.com.usandoprimefaces.util.HibernateUtils;

public class LoginDAOImpl implements LoginDAO {

/* Mtodo que verifica o usuario no banco */
@Override
public User efetuaLogin(LoginForm form) {

User usuario = null;


37
SessionFactory session = HibernateUtils.getSessionFactory();
Session sess = session.openSession();
try {
sess.beginTransaction();
usuario = (User) sess.createCriteria(User.class)
.add(Restrictions.eq("usuario", form.getUsuario()))
.add(Restrictions.eq("senha", form.getSenha()))
.uniqueResult();
sess.getTransaction().commit();
} catch (Exception ex) {
System.out.println("Erro ao conectar " + ex.getMessage());
sess.close();
} finally {
if (sess != null) {
sess.close();
}
}
return usuario;
}
}
Listagem 4 Cdigo para consulta de usurio ao banco de dados

No cdigo apresentado na Listagem 4 est o tratamento do mtodo que carrega a
classe DAOImpl. Nesse mtodo verificado se o usurio informado est correto. Primeiro,
utiliza-se uma varivel usuario do tipo User e uma SessionFactory do Hibernate para
pesquisar no banco de dados. Com a criteria query criado o cdigo SQL de consulta no
banco para verificar se os dados do usurio esto corretos. Em seus parmetros so passados
os dados recuperados da pgina que foram informados pelo usurio e adicionado em forma de
restrictions, e esperado um UniqueResult que ir retornar um resultado nico do banco de
dados. Se atender essas condies, as excees so tratadas e o usuario retornado.
Na Listagem 5 apresentado o cdigo para capturar os dados informados pelo
usurio Administrador, para assim ser efetuado o cadastro do usurio.
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<!-- template="template/principal.xhtml" -->
<ui:composition template="../../template/principal.xhtml"
xmlns="http://www.w3.org/1999/xhtml"
xmlns:ui="http://java.sun.com/jsf/facelets"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:f="http://java.sun.com/jsf/core"
xmlns:p="http://primefaces.org/ui">

<ui:define name="conteudo">
<h:form id="userForm" prependId="false">
<p:messages id="messages" autoUpdate="true" closable="true" />
<p:panel id="painelUser">
<f:facet name="header">Cadastro e Edio de Usurio </f:facet>
<table width="100%">
<tr valign="top">
<td width="48%"><p:panelGrid styleClass="boxInterno" columns="2">
<h:outputLabel for="usuario" value="Usuario: " />


38
<p:inputText id="usuario" value="#{userMB.form.usuario}" required="true" />
<h:outputLabel for="senha" value="Senha: " />
<p:inputText id="senha" value="#{userMB.form.senha}"
required="true" type="password" />
<h:outputText value="Role: " />
<p:selectOneMenu id="role" required="true" value="#{userMB.form.role}">
<f:selectItem itemLabel="Selecione Um" itemValue="" />
<f:selectItem itemLabel="Administrador" itemValue="ADMIN" />
<f:selectItem itemLabel="Usurio" itemValue="USER" />
</p:selectOneMenu>
</p:panelGrid></td>
<td width="48%"><p:panelGrid styleClass="boxInterno" columns="2">
<h:outputLabel for="nome" value="Nome: " />
<p:inputText id="nome" value="#{userMB.form.nomeUser}" required="true" />
<h:outputLabel for="email" value="E-mail: " />
<p:inputText id="email" value="#{userMB.form.email}" required="true" />
<h:outputLabel for="dtCadastro" value="Dt. Cadastro: " />
<p:calendar disabled="true" required="true"
value="#{userMB.form.dtCadastro}" id="dtCadastro">
<f:convertDateTime pattern="dd/MM/yyyy" />
</p:calendar>
</p:panelGrid></td>
</tr>
</table>
<f:facet name="footer">
<p:commandButton action="#{userMB.salvar}" value="Salvar"
icon="ui-icon-circle-check" update="messages, painelUser" />
<p:commandButton value="Limpar Campos" type="reset"
icon="ui-icon-cancel" />
</f:facet>
</p:panel>

</h:form>
</ui:define>
</ui:composition>
Listagem 5 Cdigo para cadastro de usurio

O cdigo constante na Listagem 5 segue o mesmo padro da Listagem 1 Cdigo
para login ao sistema. Para cada campo do cadastro de usurios foi utilizado um label para
informar o campo e um input para informar ao usurio e uma caixa de texto para informar os
dados. Essa caixa contm um nome e um value para ser utilizado pelo Manage Bean e para
que esses dados possam ser utilizados na pgina JSF.
Na Listagem 6 informado o cdigo em que o usurio passado para a classe
responsvel por chamar os mtodos que salvam o usurio no banco de dados.
public String salvar() {
UserDAO dao = new UserDAOImpl();
User user = new User();
HttpSession session = (HttpSession) FacesContext.getCurrentInstance()
.getExternalContext().getSession(false);
User usuario = (User) session.getAttribute("usuarioLogado");
try {
// Funo usada para passar os dados do Object UserForm para o User
if (usuario.getRole().name().equalsIgnoreCase(Role.ADMIN.name())) {


39
BeanUtils.copyProperties(user, form);
dao.save(user);
FacesContext.getCurrentInstance().addMessage( null, new
FacesMessage(
"Salvo com sucesso!!!"));
return "/protected/user/listaUser.xhtml";
} else {
FacesContext.getCurrentInstance().addMessage( null, new
FacesMessage(
"Voc no tem permisso para executar esta ao!!!"));
}
} catch (IllegalAccessException e) {
FacesContext.getCurrentInstance().addMessage( null,new FacesMessage("No
foi possvel salvar o objeto. " + e.getMessage()));
} catch (InvocationTargetException e) {
FacesContext.getCurrentInstance().addMessage( null,new
FacesMessage("No foi possvel salvar o objeto. " + e.getMessage()));
}
return null;
}
Listagem 6 Cdigo para salvar o cadastro de usurio

No cdigo apresentado na Listagem 6, so criadas uma instncia de User para
informar os dados recebidos da pgina JSF, uma instncia do DAO para acessar os mtodos
existentes e uma HttpSession para obter o usurio logado. No cdigo da Listagem 6 no action
do boto Salvar na pgina JSF contm o Managed bean e o nome do mtodo salvar que
existe nele. Logo aps o mtodo ser invocado o sistema verifica se o usurio conectado um
administrador (Admin). Caso seja um administrador executado um save que recebe como
parmetro o usurio que foi informado na pgina. Em seguida adicionada a mensagem de
sucesso no cadastro e ento o sistema redireciona o usurio atravs do return para a pgina
de listagem de usurios.
O cdigo apresentado na Listagem 7 responsvel por chamar os mtodos para salvar,
excluir, listar, buscar e editar objetos. No pacote DAO (Data Access Objects) esto todas as
interfaces do sistema. Na interface apresentada na Listagem 6 invocado o mtodo save para
salvar o cadastro do usurio.
package br.com.usandoprimefaces.dao.user;
import java.util.List;
import br.com.usandoprimefaces.bean.user.User;
public interface UserDAO {
public List<User> listar();
public User save(User user);
public void delete(User user);
public User getById(int id);
public void update(User user);
}
Listagem 7 Cdigo para chamar mtodos de incluso, excluso e edio de objetos




40

Na Listagem 8 est o cdigo do mtodo para salvar o cadastro invocado.
@Override
public User save(User user) {

SessionFactory session = HibernateUtils.getSessionFactory();
Session sess = session.openSession();
try {
sess.beginTransaction();
sess.merge(user);
sess.getTransaction().commit();
return user;
} catch (HibernateException ex) {
System.out.println("Erro ao salvar objeto: " +
ex.getMessage());
sess.getTransaction().rollback();
sess.close();
} finally {
if (sess != null) {
sess.close();
}
}
return null;
}
Listagem 8 Cdigo para salvar cadastro de usurio invocado

Na Listagem 8 est o mtodo save invocado na Listagem 6. Esse mtodo inicia uma
transao com o banco de dados por meio de uma SessionFactory do Hibernate. Na execuo
dessa transao atribuda a entidade User, que foi passada por parmetro na chamada do
mtodo. Aps isso utilizado o merge para gravar no banco de dados. O merge verifica se o
registro sendo salvo j est no banco. Se no estiver o mesmo cadastrado e realizado um
commit da transao, retornando o registro que foi cadastrado.
Na Listagem 9 apresentado o cdigo para capturar os dados informados pelo
usurio do sistema para ser efetuado o cadastro do aluguel.
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<ui:composition template="../../template/principal.xhtml"
xmlns="http://www.w3.org/1999/xhtml"
xmlns:ui="http://java.sun.com/jsf/facelets"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:f="http://java.sun.com/jsf/core"
xmlns:p="http://primefaces.org/ui">

<ui:define name="conteudo">
<h:form id="form">
<p:messages id="messages" autoUpdate="true" closable="true" />
<p:panel id="painelAluguel">
<f:facet name="header">Aluguel</f:facet>
<table width="100%">
<tr valign="top">
<td width="48%"><p:panelGrid styleClass="boxInterno" columns="2">


41
<h:outputLabel value="Cliente:" for="cliente" />
<p:autoComplete id="cliente" value="#{aluguelMB.selectedCliente}"
completeMethod="#{aluguelMB.autoCompleteCliente}" var="cliente"
itemLabel="#{cliente.nome}" itemValue="#{cliente}"
converter="clienteConverter" maxResults="10" />
</p:panelGrid></td>
<td width="48%"><p:panelGrid styleClass="boxInterno" columns="2">
<h:outputText value="Filial:" />
<p:selectOneMenu id="estabelecimento" required="true"
value="#{aluguelMB.form.estabelecimento.idestabelecimento}">
<f:selectItems value="#{aluguelMB.estabelecimentos}"
var="estab" itemLabel="#{estab.nomeEstab}"
itemValue="#{estab.idestabelecimento}" />
</p:selectOneMenu>
</p:panelGrid></td>
</tr>
</table>
<p:panel id="painelListaRoupas" widgetVar="painelRoupas"
header="Vestidos selecionados:">
<f:facet name="header">
<p:commandButton id="btnAdicionarRoupa" icon="ui-icon-circle-plus"
onclick="dlgAdicionarRoupa.show()">
<p:tooltip for="btnAdicionarRoupa">Adicionar Roupa</p:tooltip>
</p:commandButton>
</f:facet>

<p:dataTable id="dataTableRoupa" var="roupasDataTable"
value="#{aluguelMB.roupasSelecionadas}"
emptyMessage="Nenhum registro encontrado!">
<p:column>
<f:facet name="header">
<h:outputText value="Referncia" />
</f:facet>
<h:outputText value="#{roupasDataTable.referencia}" />
</p:column>
<p:column>
<f:facet name="header">
<h:outputText value="Descrio" />
</f:facet>
<h:outputText value="#{roupasDataTable.descricao}" />
</p:column>
<p:column>
<f:facet name="header">
<h:outputText value="Cor" />
</f:facet>
<h:outputText value="#{roupasDataTable.cor}" />
</p:column>
<p:column>
<f:facet name="header">
<h:outputText value="Valor" />
</f:facet>
<h:outputText value="#{roupasDataTable.valor}">
<f:convertNumber minFractionDigits="2" />
</h:outputText>
</p:column>
<p:column>
<f:facet name="header">
<h:outputText value="Aes"></h:outputText>
</f:facet>


42
<p:commandButton id="btnExcluirRoupaPanel" icon="ui-icon-trash"
onclick="confirmacaoExcluir.show()">
<p:tooltip for="btnExcluirRoupaPanel">Excluir roupa do aluguel</p:tooltip>
<f:setPropertyActionListener value="#{roupasDataTable}"
target="#{aluguelMB.selectedRoupa}" />
</p:commandButton>
</p:column>
<f:facet name="footer">
<div align="right">
<h:outputLabel value="Valor Total:" for="valorTotal" />
<h:outputLabel id="valorTotal" value="#{aluguelMB.valorTotal}">
<f:convertNumber minFractionDigits="2" />
</h:outputLabel>
</div>
</f:facet>
</p:dataTable>
</p:panel>
<f:facet name="footer">
<p:commandButton action="#{aluguelMB.efetuarAluguel}"
value="Efetuar Aluguel" icon="ui-icon-circle-check"
update="messages, painelListaRoupas" />
<p:commandButton value="Limpar Campos" type="reset"
icon="ui-icon-cancel" />
</f:facet>
</p:panel>
</h:form>

<!-- INICIO DO DIALOG USADO PARA ADICIONAR ROUPAS AO DATATABLE -->
<h:form id="formModal">
<p:dialog header="Selecione a roupa que deseja adicionar"
widgetVar="dlgAdicionarRoupa" resizable="false"
id="dialogAdicionarRoupa" modal="true" showEffect="fade"
hideEffect="explode">

<p:dataTable id="roupas" paginator="true" rows="15"
paginatorTemplate="{CurrentPageReport} {FirstPageLink} {PreviousPageLink}
{PageLinks} {NextPageLink} {LastPageLink} {RowsPerPageDropdown}"
rowsPerPageTemplate="5,10,15" emptyMessage="Nenhum registro encontrado!"
var="roupa" value="#{aluguelMB.roupas}"
selection="#{aluguelMB.selectedRoupa}"
sortBy="#{roupa.referencia}" selectionMode="single"
rowKey="#{roupa.idroupa}" ajax="true">

<p:column>
<f:facet name="header">
<h:outputText value="Referncia" />
</f:facet>
<h:outputText value="#{roupa.referencia}" />
</p:column>
<p:column>
<f:facet name="header">
<h:outputText value="Descrio" />
</f:facet>
<h:outputText value="#{roupa.descricao}" />
</p:column>

<p:column>
<f:facet name="header">
<h:outputText value="Cor" />


43
</f:facet>
<h:outputText value="#{roupa.cor}" />
</p:column>
<p:column>
<f:facet name="header">
<h:outputText value="Valor" />
</f:facet>
<h:outputText value="#{roupa.valor}">
<f:convertNumber minFractionDigits="2" />
</h:outputText>
</p:column>
</p:dataTable>
<f:facet name="footer">
<p:commandButton id="btnDlgConfirmaAdicao" value="Adicionar Roupa"
icon="ui-icon-circle-check" oncomplete="dlgAdicionarRoupa.hide()"
actionListener="#{aluguelMB.adicionarRoupaPanel}"
update=":form:dataTableRoupa" />
<p:commandButton id="btnDlgCancelaAdicao" icon="ui-icon-cancel"
onclick="dlgAdicionarRoupa.hide()" type="button" value="Cancelar" />
</f:facet>
</p:dialog>
</h:form>
<!-- MENSAGEM PARA CONFIRMAO DE EXCLUSO DA ROUPA DA TABLE -->
<p:confirmDialog id="confirmacaoDialogExcluir"
message="Tem certeza que deseja EXCLUIR esta roupa do aluguel?"
header="Confirmao" severity="alert" widgetVar="confirmacaoExcluir">
<p:commandButton id="btnConfirmExcluir" value="Sim"
oncomplete="confirmacaoExcluir.hide()" icon="ui-icon-circle-check"
actionListener="#{aluguelMB.excluirRoupaPanel}"
update=":form:dataTableRoupa" />
<p:commandButton id="btnDeclineExcluir" value="Cancelar"
onclick="confirmacaoExcluir.hide()" type="button"
icon="ui-icon-cancel" />
</p:confirmDialog>
</ui:define>
</ui:composition>
Listagem 9 Cdigo para efetuar aluguel

No cdigo da Listagem 9, o action do boto Efetuar Aluguel na pgina JSF contm
o Managed bean e o nome do mtodo que existe nele e responsvel para efetuar o aluguel.
Logo aps o mtodo ser invocado, o sistema verifica se o usurio conectado um
administrador (Admin) ou um usurio (User), caso seja executada uma funo da
BeanUtils.copyProperties que apanha os dados do form e os passa para o objeto aluguel. Em
seguida so atribudos valores aos campos e chamado o mtodo efetuarALuguel da classe
DAO que recebe como parmetro o aluguel que foi criado e populado. Em seguida
adicionada a mensagem de sucesso no cadastro e ento o sistema redireciona o usurio atravs
do return para a pgina de listagem de aluguis ativos e pendentes que o padro dos novos
aluguis.


44
Na Listagem 10 informado o cdigo em que o aluguel passado para a classe
responsvel por chamar os mtodos que efetuam o aluguel no banco de dados.
public String efetuarAluguel() {

AluguelDAO dao = new AluguelDAOImpl();
EstabelecimentoDAO daoEstab = new EstabelecimentoDAOImpl();

Aluguel aluguel = new Aluguel();

HttpSession session = (HttpSession) FacesContext.getCurrentInstance()
.getExternalContext().getSession(false);
User usuario = (User) session.getAttribute("usuarioLogado");

try {

/*
* Verifica se o usurio e ADMIN ou USER antes de continuar o mtodo
*/
if (usuario.getRole().name().equalsIgnoreCase(Role.ADMIN.name())
|| usuario.getRole().name()
.equalsIgnoreCase(Role.USER.name())) {
// Funo usada para passar os dados do Object AluguelForm para
// o
// Aluguel
BeanUtils.copyProperties(aluguel, form);

// Setando os valores para o aluguel ser efetuado
aluguel.setValorTotal(getValorTotal());
aluguel.getRoupas().addAll(getRoupasSelecionadas());
aluguel.setCliente(selectedCliente);
aluguel.setEstabelecimento(daoEstab.getById(form
.getEstabelecimento().getIdestabelecimento()));
aluguel.setPendente(true);
aluguel.setDesativado(false);

// Efetuando o aluguel por padro sera setado como pendente
dao.efetuarAluguel(aluguel);

FacesContext.getCurrentInstance().addMessage(null,
new FacesMessage("Efetuado com sucesso!!!"));
return "/protected/aluguel/listaAluguelAtivoPendente.xhtml";
} else {
FacesContext
.getCurrentInstance()
.addMessage(
null,
new FacesMessage(
"Voc no tem permisso para executar esta ao!!!"));
}

} catch (IllegalAccessException e) {
FacesContext.getCurrentInstance().addMessage(
null,
new FacesMessage("No foi possvel efetuar o aluguel: "
+ e.getMessage()));
} catch (InvocationTargetException e) {
FacesContext.getCurrentInstance().addMessage(
null,


45
new FacesMessage("No foi possvel efetuar o aluguel: "
+ e.getMessage()));
}

return null;
}
Listagem 10 Cdigo do Managed Bean para efetuar o aluguel e outras funcionalidades

No cdigo apresentado na Listagem 10 criada uma instncia de Aluguel para
armazenar os dados recebidos da pgina JSF, uma instncia do DAO para acessar os mtodos
existentes e uma HttpSession para obter o usurio logado.
O cdigo apresentado na Listagem 11 responsvel por chamar os mtodos para as
listagens, auto-complete do cliente, efetuao de aluguis, desativao de aluguis e
ativao de aluguis. No pacote DAO esto todas as interfaces do sistema. Na interface
apresentada na Listagem 11 invocado o mtodo efetuarALuguel para salvar o aluguel no
banco de dados.
public br.com.usandoprimefaces.dao.aluguel;

import java.util.List;

import br.com.usandoprimefaces.bean.aluguel.Aluguel;
import br.com.usandoprimefaces.bean.cliente.Cliente;

public interface AluguelDAO {
public List<Aluguel> listarAtivoPendente();
public List<Aluguel> listarAtivoBaixado();
public List<Aluguel> listarDesativados();
public List<Cliente> autoCompleteCliente(String strPesquisa);
public Aluguel efetuarAluguel(Aluguel aluguel);
public void desativarAluguel(Aluguel aluguel);
public void ativarAluguel(Aluguel aluguel);
public void baixarAluguel(Aluguel aluguel);
}
Listagem 11 Cdigo para chamar mtodos de listagem, desativao, ativao e efetuao do aluguel e
autocomplete do cliente

Na Listagem 12 representado o mtodo efetuarALuguel invocado na Listagem 11.
Esse mtodo inicia uma transao com o banco de dados por meio de uma SessionFactory do
Hibernate. Na execuo dessa transao atribuda a entidade Aluguel, que foi passada por
parmetro na chamada do mtodo. Aps isso utilizado o merge para gravar no banco de
dados. O merge verifica se no local em que ser salvo o aluguel no banco no h registro. Se
no houver cadastra e faz um commit da transao, retornando o aluguel que foi cadastrado.


46

@Override
public Aluguel efetuarAluguel(Aluguel aluguel) {
SessionFactory session = HibernateUtils.getSessionFactory();
Session sess = session.openSession();
try {
sess.beginTransaction();
sess.merge(aluguel);
sess.getTransaction().commit();
return aluguel;
} catch (HibernateException ex) {
System.out.println("Erro ao efetuar aluguel: " + ex.getMessage());
sess.getTransaction().rollback();
sess.close();
} finally {
if (sess != null) {
sess.close();
}
return null;
}
Listagem 12 Cdigo para efetuar o aluguel no banco de dados



47
5 CONCLUSO


O objetivo deste trabalho de concluso de curso foi a implementao de um sistema
para aluguel e venda de roupa. A aplicao desenvolvida voltada para web, utilizando
recursos que caracterizam uma aplicao Internet como rica, as denominadas RIAs. Dessa
forma, o referencial terico do trabalho esteve centrado em conceitos relacionados a esse tipo
de aplicao e tecnologias para o seu desenvolvimento.
Como estgio, o autor deste trabalho fez uma primeira verso da modelagem e
implementou alguns cadastros. Com o decorrer do desenvolvimento, especialmente para
funcionalidades mais complexas, ou seja, no cadastros simples, muitas dificuldades foram
encontradas na implementao. Assim, decidiu-se buscar alternativas tecnolgicas para a
implementao do sistema. Optou-se pelo uso de JSF com PrimeFaces pelas muitas
referncias favorveis ao uso dessas tecnologias encontradas na Internet e pelas opinies de
programadores conhecidos. Desta forma, a codificao do sistema teve que ser reiniciada.
Com as mudanas realizadas em termos de tecnologias, para o desenvolvimento do
sistema foram utilizadas as tecnologias Java para web, com frameworks que facilitam o
desenvolvimento como o Hibernate para persistncia de dados no banco, Java Server Faces
2.0 que procura encapsular toda a API e PrimeFaces que disponibiliza uma grande facilidade
para implementao da interface utilizando Java Script, Ajax e Jquery, assim como suas
validaes.
Optou-se pelo desenvolvimento para web pelo fato da facilidade de interligar as filiais
e a matriz e por ter um nico banco de dados para toda a rede de lojas. Isso porque a empresa
que utilizar esse sistema composta por matriz e filiais. Assim, os gerentes podem fazer
consultas e anlises da sua loja sem precisar entrar em contato direto com outras pessoas,
agilizando o processo.
Com o decorrer do desenvolvimento deste projeto foi adquirido muito conhecimento
em Java para web e nas outras tecnologias utilizadas. A necessidade de pesquisar sobre as
tecnologias que foram utilizadas permitiu analisar os cdigos elaborados de outra maneira.
Verificou-se nessa busca pelo aprendizado que uma boa maneira de melhorar a elaborao do
prprio cdigo utilizar APIs, sem esquecer que importante o conhecimento dos conceitos
fundamentais. Dentre esses conceitos destacam-se os relacionados orientao a objetos e das
prprias linguagens, incluindo o Jquery e JavaScript.


48
Com o desenvolvimento deste trabalho percebeu percebeu-se que muitas vezes
necessrio projetar o desenvolvimento do restante do sistema para que as interferncias entre
as funcionalidades sejam visualizadas e analisadas.
Como trabalhos futuros, destacam-se especialmente a implementao de todas as
funcionalidades definidas para o sistema, inclusive as que surgiro com a realizao dos
testes. Os testes de usurios sero realizados pela empresa que utilizar o sistema. Os testes
para verificar consistncia e validaes do sistema sero realizados pelo prprio autor deste
trabalho.


49
REFERNCIAS


ASTAH. Astah community. Disponvel em: <http://astah.change-
vision.com/en/product/astah-community.html>. Acesso em: 08 ago. 2012.
BIANCHINI, Sandro. Avaliao de mtodos de desenvolvimento de aplicaes web.
Dissertao ICMC/USP, 2008.
CHUNG, Sam; LEE, Yun-Sik. Modeling web applications using Java and XML related
technologies. Proceedings of the 36th Hawaii International Conference on System Sciences
(HICSS03), 2003, p. 322-331.
DEZIGN. DeZign for databases. Disponvel em:
<http://www.datanamic.com/dezign/index.html>. Acesso em: 25 ago. 2012.
ECLIPSE. Eclipse IDE. Disponvel em: <http://www.eclipse.org>. Acesso em: 05 set. 2012.
GAMMA, Erich; JOHNSON, Ralph; HELM, Richard; VLISSIDES, John. Padres de
projeto: solues reutilizveis de software orientado a objetos. Porto Alegre: Bookman,
2000.
GLASSFISH. JavaServer Faces specification. Disponvel em: <http://javaserverfaces-spec-
public.java.net/>. Acesso em: 10 ago. 2012.
HIBERNATE, Hibernate - JBoss community. Disponvel em: <http://www.hibernate.org>.
Acesso em: 02 ago. 2012.
JAVA. Java. Disponvel em: http://www.oracle.com/us/technologies/java/index.html. Acesso
em: 12 ago. 2012.
JQUERY, Jquery. Disponvel em: <http://jquery.com>. Acesso em: 12 ago. 2012.
JSF. JavaServer Faces. Disponvel em: <http://www.javaserverfaces.org/>. Acesso em: 20
set. 2012.
KHIN, Su Su. Business processes solution with apache struts framework. 2009
International Conference on Computer Engineering and Technology (ICCET). IEEE
Computer Society, 2009, p. 280-282.
MIRANDA, Divino Gomes; SILVA, Marcos Alberto Lopes da. Novos recursos para
desenvolvimento na plataforma JavaEE 5 com a especificao EJB 3.0, 2006. Disponvel
em: http://www.linhadecodigo.com.br/Artigo.aspx?id=1085. Acesso em: 09 jul. 2012.
MYSQL. MySQL. Disponvel em: <http://www.mysql.com>. Acesso em: 10 de set. 2012.
PRAJAPATI, Harshad B.; DABHI, Vipul K. High quality web-application development on
JavaEE platform. IEEE International Advance Computing Conference (IACC 2009), 2009,
p. 1664-1669.
PRESSMAN, Roger. Engenharia de software. Rio de Janeiro: MacGraw-Hill, 2005.


50
PRIMEFACES. PrimeFaces quickstart tutorial-part1. Disponvel em:
http://java.dzone.com/articles/primefaces-quickstart-tutorial. Acesso em: 18 ago. 2012.
RUMBAUGH, James; BLAHA, Michael; PREMERLANI, William; EDDY, Frederick;
LORENSEN, William. Modelagem e projetos baseados em objetos. Rio de Janeiro:
Campus, 1997.
SILVA, Maurcio Samy. JQuery. A biblioteca do programador JavaScript. Novatec, 2010.
SOUZA, Vtor. Introduo ao desenvolvimento web em Java, 2008. Disponvel em:
http://creativecommons.org/licenses/by-nc-sa/2.5/deed.pt. Acesso em: 7 set. 2011.
TOMCAT. Apache Tomcat. Disponvel em: <http://tomcat.apache.org/>. Acesso em: 12 set.
2011.
WANG, Guanhua. Application of lightweight MVC-like structure in PHP. 2011
International Conference on Business Management and Electronic Information (BMEI 2011),
IEEE, 2011, p. 74-78.

Você também pode gostar