1. O documento descreve o desenvolvimento de um sistema web para gerenciamento de lojas de aluguel e venda de roupas utilizando tecnologias JavaEE.
2. O sistema foi projetado seguindo o padrão MVC e implementado usando as tecnologias Java, JSF, PrimeFaces, Hibernate e banco de dados MySQL.
3. O trabalho apresenta detalhes sobre o projeto, modelagem, implementação e funcionalidades do sistema web para auxiliar no gerenciamento de lojas de aluguel e venda de roupas.
1. O documento descreve o desenvolvimento de um sistema web para gerenciamento de lojas de aluguel e venda de roupas utilizando tecnologias JavaEE.
2. O sistema foi projetado seguindo o padrão MVC e implementado usando as tecnologias Java, JSF, PrimeFaces, Hibernate e banco de dados MySQL.
3. O trabalho apresenta detalhes sobre o projeto, modelagem, implementação e funcionalidades do sistema web para auxiliar no gerenciamento de lojas de aluguel e venda de roupas.
1. O documento descreve o desenvolvimento de um sistema web para gerenciamento de lojas de aluguel e venda de roupas utilizando tecnologias JavaEE.
2. O sistema foi projetado seguindo o padrão MVC e implementado usando as tecnologias Java, JSF, PrimeFaces, Hibernate e banco de dados MySQL.
3. O trabalho apresenta detalhes sobre o projeto, modelagem, implementação e funcionalidades do sistema web para auxiliar no gerenciamento de lojas de aluguel e venda de roupas.
1. O documento descreve o desenvolvimento de um sistema web para gerenciamento de lojas de aluguel e venda de roupas utilizando tecnologias JavaEE.
2. O sistema foi projetado seguindo o padrão MVC e implementado usando as tecnologias Java, JSF, PrimeFaces, Hibernate e banco de dados MySQL.
3. O trabalho apresenta detalhes sobre o projeto, modelagem, implementação e funcionalidades do sistema web para auxiliar no gerenciamento de lojas de aluguel e venda de roupas.
Baixe no formato PDF, TXT ou leia online no Scribd
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">
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;
/* 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">
</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) {
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">
<!-- 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">
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();
/* * 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;
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.
Devops Uma Poc Utilizando Rancher 2 X para Realizar Entregas Rapidas e Seguras Com Canary Release em Sistemas de Alta Criticidade Autor Silva Erik Maria Rodrigues Da