CENTRO ESTADUAL DE EDUCAÇÃO TECNOLÓGICA PAULA SOUZA FACULDADE DE TECNOLOGIA DE LINS PROF. ANTONIO SEABRA CURSO SUPERIOR DE TECNOLOGIA EM BANCO DE DADOS KALIANE APARECIDA PILON BACHIEGA DESENVOLVIMENTO DE SISTEMA PARA CONTROLE DAS ATIVIDADES DO SETOR DE ESTÁGIO DA FATEC DE LINS LINS/SP 1º SEMESTRE/2013 CENTRO ESTADUAL DE EDUCAÇÃO TECNOLÓGICA PAULA SOUZA FACULDADE DE TECNOLOGIA DE LINS PROF. ANTONIO SEABRA CURSO SUPERIOR DE TECNOLOGIA EM BANCO DE DADOS KALIANE APARECIDA PILON BACHIEGA DESENVOLVIMENTO DE SISTEMA PARA CONTROLE DAS ATIVIDADES DO SETOR DE ESTÁGIO DA FATEC DE LINS Trabalho de Conclusão de Curso apresentado à Faculdade de Tecnologia de Lins para obtenção do Título de Tecnóloga em Banco de Dados. Orientador: Prof. Me. Anderson Pazin LINS/SP 1º SEMESTRE/2013 KALIANE APARECIDA PILON BACHIEGA DESENVOLVIMENTO DE SISTEMA PARA CONTROLE DAS ATIVIDADES DO SETOR DE ESTÁGIO DA FATEC DE LINS Trabalho de Conclusão de Custo apresentado à Faculdade de Tecnologia de Lins, como parte dos requisitos necessários para a obtenção do título de Tecnóloga em Banco de Dados sob orientação do Prof. Me. Anderson Pazin. Data de Aprovação: 18/06/2013 _____________________________________ Orientador (Prof. Me. Anderson Pazin) _____________________________________ Profª Me. Gisele Molina Becari _____________________________________ Prof. Me. Adriano Bezerra A Deus, a meu esposo Naylor, aos meus pais Marineide e Aparecido Gilberto, a minha irmã Natashi e a minha avó Lourdes, in memorian. Kaliane Aparecida Pilon Bachiega AGRADECIMENTOS Agradeço a Deus por ser o detentor de tudo e por ter me concedido essa conquista. Aproveito também, para manifestar a minha gratidão ao meu esposo Naylor pela compreensão, paciência, carinho, apoio e incentivo durante a realização deste trabalho. Não poderia esquecer-me de incluir aqui, meus pais, minha irmã e a minha avó Lourdes, in memorian, por sempre me incentivarem e serem o motivo por estar aqui hoje. Com alegria fico grata pela oportunidade de cumprir uma promessa a alguém que foi muito especial em minha vida, minha avó. A todos os funcionários da FATEC e amigos que conquistei, gostaria de dizer que foram muito importantes e que sempre serão lembrados com muito carinho. Gostaria de agradecer ao meu orientador Prof. Me. Anderson Pazin por todo apoio e atenção, a todos que direta ou indiretamente contribuíram para realização deste trabalho e aos professores: Prof. Me. Mario Henrique S. Pardo, Prof. Me. Fábio Lúcio Meira, Profª Mª Luciane Noronha do Amaral, Profª Mª Adriana de Bortoli, Prof. Me. Julio Fernando Lieira, Prof. Me. Adriano de Souza Marques, Prof. Me. Alexandre Ponce de Oliveira, Prof. Me. Luiz Fernando de Oliveira Silva, Profª Mª Gisele Molina Becari, Prof. Dr. Luciano Soares de Souza, Prof. Me. Adriano Bezerra, Prof. Dr. Renato Correia de Barros, Prof. Me. Alexandre Teso, Profª Mª Elaine V. H. de Moraes, Prof. Me. Euclides Reame Junior, Prof. Me. João Luiz C. de Moraes, Prof. Me. Luiz Antonio Cabañas, Prof. Me. Rogerio Pinto Alexandre, Profª Mª Sandra Maria G. Bertozzo. Por fim, muito obrigada a todos com quem tive a grande oportunidade de conviver durante meu período de estágio na FATEC. Em especial ao Rafael Hamamura com quem aprendi muito e ao Bruno Floriano pelo tema deste trabalho. RESUMO O meio de organização do trabalho mudou extremamente se comparado há apenas algumas décadas. O que antes, em sua maioria, era realizado manualmente agora enfrenta as mudanças e facilidades trazidas pela computação. Todavia, ainda existem setores que não contam com sistemas informatizados para auxílio nas atividades realizadas diariamente. Nesse contexto encontra-se o setor de estágio da FATEC de Lins. A informatização desse setor, através do desenvolvimento de um sistema web, pode contribuir para facilitar e aprimorar as atividades ali realizadas, por permitir o acesso a informações mais rapidamente, por exemplo. Deste modo, este trabalho objetiva o desenvolvimento de uma aplicação web para o referido setor, com foco nas tecnologias utilizadas, no sentido de poder contribuir para o aprimoramento dos seus processos cotidianos, por meio da agilização da geração de documentos e relatórios, bem como facilitar o acesso a dados de empresas e estagiários. O sistema conta com áreas para cadastros, acompanhamento das atividades realizadas pelos estagiários, possibilita que estagiários preencham o seu relatório mensal, disponibiliza informações sobre vagas de estágio e permite diversas consultas aos dados nele inseridos. Para que o objetivo fosse concretizado foram utilizadas as seguintes tecnologias: Java Server Faces (JSF), PrimeFaces, Hibernate, Java Enterprise Edition (JEE), o banco de dados Mysql , IReports e Integrated Development Environment (IDE) Netbeans. Palavras-chave: setor de estágio, aplicação web, primefaces, JSF. ABSTRACT The means of the organization of work has changed greatly compared a few decades ago. What before, mostly done manually was now facing the changes and facilities brought about by computing. However, there are still areas that do not have systems to aid in daily activities. In this context is the internship department of FATEC Lins. The computerization of this department through the development of a web system can help to facilitate and enhance the activities carried out there by allowing access to information more quickly, for example. Being so, this work aims to develop a web application for this sector, with a focus on technologies used in order to contribute to the improvement of their daily processes through streamlining of document generation and reporting, as well as facilitate access to business data and trainees. The system has areas for records, monitoring of activities performed by the trainees, enables trainees meet their monthly report provides information on apprenticeship positions and allows various queries against the data contained therein. To that goal was achieved were used the following technologies: Java Server Faces (JSF), PrimeFaces, Hibernate, Java Enterprise Edition (JEE), the MySQL database, iReports and Integrated Development Environment (IDE) Netbeans. Keywords: internship department, web application, primefaces, JSF. LISTA DE ILUSTRAÇÕES Figura 1.1 – Alunos e estagiários Brasil. ................................................................... 19 Figura 1.2 – Porcentagem de alunos no ensino superior presencial e superior à distância. ................................................................................................................... 20 Figura 1.3 – Página voltada a empresas no site da CIEE ......................................... 22 Figura 1.4 – Página voltada a estudantes e estagiários no site da CIEE. ................. 24 Figura 1.5 – Página voltada a instituições de ensino no site da CIEE....................... 24 Figura 2.1 – Fases do Programa Java. ..................................................................... 28 Figura 2.2 – Camadas da plataforma Java EE. ......................................................... 29 Figura 2.3 – Framework JSF. .................................................................................... 31 Figura 2.4 – Árvore de componentes. ....................................................................... 32 Figura 2.5 – Codificação e decodificação página JSF. .............................................. 33 Figura 2.6 – Exemplo de DataTable. ......................................................................... 34 Figura 2.7 – Código para criação do DataTable. ....................................................... 35 Figura 2.8 – Arquivo hibernate.cfg.xml. ..................................................................... 36 Figura 2.9 – Esquema de como o Hibernate funciona. ............................................. 38 Figura 2.10 – Interface de linha de comando. ........................................................... 41 Figura 2.11 – Interface gráfica do programa MySQL Workbench. ............................ 41 Figura 3.1– Diagrama de atividade gerenciar login de usuários................................ 48 Figura 3.2– Diagrama MVC gerenciar login de usuários. .......................................... 49 Figura 3.3 – Diagrama de sequência gerenciar login de usuários............................. 49 Figura 3.4 – Diagrama de atividade manter estagiário. ............................................. 51 Figura 3.5– Diagrama MVC manter estagiário. ......................................................... 51 Figura 3.6 – Diagrama de sequência manter estagiário. ........................................... 52 Figura 3.7 – Diagrama de atividade solicitar consulta de estagiário.......................... 52 Figura 3.8 – Diagrama MVC solicitar consulta de estagiário. .................................... 53 Figura 3.9 – Diagrama sequência solicitar consulta de estagiário............................. 53 Figura 3.10 – Diagrama de atividade assinalar documentos entregues. ................... 54 Figura 3.11 – Diagrama de MVC assinalar documentos entregues. ......................... 55 Figura 3.12 – Diagrama de sequência assinalar documentos entregues. ................. 55 Figura 3.13 – Diagrama de atividade confirmar nova vaga de estágio...................... 56 Figura 3.14 – Diagrama MVC confirmar nova vaga de estágio. ................................ 56 Figura 3.15 – Diagrama sequência confirmar nova vaga de estágio......................... 56 Figura 3.16 – Diagrama de atividade realizar termo de compromisso. ..................... 57 Figura 3.17 – Diagrama de MVC realizar termo de compromisso. ............................ 58 Figura 3.18 – Diagrama de sequência realizar termo de compromisso. ................... 58 Figura 3.19 – Diagrama de atividade confirmar carga horária de estágio. ................ 60 Figura 3.20 – Diagrama de MVC confirmar carga horária de estágio. ...................... 61 Figura 3.21 – Diagrama de sequência confirmar carga horária de estágio. .............. 61 Figura 3.22 – Diagrama de atividade manter vaga de estágio. ................................. 62 Figura 3.23 – Diagrama MVC manter vaga de estágio. ............................................ 63 Figura 3.24 – Diagrama sequência manter vaga de estágio. .................................... 63 Figura 3.25 – Diagrama de atividade preencher relatório a. ..................................... 65 Figura 3.26 – Diagrama MVC preencher relatório a. ................................................. 65 Figura 3.27 – Diagrama sequência preencher relatório a. ........................................ 66 Figura 3.28 – Diagrama de atividade preencher relatório b. ..................................... 66 Figura 3.29 – Diagrama MVC preencher relatório b. ................................................. 67 Figura 3.30 – Diagrama sequência preencher relatório b. ........................................ 67 Figura 3.31– Diagrama de caso de uso completo. .................................................... 68 Figura 3.32 – Diagrama de classes. .......................................................................... 69 Figura 3.33 – Modelo de entidade e relacionamento. ............................................... 70 Figura 4.1 – MySQL Workbench e estrutura da tabela usuário. ................................ 72 Figura 4.2 – Implementação do componente DataTable de cursos. ......................... 73 Figura 4.3– Página inicial do sistema. ....................................................................... 74 Figura 4.4 – Controle de Login. ................................................................................. 75 Figura 4.5 – Função func_doLogin. ........................................................................... 75 Figura 4.6 – método doGetPassword. ....................................................................... 76 Figura 4.7 – Função func_busca_Cep. ..................................................................... 77 Figura 4.8 – Área do responsável de estágio. ........................................................... 78 Figura 4.9 – Área do estagiário. ................................................................................ 78 Figura 4.10 – Área da empresa. ................................................................................ 79 Figura 4.11 – Consulta de convênio. ......................................................................... 80 Figura 4.12 – Criação de novo relatório. ................................................................... 80 Figura 4.13 – Criação de novo relatório diário........................................................... 81 Figura 4.14 – Cadastro de novo relatório diário. ....................................................... 81 Figura 4.15 – Conclusão de relatório diário. .............................................................. 81 Figura 4.16 – Conclusão de relatório diário. .............................................................. 82 Figura 4.17 – Conclusão de relatório diário. .............................................................. 83 Figura 4.18 – Editor de texto. .................................................................................... 84 Figura 4.19 – Página 1 do Plano de Estágio. ............................................................ 84 Figura 4.20 – Página 2 do Plano de Estágio. ............................................................ 85 Figura A.1 – Adicionar plug-ins no Netbeans. ........................................................... 93 Figura A.2 – Adicionar plug-ins do Ireport no Netbeans. ........................................... 94 Figura A.3 – Ícone da ferramenta Ireport no Netbeans. ............................................ 94 Figura A.4 – Janela para criar conexão com o banco. .............................................. 94 Figura A.5 – Tipo de conexão com o banco. ............................................................. 95 Figura A.6 – Configuração de conexão com o banco................................................ 96 Figura A.7 – Welcome to Jaspersoft. ........................................................................ 97 Figura A.8 – Welcome to Window. ............................................................................ 97 Figura A.9 – Janela para escolha do tema. ............................................................... 98 Figura A.10 – Criação relatório.................................................................................. 98 Figura A.11 – Relatório com tema cherry. ................................................................. 99 Figura A.12 – Relatório após modificação. ................................................................ 99 Figura A.13 – Barra de ferramentas do IReport . ...................................................... 99 Figura A.14 – Interface para criação de consultas SQL. ......................................... 100 Figura A.15 – Aba Report Inspector. ....................................................................... 101 Figura A.16 – Relatório compilado. ......................................................................... 102 LISTA DE QUADROS Quadro 3.1 – Necessidades e Prioridades ................................................................ 47 Quadro 3.2 – Eventos e Casos de Uso A. ................................................................. 48 Quadro 3.3 – Eventos e Casos de Uso B. ................................................................. 50 Quadro 3.4 – Eventos e Casos de Uso C. ................................................................ 59 Quadro 3.5 – Eventos e Casos de Uso D. ................................................................ 64 LISTA DE ABREVIATURAS E SIGLAS ABRES – Associação Brasileira de Estágios AJAX – Asynchronous JavaScript and Extensible Markup Language APIs - Application Programming Interfaces CIEE – Centro de Integração Empresa Escola EIS – Enterprise Information Systems HTML – Hypertext Markup Language HTTP – HyperText Transfer Protocol IDEs – Integrated Development Environments JDBC – Java Database Connectivity JDK – Java Development Kit JEE – Java Enterprise Edition JME – Java Micro Edition JPA – Java Persistence API JSE – Java Standart Edition JSF – Java Server Faces JVM – Java Virtual Machine MER – Modelo de Entidade e Relacionamento MVC – Model View Controller MYD – MyDara MYI – MyIndex PDF – Portable Document Format POJO – Plain Old Java Object SO – Sistema Operacional SQL – Structured Query Language UI – User Interface URL – Uniform Resource Locator XHMTL – Extensible Hypertext Markup Language XML – Extensible Markup Languague INEP/MEC – Instituto Nacional de Estudos e Pesquisas Educacionais e pelo Ministério da Educação SUMÁRIO LISTA DE ILUSTRAÇÕES ..................................................................... 8 LISTA DE QUADROS .......................................................................... 11 LISTA DE ABREVIATURAS E SIGLAS ................................................ 12 INTRODUÇÃO ..................................................................................... 14 1 SETOR DE ESTÁGIO ........................................................................ 16 1.1 LEIS DE ESTÁGIO .............................................................................................. 16 1.2 DADOS SOBRE O ESTÁGIO NO BRASIL .......................................................... 18 1.3 AGENTES DE INTEGRAÇÃO DE ESTÁGIO ...................................................... 20 1.4 CONSIDERAÇÕES SOBRE O CAPÍTULO ......................................................... 25 2 TECNOLOGIAS ENVOLVIDAS ......................................................... 26 2.1 JAVA.................................................................................................................... 26 2.1.1 Java Enterprise Edition .............................................................................. 29 2.2 JAVA SERVER FACES (JSF) ............................................................................. 30 2.3 PRIMEFACES ..................................................................................................... 33 2.4 HIBERNATE ........................................................................................................ 35 2.5 MYSQL ................................................................................................................ 40 2.6 O SERVIDOR TOMCAT ...................................................................................... 42 2.7 GERAÇÃO DE RELATÓRIOS ............................................................................. 43 2.8 CONSIDERAÇÕES SOBRE O CAPÍTULO ......................................................... 43 3 ANÁLISE E PROJETO DO SISTEMA ................................................ 45 3.1 ANÁLISE DE NEGÓCIO ...................................................................................... 45 3.1.1 Instrução do Problema ............................................................................... 45 3.1.2 Atores e Envolvidos no Processo............................................................... 45 3.1.3 Descrição do Ambiente Atual ..................................................................... 46 3.2 VISÃO GERAL DO PRODUTO ........................................................................... 47 3.2.1 Perspectiva do Produto .............................................................................. 47 3.2.2 Características ........................................................................................... 47 3.3 ANÁLISE E PROJETO DO SISTEMA ................................................................. 47 3.3.1 Casos de Usos, Diagramas de Atividades, MVC e Diagramas de Sequência ........................................................................................................... 47 3.4 DIAGRAMA DE CLASSES .................................................................................. 69 3.5 PROJETO DE BANCO DE DADOS .................................................................... 70 3.6 CONSIDERAÇÕES SOBRE O CAPÍTULO ......................................................... 71 4 IMPLEMENTAÇÃO ............................................................................ 72 4.1 BANCO DE DADOS ............................................................................................ 72 4.2 IMPLEMENTAÇÃO DO SISTEMA WEB ............................................................. 73 4.3 CONSIDERAÇÕES SOBRE O CAPÍTULO ......................................................... 85 CONCLUSÃO ....................................................................................... 86 REFERÊNCIAS BIBLIOGRÁFICAS ..................................................... 88 APÊNDICE A – Instalação do plugin iReport no Netbeans ................... 93 A.1 PASSOS DE INSTALAÇÃO................................................................................ 93 A.2 EXEMPLO DE CRIAÇÃO DE UM RELATÓRIO ................................................. 96 A.3 CONSIDERAÇÕES FINAIS .............................................................................. 102 14 INTRODUÇÃO Atualmente a computação vem facilitando os processos de trabalho. Dessa maneira, o que antes era organizado manualmente em muitas fichas e armários dentro de uma empresa, hoje é realizado e mais satisfatoriamente organizado por sistemas desenvolvidos pela computação. Assim, contratos e formulários podem ser preenchidos através da Internet e enviados a longas distâncias em apenas segundos. Deste modo, é possível observar que o meio de organização do trabalho mudou extremamente se comparado há apenas algumas décadas. Alguns avanços tecnológicos produzem um grande impacto nas organizações empresariais, inclusive na sociedade como um todo, exigindo uma completa alteração na forma de agir diante desta nova realidade. Atualmente, devido à revolução da informação, uma extraordinária mudança está fazendo com que passemos da sociedade industrial para a sociedade da informação. Os pilares desta nova sociedade, que é fortalecida a cada dia, estão baseados na TI e nos valores intangíveis. (AGRASSO; ABREU, 2000, p.12) Tendo em vista as facilidades proporcionadas pelo uso de sistemas computacionais, torna-se menos viável para uma empresa continuar com as antigas formas de organizações e realizações de suas atividades cotidianas. Laudon (2007), afirma que investimentos em sistemas e tecnologias da Informação são necessários, uma vez que se tornaram de extrema importância na prática de negócios garantindo a sobrevivência das empresas. Rainer e Cegielski (2011) defendem o ponto de vista de que as organizações hoje não vivem mais sem as tecnologias de informação e que as mesmas se tornaram partes integrantes de cada área de uma organização. Seguindo esse pensamento, constata-se que na Faculdade de Tecnologia de Lins “Professor Antonio Seabra” – FATEC Lins, o setor de estágio encontra-se hoje, sem um sistema específico para atender ao seu fluxo de atividades. A tramitação de documentos necessários para contratação de estagiários é feita por meio dos próprios alunos, que levam até as empresas interessadas os documentos para convênio, ou através do site da faculdade onde os documentos estão acessíveis. Assim, torna-se onerosa a tarefa de organizar esses documentos e realizar o acompanhamento das atividades de estágio de cada aluno, bem como os relatórios entregues e acompanhamento das cargas horárias. 15 Acredita-se, que a informatização do setor de estágio da FATEC de Lins poderá contribuir para agilizar as atividades diárias. Pois, por meio do desenvolvimento de um programa específico para atender as necessidades deste setor, o acompanhamento dos planos de estágio de cada aluno poderá vir a ser realizado com maior eficácia. Sendo assim, esta monografia tem por objetivo o desenvolvimento de um sistema web para o setor de estágio da faculdade com foco nas tecnologias utilizadas. Por meio do sistema proposto, pretende-se tornar possível uma nova forma de organização de trabalho, contribuindo no desempenho diário das tarefas desenvolvidas. Para que esses objetivos possam ser concretizados, utilizar-se-á as seguintes tecnologias: Java Server Faces (JSF), PrimeFaces, Hibernate, Java Enterprise Edition (JEE), o banco de dados Mysql, IReports e Integrated Development Environment (IDE) Netbeans. Quanto à organização do trabalho, no primeiro capítulo será realizada uma análise de mercado em busca de sua compreensão e investigação dos serviços já existentes para controle no setor de estágio. No segundo capítulo serão apresentadas as descrições das tecnologias necessárias para a realização desta monografia. No terceiro capítulo constará a análise de sistema. O capítulo quatro apresentará informações sobre a implementação do sistema. 16 1 SETOR DE ESTÁGIO Nesse capítulo encontram-se informações sobre o que é o estágio e as leis que o regem. 1.1 LEIS DE ESTÁGIO O estágio é um ato educativo, que se desenvolve em um ambiente de trabalho visando à integração dos estudantes com o mercado, é realizado através de supervisão por parte do professor orientador da instituição de ensino e também por um supervisor da parte cedente, como consta na Lei 11.788/2008, Art. 1º (BRASIL, 2008). Pode enquadrar-se na categoria de estagiário o aluno que se encontra nas situações onde os requisitos são (BRASIL, 2008): Estar frequentando o ensino regular em instituições de educação superior, de educação profissional, ou de ensino médio; Os que estiverem frequentando educação especial; E também, os que estiverem nos anos finais do ensino fundamental, na modalidade profissional da educação de jovens e adultos. Alunos estrangeiros devidamente matriculados em cursos superiores podem realizar atividade de estágio, todavia o prazo do visto temporário necessita condizer com o período previsto para o cumprimento do estágio como consta no Art. 4º (BRASIL, 2008). O estágio é dividido em duas categorias, o obrigatório e o não obrigatório. O estágio obrigatório é aquele, que constitui parte da grade curricular de um curso, contendo a especificação das horas necessárias e sendo requisito para obtenção de diploma. O estágio não obrigatório é aquele que não se encontra no projeto pedagógico do curso como requisito para aprovação, sendo desta forma opcional. (BRASIL, 2008) O estágio não é considerado um vínculo empregatício, desde que esteja dentro das normas regidas perante a lei. Desta forma, não lhe cabe encargos sociais, trabalhistas e previdenciários como consta no Art. 3º (BRASIL, 2008). Todavia, para que o vínculo não seja formado há alguns requisitos necessários a 17 serem cumpridos: matrícula e frequência do educando em uma das modalidades de ensino citadas acima e realização do termo de compromisso de estágio. As atividades desenvolvidas no estágio necessitam corresponder àquelas que são especificadas no seu termo de compromisso. (BRASIL, 2008) Podem contratar estagiários pessoas e órgãos, que encontram-se em situação prevista no Art. 9º. Art. 9º As pessoas jurídicas de direito privado e os órgãos da administração pública direta, autárquica e fundacional de qualquer dos Poderes da União, dos Estados, do Distrito Federal e dos Municípios, bem como profissionais liberais de nível superior devidamente registrados em seus respectivos conselhos de fiscalização profissional, podem oferecer estágio [...].(BRASIL, 2008, p.11) Existem requisitos necessários ao órgão ou pessoa cedente de estágio para que a oportunidade de estágio possa ser oferecida. Esses requisitos são: Realização de um termo de compromisso entre a instituição de ensino e o educando; A parte cedente necessita dispor de instalações, que proporcione ao educando local adequado para a aprendizagem social, profissional e cultural; Há a necessidade de um funcionário responsável na área de atuação do estagiário, para supervisionar as atividades realizadas pelo mesmo; Contratar ao estagiário um seguro contra acidentes; Possuir os documentos que comprovem a relação do estágio e no mínimo a cada seis meses enviar à instituição de ensino, relatórios das atividades desenvolvidas. (BRASIL, 2008) Quanto às obrigações relativas à instituição de ensino, cabe-lhe a celebração do termo de compromisso de estágio com educando e também com a parte cedente. A instituição de ensino deve ainda: realizar a avaliação das instalações concedidas ao ambiente de estágio, indicar o professor que será responsável pela supervisão das atividades, requerer relatórios das atividades desenvolvidas no prazo máximo de seis meses, cuidar para que o termo de compromisso seja cumprido e informar a parte cedente o calendário do ano letivo. (BRASIL, 2008) Segundo o Art. 10º (BRASIL, 2008), as horas diárias de estágio serão definidas entre a instituição, o estagiário, ou responsável, caso o mesmo seja menor 18 de idade, e também entre a parte cedente. No entanto, cabe ressaltar que não se deve ultrapassar seis horas diárias (30 horas semanais) de estágio em casos nos quais o educando seja um estudante de ensino superior, de educação profissional de nível médio ou do ensino regular. Quando a modalidade de ensino frequentada, corresponder a de nível de educação especial e dos anos finais do ensino fundamental, ou na profissional de educação de jovens e adultos, a quantidade de horas não deve ultrapassar quatro horas diárias, totalizando 20 horas semanais. Apenas pode realizar estágio com carga horária de até 40 horas semanais o educando, que frequenta curso onde a prática e o ensino teórico são alternados. Nesse caso a prática realizada através do estágio, necessita ser realizada em períodos onde não irão ocorrer aulas presenciais. Conforme os Art. 11, Art. 12 e Art. 13 (BRASIL, 2008), a duração de um estágio no mesmo local não poderá ultrapassar dois anos, cabendo exceção somente ao educando portador de deficiência. A cada um ano de estágio é assegurada férias de 30 dias ao aluno, caso o estágio seja remunerado, as férias também serão. O site do Centro de Integração Empresa – Escola (CIEE), trás um demonstrativo comparativo entre a antiga lei que regia as atividades de estágio e a nova lei. Dentre as principais mudanças, o site da CIEE (CIEE, 2012a), pontua a regulamentação da carga horária limite de estágio, a duração do estágio no mesmo local não podendo este ultrapassar dois anos, a designação de um professor orientador e a exigência de relatórios. Quanto às modificações na lei a respeito da parte cedente do estágio, cabe-lhes a nomeação de um supervisor para cada dez estagiários. Essas regulamentações citadas à cima, não constavam na antiga Lei 6494/77. 1.2 DADOS SOBRE O ESTÁGIO NO BRASIL Segundo o site da Associação Brasileira de Estágio (ABRES, 2012a), logo após o sancionamento da Lei 11.788/2008, o número de estagiários diminuiu em 20 mil no ensino superior e 40 mil no ensino médio, totalizando uma perca de 60 mil estagiários. O mesmo site ainda mostra que o número de vagas ofertadas para estágio em outubro de 2009 caiu em 40%. Todavia, nos meses seguintes, algumas empresas após se adaptarem as novas leis começaram a contratar estagiários 19 novamente. Em 2010 de acordo com o site da ABRES (2012b), foi realizado um censo pelo Instituto Nacional de Estudos e Pesquisas Educacionais e pelo Ministério da Educação (INEP/MEC) para uma compreensão da situação em que se encontram os estudantes brasileiros e o seu relacionamento com as atividades de estágio. Os dados mostraram que no Brasil existem 8.357.675 alunos no ensino médio e no nível superior existem 6.379.299, onde 5.499.120 são de cursos presenciais e 930.179 correspondem a alunos matriculados em ensino superior à distância, conforme representado nas figuras 1.1 e 1.2. Houve no ano correspondente a pesquisa, um aumento de 13,8% de estagiários cursando nível superior e um aumento de 4% de estagiários cursando nível médio. O número mais elevado de estagiários de nível superior deve-se as limitações, impostas pela Lei 11.788/2008, para estagiários que estão no ensino médio. (ABRES, 2012b) Figura 1.1 – Alunos e estagiários Brasil. Fonte: ABRES, 2012b. 20 Figura 1.2 – Porcentagem de alunos no ensino superior presencial e superior à distância. Fonte: ABRES, 2012b. Segundo a pesquisa realizada pelo INEP/MEC de 2010 e disponibilizada pelo site da ABRES (2012b), são ofertadas um milhão de vagas de estágios no Brasil, as vagas para os estudantes de nível superior são de 740 mil. Contudo, esse número ainda não é suficiente, uma vez que apenas 14,5% dos estudantes acabam conseguindo uma vaga para poder realizar as atividades de estágio. A pesquisa citada considera a oportunidade de estágio uma fonte importante para manutenção dos alunos nos cursos superiores, pois apenas 44,6% dos alunos que ingressam no nível superior de ensino concluem o curso, sendo uma das maiores causas a dificuldade financeira. Desta forma, o estágio constituindo-se uma forma de renda e a abertura de uma porta para a carreira profissional do estudante, podendo ajudar a diminuir os números de desistências nos cursos superiores. Quanto aos números relativos a estágio para alunos de ensino médio e educação profissional, a pesquisa realizada em 2010 pelo INEP/MEC, de acordo com o site da ABRES (2012b), mostra que apenas 260 mil são contemplados pela oportunidade de estágio, o que representa 3,1% dos estudantes desta modalidade de ensino. O censo citado acima contabilizou 8,6 milhões de alunos matriculados no ensino médio, e que podem estagiar a partir dos 16 anos. Apenas 2,57% desses estudantes estavam cursando o nível médio técnico. A pesquisa coloca como ponto relevante que 3,4 milhões de estudante frequentam a escola no período noturno, fato que corresponde à pretensão dos mesmos de conseguirem uma atividade para poderem contribuir com a renda da família. (ABRES, 2012b) 1.3 AGENTES DE INTEGRAÇÃO DE ESTÁGIO Agentes de integração de estágio são entidades que buscam aproximar as 21 instituições de ensino, os alunos e as partes cedentes de estágio, bem como buscar espaço de mercado para a atividade de estágio. Segundo o Art. 5º (BRASIL, 2008) e o site da ABRES (2012c), a atividade de agente de integração de estágio tem por deveres: O cadastro de alunos; A identificação das propostas e oportunidades de vagas de estágio; Cuidar para que as condições de realização de estágio previstas em lei sejam cumpridas; Encaminhar os contratos para seguro de estágio e preparar toda a documentação necessária (acordo de cooperação entre instituição de ensino e parte concedente de estágio, termo de compromisso de estágio e seguro contra acidentes pessoais); Realizar a organização dos cadastros das partes cedentes de estágio, bem como selecionar os locais para a realização dos mesmos. Realizar encaminhamento dos estudantes aos estágios ofertados pelas partes cedentes. Além das atribuições acima, segundo o site da ABRES (2012c), os agentes de integração podem ainda deixar a disposição das instituições de ensino, informações como: total de alunos cadastrados, quantidade de alunos realizando estágio e relação de estudantes em estágio por curso. De acordo com o Art. 5º (BRASIL, 2008), é vedada qualquer cobrança pelos agentes de integração em relação aos estudantes pela concessão de seus serviços. Os agentes de integração de estágio podem responder civilmente se encaminharem estudantes para estágios, cujas atividades não estejam de acordo com as especificadas nas grades curriculares do aluno. Existem vários sites que realizam a atividade de agentes de integração, que buscam estreitar o relacionamento entre estudantes, empresas e intuições de ensino. Nesses sites são encontradas informações e esclarecimentos sobre as leis que regem a atividade de estágio, deveres que cabem as empresas, alunos e instituições de ensino. Existem áreas distintas para cadastros de empresas, estudantes e instituições de ensino, com informações referentes ao interesse de cada um. Como exemplo de site que promove o papel de agente integrador pode-se citar o CIEE, uma instituição que é mantida pelo empresariado nacional e que não 22 visa finalidades lucrativas, promovendo desta forma a integração entre todos os envolvidos na relação de estágio. (CIEE, 2012b) No site do CIEE (2012c), existem áreas especificas para as empresas poderem: Realizar cadastros; Recuperar senhas; Enviarem propostas de estágio; Realizarem pré-convênios; Cadastrar supervisores de estágios; Certificados de seguro; Encaminhados para a oportunidade de estágio; Estagiários contratados; Recesso de estágio; Relatório de atividades desenvolvidas no estágio; Rescisões de contratos. Os exemplos acima podem ser visualizados na figura 1.3. Figura 1.3 – Página voltada a empresas no site da CIEE Fonte: CIEE, 2012c. 23 Este site, CIEE, que promove a função de agente de integração, também possui áreas reservadas a estagiários e instituições de ensino, como mostradas nas figuras 1.4, e 1.5. Na área de estudantes, no site do CIEE (2012d), podem ser encontradas funcionalidades para alunos que ainda não foram contemplados com estágio e querem realizar seu cadastro no site, como também funcionalidades para estudantes que já foram contemplados com a oportunidade de estágio. As funcionalidades disponibilizadas para os estudantes são: Área para cadastro; Área para atualização de dados; Banco de vagas de estágio ofertadas; Currículo do estudante; Cursos à distância; Histórico de vagas; Testes de capacitação; Testes de temperamentos entre outras. O aluno que já realiza a atividade de estágio possui as seguintes áreas segundo o site CIEE (2012d): Certificado de seguro; Curso primeiro estágio; Declaração de estágio; Pagamento de bolsa; Relatório de estágio. As instituições de ensino podem realizar as seguintes operações no site da CIEE (CIEE, 2012e): Cadastro do orientador de estágio; Atestado de estágio; Cartaz de vagas de estágio ofertadas; Estagiários contratados por curso; Estagiários contratados por empresa; Estudantes em seleção para estágio; Plano de estágio; Relatórios de Atividades; 24 Rescindidos por curso; Síntese de relatórios; Termo de realização. Figura 1.4 – Página voltada a estudantes e estagiários no site da CIEE. Fonte: CIEE, 2012d. Figura 1.5 – Página voltada a instituições de ensino no site da CIEE Fonte: CIEE, 2012e. 25 1.4 CONSIDERAÇÕES SOBRE O CAPÍTULO As funcionalidades coletadas no site de integração CIEE, colaboram para um entendimento dos requisitos que um sistema de controle de estágio deve conter. Tendo como base as pesquisas realizadas sobre as funcionalidades disponibilizadas pelos sites de agentes de integração de estágio, observam-se requisitos que se tornam essenciais para um sistema de controle de estágio são eles: Áreas específicas voltadas ao perfil de quem irão acessa-las, como por exemplo, empresas, alunos e administrador responsável pelas atividades de estágio; Controle de frequência dos estagiários; Áreas para realização de cadastros de alunos e empresas; Disponibilização de formulários oficiais, convênios entre outros; Controle de início e término dos contratos de estágio; Desenvolver restrições de acesso a certas áreas do sistema; Possibilitar consultas sobre dados dos estagiários; Manter um controle sobre os documentos entregues; No próximo capítulo serão abordadas a tecnologias que foram utilizadas para a realização deste trabalho monográfico. 26 2 TECNOLOGIAS ENVOLVIDAS Nesse capítulo encontram-se informações sobre as tecnologias utilizadas para realização desta monografia. 2.1 JAVA Segundo Mendes (2009), Java é uma linguagem de programação orientada a objetos, altamente portável e com alto desempenho. Sendo constituída pela linguagem de programação propriamente dita, uma plataforma formada por Application Programming Interfaces1 (APIs) e por uma máquina virtual Java. Esta linguagem pode ser considerada simples ao permitir que desenvolvedor não se preocupe com infraestruturas como o hardware e o sistema operacional em que o seu aplicativo será executado, o que facilita o seu desenvolvimento. Como facilitador pode ser citado também, o fato de Java implantar o conceito de reuzabilidade de códigos evitando a repetição desnecessária dos mesmos. Dentre os fatores de Java ser considerada uma linguagem de alto desempenho, é que ela conta com um recurso conhecido como garbage colletctor (coletor de lixo), que trabalha em segundo plano liberando memória que não se encontra mais em uso. Isso permite que a memória desalocada possa ser utilizada por outras partes do sistema, aumentando o seu desempenho. (MENDES, 2009) Linguagens de programação como C e Pascal, por exemplo, possuem seus respectivos códigos fontes, que ao serem compilados geram um código binário e este é compatível a um determinado sistema operacional (SO). Se o desenvolvedor precisar migrar de um sistema operacional para outro é necessário reescrever pedaços da aplicação onde o código fonte é específico para aquele sistema operacional. Isso ocorre devido ao fato de que a aplicação pode se comunicar com bibliotecas específicas de um sistema. (CALEUM, 2013) Java é uma linguagem interpretada e compilada e utiliza o recurso de uma máquina virtual, Java Virtual Machine (JVM). Esse fato possibilita a sua independência em relação à plataforma utilizada (sistemas operacionais e tipos de 1 Uma interface entre aplicativo e programação (API) é um conjunto de instruções e padrões de programação para acesso a um aplicativo de software baseado na web, ou ferramenta de web. Uma empresa de software lança seu API para o público de modo a que outros criadores de software possam desenvolver produtos acionados por esse serviço. (ROOS, 2013) 27 dispositivos, por exemplo). Para isso, a JVM funciona como um tradutor entre a aplicação e o sistema operacional de forma a realizar chamadas ao SO que foram requisitadas pela aplicação. Deste modo aplicação não se comunica diretamente com o sistema operacional, tornando-a independente. (CALEUM, 2013) Segundo Deitel (2007), programas desenvolvidos em Java possuem cinco fases e são elas: Edição: o código fonte é escrito em um programa editor, também podendo ser utilizado ambientes de desenvolvimento integrados (IDEs – Integrated Development Environments) e é armazenado em uma unidade de disco com a extensão java. Compilação: o código fonte é compilado e produz os bytecodes2 que são armazenados em um arquivo de extensão class e executados pela JVM. Os bytecodes são independentes das plataformas (hardwares e SOs), sendo por isso portáveis. Carga: é o processo em que os arquivos class que possuem os bytecodes são carregados na memória principal. Verificação: enquanto os bytecodes são carregados é feita uma verificação para constatar se os eles são válidos e não quebram restrições de segurança do Java. Execução: nesta fase os bytecodes são executados pela JVM. Na figura 2.1, estão representadas as fases de um programa escrito em Java, descritas acima. A linguagem Java, possui três edições sendo elas: Java Standart Edition (JSE): possibilita o desenvolvimento e a implementação de aplicativos Java em desktops e em servidores, oferecendo entre outros recursos segurança e portabilidade. (ORACLE, 2013c) Java Enterprise Edition (JEE): tem como alvo aplicações voltadas para a Internet e é muito utilizada em desenvolvimentos de aplicativos empresariais. (ORACLE, 2013b) 2 Java Micro Edition (JME): oferece conjunto de tecnologias que A linguagem Java é interpretada, ou seja, após a compilação é gerado um arquivo intermediário (nem texto nem executável) no formato bytecode, que poderá ser executado em qualquer arquitetura (Windows, Linux, Mac e Unix) que tenha uma máquina virtual Java instalada. (MENDES, p.20, 2009). 28 disponibiliza recursos para desenvolvedores criarem aplicações voltadas à dispositivos em que recursos de hardware são limitados. Essa plataforma é utilizada, por exemplo, em dispositivos móveis como smartphones. (ORACLE, 2013a) A criação de programas em Java exige que o desenvolvedor possua o Java Development Kit (JDK), que consiste em um ambiente de desenvolvimento onde são encontradas ferramentas para a criação e testes de aplicações. (ORACLE, 2013d) Figura 2.1 – Fases do Programa Java. Fonte: CyberSphera, 2013. 29 2.1.1 Java Enterprise Edition Segundo Sampaio (2011), a plataforma Java JEE trata-se de uma plataforma voltada ao desenvolvimento de aplicações coorporativas, o que significa ter o intuito de resolver problemas organizacionais ou empresariais. Essa plataforma divide-se em quatro camadas: cliente, apresentação, negócios e Enterprise Information Systems, que serão apresentadas abaixo: 3 Na camada cliente temos o web browser ou applets , podendo ter também aplicações Java rodando dentro do Java EE client container. Na camada de apresentação (ou Web Tier) temos os componentes web da arquitetura Java EE, como Java Server Pages (JSP), Servlets e Java Server Faces. Na camada de negócios rodamos os componentes remotos que implementam 4 regras de negócio ou representam entidades de dados, os Enterprise Javabeans e Web Services. Finalmente, na camada EIS (Enterprise Information Systems) temos os servidores de recursos corporativos, como: Servidores de Banco de Dados ou Mainframes. (SAMPAIO, 2011, p. 20 e 21) Na figura 2.2 abaixo são ilustradas as camadas da plataforma JEE. Figura 2.2 – Camadas da plataforma Java EE. Fonte: Sampaio, 2011, p.19. 3 Applets são aplicativos computacionais que possuem características limitadas, requerem poucos recursos de memória para serem executadas e, normalmente, são portáveis entre sistemas operacionais. Os applets escritos [...] em linguagem computacional Java são os mais populares. (GAUDIO, 2013). 4 Uma classe de entidade é um objeto Java simples e antigo (POJO), uma classe Java simples que é identificada como uma entidade pela anotação @Entity. (NETBEANS, 2013) 30 A plataforma Java JEE é baseada em containers5 e para cada tipo de aplicação programada baseada nesta plataforma existe um container específico. Para exemplificar, podem ser citados os exemplos que Sampaio (2011, p. 20), descreve: “Aplicações servidoras web rodam em um container Web. [...]. E aplicações clientes que utilizam componentes Java EE rodam no Aplication Client Container.” Ainda segundo Sampaio (2011), todas as aplicações feitas utilizando o Java JEE precisam de um container. Um dos containers mais utilizado para aplicações web é o Apache Tomcat, sendo este puramente web. 2.2 JAVA SERVER FACES (JSF) Segundo Geary e Horstmann (2012), o JSF é um framework6 baseado em componentes, é utilizado para o desenvolvimento de interface de usuário, User Interface (UI). É formado por componentes de UI, programação orientada a eventos e permite que desenvolvedores criem componentes adicionais. [...] o framework JSF é responsável pela interação com os dispositivos clientes e fornece ferramentas para unir a apresentação visual, a lógica da aplicação e a lógica de negócios de uma aplicação web. Entretanto, o escopo do JSF, restringe-se na camada de apresentação. (GEARY; HORSTMANN, 2012, p.24) Na figura 2.3 é exemplificada a visão desse framework. O JSF trabalha com a arquitetura model-view-controller. Essa arquitetura segundo Minetto (2007) representa o conceito da separação do desenvolvimento de uma aplicação em três camadas. Essas camadas são: Model – gerencia o comportamento dos dados da aplicação. View – gerencia a saída gráfica e textual da parte da aplicação visível ao usuário. Controller – interpreta as entradas de mouse e teclado do usuário, comandando a Visão e o Modelo para se alterarem de forma apropriada. Todas as requisições feitas pelo usuário são enviadas ao Controller. Este 5 Dificilmente uma aplicação gráfica é composta por um único componente, mas sim por vários componentes inter-relacionados. Para este tipo de aplicação, um componente fundamental é a área onde os demais componentes da aplicação estarão dispostos. Um componente que pode conter outros componentes é denominado um container. (RICARTE, 2002) 6 “[...] um framework de desenvolvimento é uma “base” de onde se pode desenvolver algo maior ou mais específico. É uma coleção de códigos-fonte, classes, funções, técnicas e metodologias que facilitam o desenvolvimento de novos softwares.”. (MINETTO, 2007, p.17). 31 manipula os dados usando o Model e invoca a View correta, de acordo com a ação executada ou com os resultados vindos do Model. (MINETTO, 2007, p.19) Figura 2.3 – Framework JSF. Fonte: Geary; Horstmann, 2012, p.24. De acordo com Geary e Horstmann (2012), o JSF desempenha o papel do controller, pois relaciona a interface com o modelo. Ele reage aos eventos criados pelos os usuários criando essa comunicação com o modelo. Este por sua vez, atualiza os seus dados com base nos valores criados pelo evento e o JSF retorna os dados processados novamente a interface. Para exemplificar, pode-se pensar em uma página de login de usuário, em que o usuário digita seu nome e sua senha. Esses dados são passados pelo JSF ao modelo que realiza o processamento para verificar se os dados são válidos. A resposta originada por esse processamento é devolvida a interface pelo JSF. Esse framework, o JSF, funciona da seguinte maneira: primeiramente o navegador se conecta a página inicial Extensible Hypertext Markup Language (XHMTL) da aplicação. O JSF lê esta página e suas tags7. Cada uma dessas tags está ligada a uma classe chamada tag handler, que consiste em uma classe de manipulação de tags. Ao serem lidas, essas tags constroem uma árvore de componentes, que formam uma estrutura de dados contendo objetos Java para cada uma das tags da interface da página JSF. Por exemplo, o objeto UIInput criado, possui correspondência com um campo h:inputText no arquivo JSF. Na figura 7 Tags são rótulos usados para informar ao navegador como deve ser apresentado o website. (HTML.NET, 2013) 32 2.4 é representada a árvore de componentes, acima citada. Figura 2.4 – Árvore de componentes. Fonte: Geary; Horstmann, 2012, p.26. Após a execução das tags handlers do JSF, a página Hypertext Markup Language (HTML) é rendenizada. Isto significa que as tags do JSF são convertidas a tags HTML simples. Para cada componente das tags JSF, existe um rendenizador. Esse processo é chamado de codificação. Em seguida ocorre o processo de decodificação. Para exemplificar esse processo usar-se-á o exemplo de envio de formulário. Após o usuário digitar seu nome e senha ele aciona o botão enviar. Então, o navegador envia os dados deste formulário para o servidor web através do método POST (método em que os parâmetros passados não podem ser visualizados através da Uniform Resource Locator8 (URL)). Dados de formulários são pares de strings, e esses pares são armazenados em uma tabela hash9. Através do processo de decodificação o JSF possibilita os componentes, construídos através da execução das tags handllers do JSF, inspecionar e interpretar os dados da tabela hash. O componente UIInput atualiza o bean através dos valores passados pelo usuário. Um bean é uma classe Java que expõe propriedades e eventos a um framework como o JSF. Uma propriedade é um valor nomeado de um determinado tipo que pode ser lido e/ ou escrito [...], ou seja, a convenção familiar get/set.(GEARY; HORSTMANN, 2012, p.16). 8 URL consiste em um endereço de um arquivo na Internet. É usada com frequência para localizar páginas web, por exemplo: www.google.com. (MICROSOFT, 2013) 9 Tabela hash trata-se de um array unidimensional e a execução de uma função hash é necessária para o acesso a cada entrada da tabela. Cada entrada da tabela pode ter um ou mais registros. (NUNES, 2008) 33 Outro componente, o UICommand, realiza a verificação para saber se o botão enviar foi acionado. Caso positivo, um evento é disparado para iniciar o processo de login. (GEARY; HORSTMANN, 2012) Na figura 2.5 é ilustrado o processo de codificação e decodificação de páginas JSF. Figura 2.5 – Codificação e decodificação página JSF. Fonte: Geary; Horstmann, 2012, p.27. 2.3 PRIMEFACES Segundo Çivici no manual PrimeFaces User’s Guide, PrimeFaces é um framework de componentes para JSF, utilizado para a criação de interface de usuário. Seu foco é trazer simplicidade aos desenvolvedores. Esse framework oferece ao desenvolvedor de aplicação um rico conjunto de componentes e possui Asynchronous JavaScript and Extensible Markup Language10 (AJAX) nativo. Alguns desses componentes são listados a seguir: Menu: esse componente possui recursos para posicionamentos de menus estáticos e dinâmicos; 10 Editor de HTML; InputMask: componente para formatação de campos; [...] é uma tecnologia para atualização de páginas web no navegador do cliente sem que o formulário tenha que ser submetido e a resposta criada. [...] O resultado para o usuário é uma apresentação mais estável, sem a temida atualização total de página. (GEARY; HORSTMANN, 2012). 34 DataTable: componente de iteração de dados (tabela de dados). Esse componente disponibiliza ações como paginação AJAX, filtragem (para busca de dados), seleção de dados, busca por filtragem entre outros recursos; Dialog: apresentação de mensagem sobreposta à página atual. Na figura 2.6 é ilustrado o componente DataTable com filtragem de dados e na figura 2.7 é apresentado o código disponibilizado no site do PrimeFaces para construção do DataTable. Figura 2.6 – Exemplo de DataTable. Fonte: PrimeFaces, 2013. 35 Figura 2.7 – Código para criação do DataTable. Fonte: PrimeFaces, 2013. 2.4 HIBERNATE Segundo o site Jboss (2013), a persistência de dados através da linguagem Java, por muito tempo foi algo que envolvia desenvolvedores em grandes dificuldades. De um lado encontravam-se banco de dados relacionais e de outro, a necessidade dos dados dessas tabelas serem representados em forma de objetos para a aplicação Java. Então, surge o framework Hibernate, que consiste em uma solução para o mapeamento Objeto/Relacional. Mapeamento Objeto/Relacional refere-se ao mapeamento de tabelas de um banco de dados relacional para uma classe Java ou de uma classe Java para uma tabela de banco de dados relacional. Em suma, esse framework cuida do relacionamento da aplicação Java com o banco de dados. A portabilidade também era um problema. Muitos bancos de dados possuem dialetos próprios, esse fato tornava dificultosa a tarefa de migração de um banco de dados para o outro. O framework Hibernate, facilita essa tarefa, uma vez que se 36 necessária a mudança de um banco de dados para outro, caberá ao desenvolvedor apenas mudar algumas configurações no Hibernate. (GONÇALVES, 2007) O Hibernate precisa ser configurado para que possa estabelecer a conexão com o banco de dados. Essa configuração encontra-se no arquivo hibernate.cfg.xml e possui as seguintes propriedades: hibernate.connection.driver_class: nesta propriedade está contido o nome da classe do driver Java Database Connectivity (JDBC) utilizado para a conexão com o banco de dados. O driver utilizado no programa desenvolvido para o setor de estágio é o driver para banco de dados MySQL. hibernate.connection.url: URL de conexão com o banco de dados. hibernate.connection.username: nome do usuário do banco de dados, que o Hibernate utiliza para realizar a conexão. hibernate.connection.password: senha que o Hibernate utiliza para se conectar ao banco. hibernate.dialect: cada banco de dados possui um dialeto11. Essa propriedade especifica qual é o dialeto que o Hibernate utilizará para realizar a comunicação com o banco. No programa em questão foi utilizado o dialeto para MySQL. (GONÇALVES, 2008a) A figura 2.8 tem por finalidade exemplificar as propriedades acima descritas e representa o hibernate.cfg.xml utilizado no projeto. Figura 2.8 – Arquivo hibernate.cfg.xml. Fonte: Elaborada pelo autor, 2013. 11 Um dialeto encapsula todas as diferenças em como o Hibernate deve comunicar-se com um banco de dados particular para completar algumas tarefas como obter um valor de sequência ou estruturar uma consulta SELECT. (JBOSS, 2013) 37 Segundo Carvalho (2007), a realização do mapeamento entre as classes Java e as tabelas do banco, no Hibernate, podem ser realizados através de arquivos Extensible Markup Languague (XML), diretamente no código Java ou pela Java Persistence API JPA. A interação entre os códigos de programação e o banco ocorre por meio do Hibernate Session. Este pode ser entendido como um gerenciador de persistência, que realiza atividades como: consultas, execução de operações de inserção, atualização e remoção de cada instância de classes que estão mapeadas pelo Hibernate. Para simplificar, “Um objeto Session pode ser considerado como uma sessão de comunicação com o banco de dados através de uma conexão JDBC.” (GONÇALVES, 2007, p.521) É necessária uma classe Java para que se possa trabalhar com o Hibernate. Esta classe possui o objeto SessionFactory que é responsável por armazenar os mapeamentos e configurações do Hibernate. A figura 2.9 exemplifica o esquema de trabalho utilizado por este framework. Um objeto instanciado pode estar em um entre três tipos diferentes de estágios. Esses estágios são: Transient: Objeto em memória, porém não foi salvo ainda; Persistent: Objeto já salvo, porém em cachê no SessionFactory, mas pode ser que ainda não esteja no banco de dados; Detached: Objeto já persistido no banco de dados. (CARVALHO, 2007) De acordo com Saab (2011), algum tempo depois da criação do Hibernate foi desenvolvida a especificação API (JPA) tendo como base funcionalidades contidas no Hibernate. Pela grande popularidade e influência da empresa Sun Microsystems, que criou a JPA, esta se tornou rapidamente conhecida. Por este motivo os criadores do Hibernate implementaram a especificação JPA para manter a compatibilidade com as especificação de da plataforma JEE como JSF, por exemplo. A JPA disponibiliza anotações para que classes Java simples se tornem entidades que representem as tabelas contidas em um banco de dados. Esse processo é conhecido como Mapeamento Objeto/Relacional. A figura 2.9 representa um esquema de funcionamento do Hibernate. 38 Figura 2.9 – Esquema de como o Hibernate funciona. Fonte: Carvalho, 2007. Segundo Gonçalves (2008a), a JPA é baseada em um conceito chamado Plain Old Java Object (POJO), que utiliza ideias de outros frameworks de persistência com o intuito de realizar a padronização do mapeamento Objeto/Relacional em Java. “Na JPA, os objetos persistentes são denominados entidades (Entities). Uma entidade é um objeto simples (POJO), que representa um conjunto de dados persistidos no banco.” (GONÇALVES, 2008ª, p. 101) No pacote javax.persistence encontram-se as classes e interfaces desta API. O que possibilita o desenvolvedor fazer o mapeamento da aplicação através de anotações conhecida também por Java Annotations. Os objetos contidos nos POJOs (entidades de persistência) possuem diversas anotações. Na API JPA cada anotação é precedida pelo símbolo de arroba “@” e possui um significado. Algumas dessas anotações são: @Entity – A entidade. Indica que essa classe é uma entidade (entity bean), que nada mais é do que um POJO, representando um objeto de negócio. Sem a definição de um parâmetro adicional, é assumido que o valor padrão será o nome da classe. @Table – Mapeia o nome da tabela. Caso não seja utilizado o parâmetro name, o valor padrão assumido é o nome da classe. @Id – O identificador da entidade. Normalmente se refere à chave primaria 39 da tabela relacional. @GeneratedValue – Define que terá seus identificadores automaticamente gerados. Isso é chamado de geração de id e é especificado por essa anotação. @Column – Mapeia o nome da coluna existente na tabela relacional. É importante frisar que o Hibernate assume os atributos da classe como os mesmos nomes da tabela existente no banco de dados. A utilização dessa anotação com o atributo name se faz necessário nesse caso, uma vez que existem campos de nomes diferentes no modelo relacional com relação à classe. [...] @OneToMany – Define uma relação de “um-para-muitos” do utilizado em banco de dados relacional. Possui um atributo chamado mappedBy para definir o atributo da outra Entidade no qual é referenciado. @ManyToOne – Define uma relação de “muitos-para-um” do utilizado em banco de dados relacional. @JoinColumn - São usadas para especificar a coluna que contém a chave estrangeira de cada relacionamento, os conhecidos Inner Joins de um relacionamento SQL. (GONÇALVES, p.104, 2008a). Outro ponto importante a ser ressaltado sobre JPA é que de acordo com o que descreve Araújo e Guizzo (2012), é ela que especifica como os frameworks de mapeamento Objeto/Relacional irão funcionar na plataforma Java, não sendo assim um framework de mapeamento propriamente dito. Por isso JPA pode ser entendido um conjunto de especificações. Deste modo o Hibernate realiza a tarefa das persistências implementando as especificações JPA. Apesar de ter esse papel importante para a persistência de dados em um banco de dados relacional, o Hibernate trabalha de forma transparente ao desenvolvedor. Pois, este se concentra em grande parte do tempo, na utilização de anotações e interfaces que a API JPA disponibiliza. Outro conceito necessário para a persistência de dados na linguagem Java é a API JDBC. Essa API permite que uma aplicação Java possa se conectar e comunicar com um banco de dados relacional, enviar comandos Structured Query Language12 (SQL) para execução e recuperação dos resultados desses comandos. Para o acesso ao banco de dados, também é necessário um driver JDBC, que consiste em uma biblioteca Java. Este driver é importante para a conexão com o banco de dados e é disponibilizado pelo próprio fornecedor do banco. (LOZANO, 2008) 12 SQL é uma linguagem estruturada de consultas para o banco de dados. É a linguagem padrão para as realizações de operações com banco de dados. (INTELLECTUALE, 2013) 40 2.5 MYSQL Segundo o site MYSQL (2013d), o MySQL é um banco da dados registrado pela Oracle Corporation e possui duas licenças, sendo uma gratuita e outra, uma licença comercial padrão da Oracle que é paga. Para o presente trabalho foi utilizado o banco de dados MySQL Community Edition, que possui código fonte aberto e é distribuído gratuitamente. Esse banco é escrito na linguagem de programação C e C++ e é aceito por diversos sistemas operacionais como: Linux, Windows, FreeBSD, Solaris e Mac OS X (MYSQL, 2013b). O MySQL aceita tipos de dados como: numéricos, data e string (caracteres e bytes) (MYSQL, 2013e). Quanto à questão relacionada a limites de capacidade deste banco de dados, ele possui suporte para grande volume de dados. Existem usuários que possuem até 200.000 tabelas armazenadas no MySQL e cerca de 5.000.000.000 linhas de dados. Ele suporta até 64 índices por tabela, sendo que cada índice pode ter de uma a 16 colunas.(MYSQL, 2013a) Em relação à conectividade, o MySQL possui conectores e APIs que disponibilizam ao programa cliente (programa que se conecta e utiliza recursos do banco), acesso a protocolos e recursos MySQL. Isso permite que conexões e instruções MySQL possam ser executadas de outros programas escritos em outras linguagem de programação. Um exemplo de conector é o Connector/J, que fornece driver JDBC possibilitando a conexão com o banco de dados a partir de um programa escrito em Java. (MYSQL, 2013g) O MySQL disponibiliza ao usuário a possibilidade manipulação de dados através de interface de linha de comando ou através de um programa de interface gráfica como o MySQL Workbench. Nas figuras 2.10 e 2.11 são representadas a interface por linha de comando e a interface gráfica garantida pelo Workbench. (MYSQL, 2013h) Através da interface gráfica o MySQL Workbench fornece ao usuário ferramentas para conexão, consulta e modelagem de dados, por exemplo. Esta última permite a criação do modelo de entidade e relacionamento 13 (MER) das tabelas do banco de dados. E possibilita ainda, que através do MER, tabelas possam ser criadas automaticamente e vice e versa através do recurso de 13 “O Modelo Entidade-Relacionamento tem o objetivo de representar as estruturas de dados da forma mais próxima do mundo real dos negócios.”. (DEVMEDIA, 2009) 41 engenharia reversa. (MYSQL, 2013h) Figura 2.10 – Interface de linha de comando. Fonte: Elaborada pela autora, 2013. Figura 2.11 – Interface gráfica do programa MySQL Workbench. Fonte: Elaborada pela autora, 2013. O MySQL, possui diferentes mecanismos para armazenamento de dados. Esses mecanismos são conhecidos como motores de armazenamento. O motor escolhido para a realização desta monografia foi o InnoDB. O InnoDB é um mecanismo de armazenamento que possui segurança e alto 42 desempenho. Segue o modelo ACID14 para transações como rollback15, commit16 e crash-recovery (capacidade de proteção de dados do usuário). Suporta o conceito de Foreign Key (chave estrangeira) para manter a integridade dos dados perante restrições. “Cada tabela InnoDB tem um índice de chave primária chamado de índice de agrupamento que organiza os dados para minimizar a Input/Output (entrada e saída de dados) para pesquisas de chave primária.” (MYSQL, 2013c). Este é o motor de armazenamento padrão do MySQL 5.5.5. Nas versões anteriores a 5.5.5 do MySQL, o MyISAM era o motor de armazenamento padrão. Neste mecanismo as tabelas são gravadas em três formatos de arquivos diferentes. Um arquivo possui extensão frm, responsável pelo armazenamento do tipo de tabela, outro tem extensão MyDara (MYD) e é um arquivo de dados e por último se tem o arquivo de índices de extensão MyIndex (MYI). (MYSQL, 2013f) 2.6 O SERVIDOR TOMCAT Segundo o site Caleum (2013), o servidor Tomcat, desenvolvido pela fundação Apache, consiste em um Servlet Container, que suporta funcionalidades proporcionadas por tecnologias como JSP, JSF e Servlets. E é indicado para quem está interessado em aplicações web. Existem servidores web que não englobam todas as especificações JEE, mas somente aquelas que são necessárias para o desenvolvimento web. Para esses servidores foi criado um termo a partir do JEE 6 que é “application server web profile”. O servidor Tomcat enquadra-se nessa definição. Um Servlet Container pode ser descrito como um container usado para o desenvolvimento de servlets. (GAMA, 2010) Servlets são classes Java executadas do lado servidor, que trabalham com requisições HyperText Transfer Protocol 17 (HTTP) que são enviadas por clientes (página web) e envio de resposta para essas requisições. Os servlets possuem 14 “O modelo ACID é um dos mais velhos e importantes conceitos da teoria de Banco de Dados. Ele define quatro pontos que todos os SGBD devem ter: atomicidade, consistência, isolamento e durabilidade.” (MACÊDO, 2011). 15 “Comando que desfaz os efeitos dos comandos da transação.”. (KNEIPP; ALBUQUERQUE, 2005). 16 “Comando que grava definitivamente os efeitos dos comandos de uma transação (insert, delete e update).”. (KNEIPP; ALBUQUERQUE, 2005). 17 Protocolo de comunicação utilizado na web. (ANDRADE, 2009) 43 ciclos de vida que incluem o seu carregamento, inicialização, atendimento de requisições, finalização e descarregamento. Esse ciclo de vida é gerenciado pelo Servlet Container que também pode ser definido como um módulo de um servidor web. (SILVA, 2009) 2.7 GERAÇÃO DE RELATÓRIOS Em 2001 Teodor Danciu desenvolveu o JasperReports, uma biblioteca de código fonte aberto escrita em Java, para auxiliar desenvolvedores na geração de relatórios. Pois, até então as ferramentas existentes para tal tarefa não eram distribuídas gratuitamente. Para usar esta biblioteca era preciso que o desenvolvedor tivesse conhecimento do formato XML, usado para criação de relatórios. Fato esse que tornava a tarefa difícil para programadores iniciantes. Todavia, um ano mais tarde Giulio Toffoli desenvolveu uma ferramenta que permitiu o desenvolvimento visual (por meio de interface gráfica) de relatórios através de uma ferramenta chamada IReport. Essa ferramenta gráfica utilizava como base a biblioteca JasperReports, o que facilitou muito o desenvolvimento de relatórios. O IReport, também foi escrito na linguagem de programação Java. (GONÇALVES, 2008b) Tendo em vista a necessidade de geração de relatórios em Portable Document Format (PDF) no sistema, a ferramenta IReport foi utilizada na presente monografia com este propósito. A ferramenta em questão também dispõe de suporte para o banco de dados que possam ser cessados através do driver JDBC. (GONÇALVES, 2008b) No final desta monografia consta um apêndice contendo um tutorial de instalação e criação de relatório com o IReport. 2.8 CONSIDERAÇÕES SOBRE O CAPÍTULO Como visto, este capítulo teve o propósito de apresentar e esclarecer as tecnologias, que foram utilizadas para a realização deste trabalho monográfico. A linguagem Java apresenta como grande vantagem o fato de ser uma linguagem portável e disponibilizar a programadores APIs e frameworks, que facilitam o seu desenvolvimento de aplicações. 44 No próximo capítulo serão abordados detalhes sobre o desenvolvimento do programa para controle do setor de estágio da FATEC de Lins. 45 3 ANÁLISE E PROJETO DO SISTEMA Neste capítulo encontram-se descritas as etapas de desenvolvimento do sistema de controle de estágio, sendo importante para a compreensão do mesmo. 3.1 ANÁLISE DE NEGÓCIO 3.1.1 Instrução do Problema Atualmente o setor de estágio da FATEC de Lins, não possui um sistema informatizado para a realização de seus processos diários como, por exemplo, controle de documentos entregues e pendentes, acompanhamento de entrega de relatórios e controle sobre os contratos de estágio que irão vencer. Deste modo, as realizações das tarefas tornam-se onerosas, pois a cada necessidade de modificação ou consulta de dados referentes aos estagiários e mesmo vencimentos de convênios entre a FATEC Lins e as empresas cedentes de estágio, é preciso consultar inúmeros formulários contidos em pastas dentro de armários. Tais dificuldades fazem com que as informações sobre o andamento de contratos, documentos entregues e vencimentos de convênios nem sempre estejam atualizadas. A implantação de um sistema voltado às necessidades deste setor contribuirá para um acompanhamento mais detalhado das atividades realizadas pelos estagiários e poderá funcionar como um facilitador para a realização de convênios entre as empresas cedentes de estágio e a instituição de ensino FATEC Lins. Por meio do sistema, dados poderão ser visualizados, alterados e atualizados com maior rapidez sem a necessidade de consultas a formulários manuscritos. 3.1.2 Atores e Envolvidos no Processo Os atores envolvidos no processo são: responsável pelo setor de estágio, os estagiários e as empresas cedentes de estágio. O responsável pelo setor de estágio possui permissões para consultar, alterar, incluir e excluir dados das empresas e estagiários, juntamente com 46 funcionalidades como gerenciamento das movimentações mensais dos estagiários, data de início e término de contratos e convênios. Cabe às empresas cedentes de estágio confirmar cargas horárias realizadas pelos estagiários, encaminhar documentos referentes ao convênio com a instituição de ensino, realizar termo de compromisso de estágio e disponibilizar comunicado de abertura de vagas. Aos estagiários são atribuídas funcionalidades como: realizar cadastro, ter acesso às vagas de estágio ofertadas e o preenchimento dos relatórios mensais de estágio. 3.1.3 Descrição do Ambiente Atual O setor de estágio da FATEC de Lins, não é informatizado. Por conseguinte, a realização de suas atividades ainda é feita por meio de formulários manuscritos e quando o aluno consegue uma vaga para estagiar, é o mesmo que encaminha até as empresas os documentos necessários como termo de compromisso de estágio e realização de convênio e também é responsável por entregar todos os documentos necessários para a celebração de tais contratos. Todos esses documentos necessitam ser assinados tanto pelas partes responsáveis na instituição de ensino, quanto pelas partes responsáveis nas empresas cedentes de estágio. Como parte das atividades de estágio, o estagiário deve entregar relatórios de atividades mensais que devem ser assinados por seus orientadores. Ao responsável pelo setor de estágio cabe verificar se há documentos e relatórios pendentes, vencimentos de contratos e possíveis renovações dos mesmos. Haja vista, que todos esses documentos são armazenados em pastas contidas em armários, e toda vez que se necessita fazer uma consulta para inteirarse das particularidades de cada estagiário ou das empresas cedentes de estágio existe a necessidade de se procurar por esses dados em diversas pastas. Assim, as atividades tornam-se exaustivas e corre-se o risco de possuir informações ultrapassadas não condizentes com as mudanças ocorridas como, por exemplo, o vencimento de convênios entre a FATEC e as empresas cedentes de estágio. 47 3.2 VISÃO GERAL DO PRODUTO 3.2.1 Perspectiva do Produto O produto em questão trata-se de um sistema independente, visto que não recebe dados oriundos de outros sistemas ou softwares. O objetivo do desenvolvimento desse sistema é buscar maior eficiência por meio da informatização do setor de estágio. Deste modo, buscar-se-á confiabilidade de dados sobre estagiários e empresas fazendo com que se tenham informações atuais sobre os mesmos. 3.2.2 Características Quadro 3.1 – Necessidades e Prioridades Necessidades Gerenciamento de login dos usuários do sistema Gerenciamento de estagiários Gerenciamento da documentação para a formalização do estágio Gerenciamento de relatórios (consultas) Gerenciamento de vagas de estágio Gerenciamento de carga de horária de estágio mensal Realização de contrato de convênio Empresa insere plano de estágio (atividades que serão desenvolvidas pelo estagiário) Estagiário preenche relatório de estágio Prioridades Alta Alta Alta Alta Alta Alta Alta Alta Alta Fonte: Elaborado pela autora, 2012. 3.3 ANÁLISE E PROJETO DO SISTEMA Nesta seção são explicitados os requisitos, o que irão cooperar para melhor compreensão das funcionalidades e que irão compor o sistema para controle de estágio. 3.3.1 Casos de Usos, Diagramas de Atividades, MVC e Diagramas de Sequência Especificação Caso de Uso A – Casos de uso gerais aos atores: esses casos de uso tratam de funcionalidades em comum a todos os atores envolvidos no 48 sistema. Quadro 3.2 – Eventos e Casos de Uso A. Identificação Caso de Uso Descrição Evento Resposta Gerenciar login Atores A.1 solicitam Dados dos Página inicial de usuários realização de usuários. do dos login, usuários cadastramento, alteração e recuperação de senha. Fonte: Elaborado pela autora, 2012. A.1 Gerenciar login de usuários: este caso de uso representa a funcionalidade responsável pelo gerenciamento de login. Esta possibilita também o cadastro de usuários, recuperação de senha e alteração de senha. As figuras 3.1, 3.2 e 3.3 representam respectivamente os diagramas de atividade, MVC e sequência. Figura 3.1– Diagrama de atividade gerenciar login de usuários. Fonte: Elaborada pela autora, 2012. 49 Figura 3.2– Diagrama MVC gerenciar login de usuários. Fonte: Elaborada pela autora, 2012. Figura 3.3 – Diagrama de sequência gerenciar login de usuários. Fonte: Elaborada pela autora, 2012. Especificação Caso de Uso B – Ator Principal – Responsável pelo setor de estágio: os casos de uso descritos abaixo se referem às funcionalidades referentes ao responsável pelo setor de estágio da FATEC. 50 Quadro 3.3 – Eventos e Casos de Uso B. Identificação Caso de Uso B.1 Manter Estagiário B.2 Manter Empresa B.3 Solicitar consulta estagiários B.4 Solicitar consulta empresas de de B.5 Assinalar documentos entregues B.6 Confirmar nova vaga de estágio B.7 Consultar vagas de estágio B.8 Realizar termo de compromisso B.9 Realizar convênio Descrição Responsável pelo setor de estágio realiza cadastro do estagiário Responsável pelo setor de estágio realiza de empresa Responsável pelo setor de estágio solicita consulta de estagiários Responsável pelo setor de estágio solicita consulta de empresas Responsável pelo setor de estágio assinala documentos entregues Responsável pelo setor de estágio confirma recebimento de solicitação de vaga de estágio Responsável pelo setor de estágio realiza consulta a solicitação de vagas de estágio Responsável pelo setor de estágio realiza termo de compromisso de estágio Responsável pelo setor de estágio realiza convênio Evento Resposta Dados do Cadastro, Estagiário mensagem Dados da Cadastro, empresa mensagem Relatório de estagiários Relatório de empresas Assinalar campos Campo assinalado Confirmação, mensagem Relatório de vagas solicitadas Dados termo PDF Termo de de compromisso compromisso Dados convênio PDF Convênio Fonte: Elaborado pela autora, 2012. B.1 Manter Estagiário: este caso representa a funcionalidade que permite realizar o cadastro dos estagiários. Os dados do estagiário são inseridos pelo responsável pelo setor de estágio e então o sistema os envia ao banco de dados. 51 Abaixo se encontram as figuras 3.4, 3.5 e 3.6, que representam respectivamente os diagramas de atividade, MVC e sequência desta funcionalidade. Figura 3.4 – Diagrama de atividade manter estagiário. Fonte: Elaborada pela autora, 2012. Figura 3.5– Diagrama MVC manter estagiário. Fonte: Elaborada pela autora, 2012. 52 Figura 3.6 – Diagrama de sequência manter estagiário. Fonte: Elaborada pela autora, 2012. B.2 Manter Empresa: este caso de uso possibilita realizar o cadastro de empresas concedentes de estágio. Os digramas desta funcionalidade não serão ilustrados, pois são semelhantes aos digramas representados no caso de uso B.1 Manter Estagiário. B.3 Solicitar consulta de estagiários: este caso de uso representa a funcionalidade que permite consultar os estagiários cadastrados. Deste modo, o sistema permitirá consultas de estagiários por: documentos entregues, datas de início e término de convênio, por empresa e por curso. As figuras 3.7, 3.8 e 3.9 representam respectivamente os diagramas de atividade, MVC e sequência desta funcionalidade. Figura 3.7 – Diagrama de atividade solicitar consulta de estagiário. Fonte: Elaborada pela autora, 2012. 53 Figura 3.8 – Diagrama MVC solicitar consulta de estagiário. Fonte: Elaborada pela autora, 2012. Figura 3.9 – Diagrama sequência solicitar consulta de estagiário. Fonte: Elaborada pela autora, 2012. B.4 Solicitar consulta de empresas: este caso de uso representa a funcionalidade que permite consultar as empresas cedentes de estágio. Os diagramas foram suprimidos por apresentarem um fluxo semelhante aos do caso de uso B.3 Solicitar consulta de estagiários. 54 B.5 Assinalar documentos entregues: este caso de uso representa a funcionalidade, que possibilita que a relação de documentos entregues pelo estagiário sejam assinaladas. Cada estagiário possui uma lista de documentos necessários para a realização da atividade de estágio e muitas vezes esses documentos não são entregues. Ao receber um novo documento, o responsável pelo setor de estágio poderá assinalar o campo ao qual se refere o documento entregue. As figuras 3.10, 3.11 e 3.12 representam respectivamente os diagramas de atividade, MVC e sequência desta funcionalidade. Para a criação dos diagramas foi utilizado o exemplo em que os relatórios de estágio são assinalados. Os diagramas dos demais documentos, que são assinalados como entregue, foram suprimidos por serem similares aos aqui ilustrados. Figura 3.10 – Diagrama de atividade assinalar documentos entregues. Fonte: Elaborada pela autora, 2012. 55 Figura 3.11 – Diagrama de MVC assinalar documentos entregues. Fonte: Elaborada pela autora, 2012. Figura 3.12 – Diagrama de sequência assinalar documentos entregues. Fonte: Elaborada pela autora, 2012. B.6 Confirmar nova vaga de estágio: este caso de uso representa a funcionalidade referente ao responsável pelo setor de estágio que o permite validar uma nova vaga de estágio oferecida por uma empresa. As figuras 3.13, 3.14 e 3.15 representam respectivamente os diagramas de atividade, MVC e sequência desta funcionalidade. 56 Figura 3.13 – Diagrama de atividade confirmar nova vaga de estágio. Fonte: Elaborada pela autora, 2012. Figura 3.14 – Diagrama MVC confirmar nova vaga de estágio. Fonte: Elaborada pela autora, 2012. Figura 3.15 – Diagrama sequência confirmar nova vaga de estágio. Fonte: Elaborada pela autora, 2012. 57 B.7 Consultar vagas de estágio: este caso de uso representa a funcionalidade de realizar consulta as vagas de estágio ofertadas pelas empresas. Deste modo haverá um controle das vagas, que cada empresa disponibiliza aos alunos da FATEC. Os diagramas desta funcionalidade foram suprimidos por apresentarem um fluxo semelhante aos da funcionalidade B.3 Solicitar consulta de estagiários. B.8 Realizar termo de compromisso: este caso de uso representa a funcionalidade que permite a realização do termo de compromisso de estágio. Após a realização do termo de compromisso o mesmo é gerado em PDF. As figuras 3.16, 3.17 e 3.18 representam respectivamente os diagramas de atividade, MVC e sequência desta funcionalidade. Figura 3.16 – Diagrama de atividade realizar termo de compromisso. Fonte: Elaborada pela autora, 2012. 58 Figura 3.17 – Diagrama de MVC realizar termo de compromisso. Fonte: Elaborada pela autora, 2012. Figura 3.18 – Diagrama de sequência realizar termo de compromisso. Fonte: Elaborada pela autora, 2012. 59 B.9 Realizar convênio: este caso de uso possibilita solicitar ao sistema a realização de convênio entre a instituição de ensino FATEC e a empresa cedente de estágio. Ao solicitar a realização de convênio, o sistema irá gerar um arquivo digital em PDF contendo o contrato de convênio. Os diagramas desta funcionalidade foram suprimidos por apresentarem um fluxo semelhante aos do caso de uso B.8 Realizar termo de compromisso. Especificação Caso de Uso C – Ator Principal – Empresas cedentes de estágio: esses casos de uso referem-se a funcionalidades disponibilizadas para as empresas cedentes de estágio. Quadro 3.4 – Eventos e Casos de Uso C. Identificação Caso de Uso C.1 Realizar convênio C.2 Realizar termo de compromisso C.3 Confirmar carga horária de estágio C.4 Solicitar consulta de estagiários C.5 Manter plano de estágio C.6 Solicitar abertura vaga de estágio Consultar vagas de estágio C.7 C.8 Declarar preenchimento Descrição Empresa realiza convênio Empresa realiza termo de compromisso de estágio Empresa confirma carga horária de estágio realizada pelo estagiário mensalmente Empresa solicita consulta de estagiários Empresa insere plano de estágio (atividades que serão desenvolvidas pelo estagiário) Empresa solicita vaga de estágio A empresa solicita ao sistema a consulta de vagas de estágio ofertadas A empresa declara Evento Dados convênio Dados termo de compromisso Resposta PDF Convênio PDF Termo de compromisso Confirmação, mensagem Relatório de estagiários Dados plano Confirmação, de estágio mensagem Dados vaga Confirmação, de estágio mensagem Relatório de vagas ofertadas Confirmação, mensagem 60 de vaga preenchimento de vaga solicitada Fonte: Elaborado pela autora, 2012. C.1 Realizar convênio: este caso de uso possibilita solicitar ao sistema a realização de convênio com a instituição de ensino FATEC. Ao solicitar a realização de convênio, o sistema irá gerar um arquivo digital em PDF contendo o contrato de convênio. Os diagramas desta funcionalidade foram suprimidos por apresentarem um fluxo semelhante aos da funcionalidade B.8 Realizar termo de compromisso. C.2 Realizar termo de compromisso: este caso de uso representa a funcionalidade que permite realizar o termo de compromisso de estágio. Após a realização do termo de compromisso o mesmo é gerado em PDF. Os diagramas desta funcionalidade foram suprimidos por apresentarem o mesmo fluxo da funcionalidade “realizar termo de compromisso”, ilustrada no caso de uso B.8 Realizar termo de compromisso. C.3 Confirmar carga horária de estágio: este caso de uso trata a funcionalidade que permite confirmar ou modificar a carga horária de estágio realizada pelo aluno mensalmente. As figuras 3.19, 3.20 e 3.21 representam respectivamente os diagramas de atividade, MVC e sequência desta funcionalidade. Figura 3.19 – Diagrama de atividade confirmar carga horária de estágio. Fonte: Elaborada pela autora, 2012. 61 Figura 3.20 – Diagrama de MVC confirmar carga horária de estágio. Fonte: Elaborada pela autora, 2012. Figura 3.21 – Diagrama de sequência confirmar carga horária de estágio. Fonte: Elaborada pela autora, 2012. C.4 Solicitar consulta de estagiários: este caso de uso representa a funcionalidade que permite a empresa consultar os dados de seus estagiários. Os diagramas desta funcionalidade não serão apresentados por serem os mesmos apresentados no caso de uso B.3 Solicitar consulta de estagiários. C.5 Inserir plano de estágio: cada estagiário necessita de um plano de estágio, este caso de uso representa a funcionalidade que permite preencher os 62 campos referentes ao plano de estágio do aluno. Os diagramas desta funcionalidade são semelhantes aos representados no caso de uso D.2 Preencher relatório, por isso não estão aqui ilustrados. C.6 Manter vaga de estágio: este caso de uso consiste na funcionalidade que possibilita solicitar abertura de vaga de estágio. Ao realizar a oferta de vaga, a mesma é disponibilizada ao responsável pelo setor de estágio. As figuras 3.22, 3.23 e 3.24 representam respectivamente os diagramas de atividade, MVC e sequência desta funcionalidade. Figura 3.22 – Diagrama de atividade manter vaga de estágio. Fonte: Elaborada pela autora, 2012. 63 Figura 3.23 – Diagrama MVC manter vaga de estágio. Fonte: Elaborada pela autora, 2012. Figura 3.24 – Diagrama sequência manter vaga de estágio. Fonte: Elaborada pela autora, 2012. C.7 Consultar vagas de estágio: depois de solicitada vagas de abertura de estágio, a empresa cedente de estágio poderá visualizar a relação de vagas que ofertou. Este caso de uso representa a funcionalidade que permite a visualização das vagas acima citadas. Os diagramas desta funcionalidade foram suprimidos por apresentarem um fluxo semelhante aos ilustrados no caso de uso B.3 Solicitar consulta de estagiários. 64 C.8 Declarar preenchimento de vaga: depois de realizada a seleção do candidato à vaga de estágio ofertada pela empresa, a mesma poderá declarar que a vaga foi preenchida. Este caso de uso trata a funcionalidade descrita acima. Os diagramas desta funcionalidade não serão apresentados por serem semelhantes aos digramas da funcionalidade B.6 - confirmar nova vaga de estágio. Especificação Caso de Uso D – Ator Principal – Estagiário: as especificações aqui contidas, dizem respeito aos casos de uso que representam as funcionalidades disponibilizadas aos estagiários. Quadro 3.5 – Eventos e Casos de Uso D. Identificação Caso de Uso Descrição Evento D.1 Consultar vagas Estagiário de estágio consulta relatório de vagas ofertadas D.2 Preencher Estagiário Dados relatório preenche relatório relatório de estágio Resposta Relatório de vagas ofertadas Confirmação, mensagem Fonte: Elaborado pela autora, 2012. D.1 Consultar vagas de estágio: este caso de uso diz respeito a funcionalidade que permite visualizar novas vagas de estágio ofertadas. Depois de validadas pelo responsável do setor de estágio, as novas vagas são disponibilizadas para que os alunos interessados possam acessá-las. Os diagramas desta funcionalidade foram suprimidos por apresentarem um fluxo semelhante aos ilustrados no caso de uso B.3 Solicitar consulta de estagiários. D.2 Preencher relatório: todo estagiário deve preencher relatórios mensais contendo as atividades de estágio que realizou. Este caso de uso representa a funcionalidade que possibilita preencher esses relatórios. As figuras 3.25, 3.26, 3.27, 3.28, 3.29 e 3.30 representam respectivamente os diagramas de atividade, MVC e sequência desta funcionalidade. Esta funcionalidade possui dois controles, pois um relatório pode ter várias atividades relacionadas a ele. 65 Figura 3.25 – Diagrama de atividade preencher relatório a. Fonte: Elaborada pela autora, 2012. Figura 3.26 – Diagrama MVC preencher relatório a. Fonte: Elaborada pela autora, 2012. 66 Figura 3.27 – Diagrama sequência preencher relatório a. Fonte: Elaborada pela autora, 2012. Figura 3.28 – Diagrama de atividade preencher relatório b. Fonte: Elaborada pelo autor, 2012. 67 Figura 3.29 – Diagrama MVC preencher relatório b. Fonte: Elaborada pela autora, 2012. Figura 3.30 – Diagrama sequência preencher relatório b. Fonte: Elaborada pela autora, 2012. 68 A figura 3.28 abaixo ilustra o diagrama de caso de uso do sistema. Figura 3.31– Diagrama de caso de uso completo. Fonte: Elaborada pela autora, 2012. 69 3.4 DIAGRAMA DE CLASSES Figura 3.32 – Diagrama de classes. Fonte: Elaborada pela autora, 2012. 70 3.5 PROJETO DE BANCO DE DADOS Figura 3.33 – Modelo de entidade e relacionamento. Fonte: Elaborada pela autora, 2012. 71 3.6 CONSIDERAÇÕES SOBRE O CAPÍTULO Neste capítulo foi realizada a análise de requisitos do sistema por meio de levantamento de requisitos, diagramas de atividade, MVC, sequência e caso de uso. Esses passos de análise possibilitam que possa haver uma visualização geral do sistema. No próximo capítulo serão abordados assuntos que fazem referência ao desenvolvimento do sistema web. 72 4 IMPLEMENTAÇÃO Para a implementação desse projeto foram utilizadas as tecnologias já explanadas no capítulo dois. Este presente capítulo tem por finalidade, introduzir a maneira como essas tecnologias foram utilizadas para o desenvolvimento da aplicação web de controle das atividades desenvolvidas no setor de estágio da FATEC de Lins. Deste modo, aqui serão mostradas as principais telas das funcionalidades desenvolvidas no sistema. 4.1 BANCO DE DADOS Após a finalização do projeto e análise do sistema, o banco de dados foi implementado. O banco utilizado, como já descrito no segundo capítulo, foi o MySQL 5.5. Para facilitar a criação de tabelas e funções foi utilizada a sua interface gráfica conhecida como MySQL Workbench. Este mesmo programa, também foi utilizado para construir o modelo entidade relacionamento das tabelas. Sua interface para criação de tabelas pode ser observada na figura 4.1. Figura 4.1 – MySQL Workbench e estrutura da tabela usuário. Fonte: Elaborada pela autora. 73 4.2 IMPLEMENTAÇÃO DO SISTEMA WEB O sistema foi desenvolvido utilizando-se o padrão de projeto Model View Controller (MVC) utilizando frameworks como JSF, PrimeFaces e Hibernate. As páginas de interface com o usuário foram desenvolvidas utilizando o framework JSF juntamente com o PrimeFaces. Na página web do PrimeFaces podese encontrar uma boa documentação do framework onde é possível observar diversos modelos de componentes para construção de páginas de interface. Esses componentes facilitam o processo de desenvolvimento da aplicação. Para ilustrar um exemplo da facilidade obtida pelo uso desses componentes, a figura 4.2 ilustra a criação de uma tabela dinâmica que foi utilizada muitas vezes no decorrer do desenvolvimento do sistema. Figura 4.2 – Implementação do componente DataTable de cursos. Fonte: Elaborada pela autora, 2013. 74 Ao iniciar pela primeira vez o sistema é necessário cadastrar a instituição de ensino e um responsável pelo setor de estágio. Esses dados são necessários para que se possa acessar o sistema, quando não há nenhuma informação na base de dados. Na página index.xhtml da aplicação é disponibilizado aos usuários: uma área de login, que também possibilita a recuperação de senha; uma área de cadastro para empresa e uma área de cadastro para estagiários. A tela inicial do sistema é mostrada na figura 4.3. Figura 4.3– Página inicial do sistema. Fonte: Elaborada pela autora, 2013. Para a criação das funcionalidades citadas acima, foram desenvolvidas funções no banco de dados. Para a realização de login é utilizada a função “func_doLogin”. Essa função recebe como parâmetro o e-mail e a senha, que foram digitados pelo usuário e retorna dados do usuário se os dados passados no login estiverem corretos ou zero se os dados passados forem incorretos. Essa função é importante, pois o sistema possui três áreas diferentes de acordo com o tipo de usuário e através do valor de retorno desta função o usuário é direcionado a área a qual pertence. As figuras 4.4 e 4.5 representam respectivamente o controle responsável pelo gerenciamento de login e a função implementada no banco. Para a 75 autenticação de login são usados conceitos conhecidos como filtros. Esses são utilizados para que arquivos, ou seja, certas páginas não possam ser acessadas por quem não tenha permissão. Figura 4.4 – Controle de Login. Fonte: Elaborada pela autora, 2013. Figura 4.5 – Função func_doLogin. Fonte: Elaborada pela autora, 2013. 76 Ainda em relação ao gerenciamento de login, existe um método, que é utilizado no processo de envio da senha para o e-mail do usuário. Em caso de esquecimento de senha, basta apenas que o usuário digite seu e-mail e acione o botão “Recuperar Senha”. O método responsável por esta ação chama-se “doGetPassword” e é apresentada na figura 4.6. Ele recebe como parâmetro um email digitado e o passa para o método “isValidUser” da classe “LoginDAO”. Este se encarrega de retornar a senha para o e-mail digitado. Se os dados requisitados forem encontrados, então é chamado o método “sendEmail” da classe “Email”, que é encarregado de realizar o envio da senha para o e-mail do usuário que a requisitou. Figura 4.6 – método doGetPassword. Fonte: Elaborada pela autora, 2013. Em relação a funções inseridas no banco de dados, existe uma função que está envolvida no processo de busca automática de cidade, logradouro e bairro através de um determinado CEP. Ela foi utilizada para realização de cadastros de usuários. Primeiro essa função executa uma instrução do tipo Select em uma tabela do banco de dados chamada “cep_log_index” e compara os cinco primeiros números do CEP passado pelo usuário com os registros desta tabela, para que possa encontrar em que estado o CEP está inserido. É realizada também, uma consulta na tabela “cep_unico”, pois para cidades que apresentam apenas um CEP existe uma tabela separada. Se a busca na tabela CEP único for diferente de vazio é retornado ao sistema apenas o nome da cidade a que o CEP se refere. Caso a busca pela tabela de CEP único retornar vazia, ocorre o processo de busca do CEP na tabela do estado em que o mesmo está inserido. Neste caso é retornado ao sistema o logradouro, a cidade, o estado e o bairro referente ao CEP inserido. Os passos acima descritos podem ser observados na figura 4.7. 77 Figura 4.7 – Função func_busca_Cep. Fonte: Elaborada pela autora, 2013. A aplicação web possui áreas especificas de acordo com os usuários que irão acessá-las. Estas áreas são dividas em: área do responsável de estágio, área da empresa e a área do estagiário. Cada uma dessas áreas apresenta funcionalidades diferentes em função das necessidades de seus usuários. A figura 4.8, 4.9 e 4.10 ilustram respectivamente as funcionalidades do responsável pelo setor de estágio, estagiário e empresa cedente de estágio. Na área do responsável pelo setor de estágio, por exemplo, é possível observar diversas funcionalidades divididas por assuntos pertinentes a estagiários, empresas entre outras. Ao clicar em cada aba do menu localizado a esquerda da página serão mostradas as funcionalidades disponíveis a seus respectivos assuntos. Para exemplificar, ao clicar na aba de estagiário, serão encontradas funcionalidade que permitem ao responsável pelo setor de estágio: consultar, cadastras, alterar e excluir estagiários. 78 Figura 4.8 – Área do responsável de estágio. Fonte: Elaborada pela autora, 2013. Figura 4.9 – Área do estagiário. Fonte: Elaborada pela autora, 2013. 79 Figura 4.10 – Área da empresa. Fonte: Elaborada pela autora, 2013. O responsável pelo setor de estágio tem acesso aos dados de estagiários e empresas concedentes de estágio, como por exemplo, contratos. Deste modo, este usuário do sistema pode acompanhar as datas de início e término de contrato de estágio, de convênios com empresas, entre outros. Essa funcionalidade é apresentada na figura 4.11. 80 Figura 4.11 – Consulta de convênio. Fonte: Elaborada pela autora, 2013. Ao criarem um login no sistema, os estagiários podem ter acesso a vagas de estágios ofertadas e também desenvolverem seus relatórios. Esses relatórios de estágio podem ser gerados em PDF para impressão e entrega ao responsável pelo setor de estágio, como requisito obrigatório das tarefas, que compõe a atividade de estágio. Para confecção deste relatório o estagiário primeiro cria um relatório contendo informações como mês, horas cumpridas entre outras. Após criar o relatório, ele pode inserir no mesmo várias atividades, que consistem nas tarefas realizadas diariamente. E por fim, ao terminar de inserir todas as atividades o estagiário aciona a opção concluir relatório inserindo deste modo as informações pertinentes para a conclusão do relatório mensal. A funcionalidade aqui descrita está ilustrada nas figuras 4.12, 4.13, 4.14 e 4.15. Figura 4.12 – Criação de novo relatório. Fonte: Elaborada pela autora, 2013. 81 Figura 4.13 – Criação de novo relatório diário. Fonte: Elaborada pela autora, 2013. Figura 4.14 – Cadastro de novo relatório diário. Fonte: Elaborada pela autora, 2013. Figura 4.15 – Conclusão de relatório diário. Fonte: Elaborada pela autora, 2013. 82 Para a geração de documentos de convênio, termo de compromisso bem como os planos e relatórios de estágio foi utilizado o plugin do IReports no Netbeans. Esse plugin oferece uma interface gráfica para a criação de relatórios, o que facilita o seu desenvolvimento. A figura 4.17 ilustra a estrutura de um documento criado no IReports. Os dados que serão inseridos na estrutura do relatório estão especificados em uma instrução SQL que o IReport realiza ao banco de dados. Essa SQL recebe como parâmetro o código que identifica o documento o qual o usuário deseja gerar. O que possibilita que os relatórios sejam gerados a partir de parâmetros passados pelos usuários via web, é a configuração de uma conexão com o banco de dados e um Bean gerenciado. Este último recebe os dados envidados por uma página JSF e os envia para a classe “RelatorioUtil” , esta por sua vez, os envia para o relatório que foi escolhido. A figura 4.16 exibe a tela em que um convênio entre a instituição FATEC de Lins e uma empresa foi gerado como exemplo. O responsável pelo setor de estágio possui uma funcionalidade, que o possibilita modificar dinamicamente o conteúdo do contrato de estágio e também termo de compromisso de estágio. Para isso é utilizado o componente editor do PrimeFaces. O modelo de editor de texto utilizado no presente trabalho pode ser observado na figura 4.18. Figura 4.16 – Conclusão de relatório diário. Fonte: Elaborada pela autora, 2013. 83 Figura 4.17 – Conclusão de relatório diário. Fonte: Elaborada pela autora, 2013 84 Figura 4.18 – Editor de texto. Fonte: Elaborada pela autora, 2013. As figuras 4.19 e 4.20 abaixo ilustram um documento em PDF, gerado pelo sistema, que representa o exemplo de um plano de estágio. Figura 4.19 – Página 1 do Plano de Estágio. Fonte: Elaborada pela autora, 2013. 85 Figura 4.20 – Página 2 do Plano de Estágio. Fonte: Elaborada pela autora, 2013. Pode-se ressaltar que os exemplos de documento de Plano de Estágio ilustrado nas figuras anteriores, representam apenas um exemplo do relatório citado. 4.3 CONSIDERAÇÕES SOBRE O CAPÍTULO Este capítulo tratou apenas de algumas funcionalidades do sistema. Insta salientar, que todos os requisitos propostos no capítulo três foram desenvolvidos. Existem outras funcionalidades como: alteração de senha, busca por dados de estagiário e empresa, entre outros que não foram aqui ilustrados. 86 CONCLUSÃO Nesse trabalho foi apresentado o desenvolvimento de um sistema web para o setor de estágio da FATEC de Lins objetivando a informatização das atividades cotidianas desse setor. O sistema contou com três áreas distintas, separando as funcionalidades por usuários de acordo com as rotinas de cada um. As tecnologias utilizadas mostraram-se eficazes para efetivação dos objetivos propostos. Java Server Faces aliado a PrimeFaces contribuiu para a criação de páginas dinâmicas de modo simples e atendeu as necessidades geradas pelo sistema, ao disponibilizar componentes úteis e de fácil utilização para criação de consultas, inserção, exclusão e alterações de dados. Ao fazer uso de uma linguagem orientada a objetos e um banco de dados relacional, tornou-se necessário uma ferramenta que realizasse o mapeamento objeto-relacional. O ORM Hibernate juntamente com JPA mostrou sua importância para conectar essas duas tecnologias. Por meio deles foram geradas classes que representam entidades do banco de dados relacional MySQL utilizado neste trabalho. Entretanto, houveram algumas regras de relacionamentos entre tabelas, que ao serem representadas por classes de entidades, tiveram que ser modificadas em relação ao modelo criado automaticamente. O modelo MVC, também permitiu que o sistema fosse desenvolvido de modo claro ao separar as interfaces, controles e modelos. Conclui-se também que, o plug-in iReport foi de grande contribuição para a geração dinâmica de documentos por meio do sistema. Não obstante, esse plug-in não possui suporte para que ao introduzir um campo dinâmico em meio a campos estáticos, esses se reorganizem em função do campo dinâmico introduzido. Para sanar essa dificuldade, foi criada uma funcionalidade que permite armazenar o conteúdo de texto estático na base de dados e deste modo os textos dos documentos podem ser alterados caso haja necessidade. Por derradeiro, acredita-se que após a implantação do sistema no setor de estágio da FATEC de Lins, o mesmo atuará como um facilitador no processo das atividades diárias, contribuindo na agilização da realização de cadastros, consultas e geração de relatórios. Apesar de outras dificuldades comumente encontradas no desenvolvimento 87 de um projeto desse porte, os requisitos levantados no capítulo de análise foram cumpridos e como trabalhos futuros pode-se citar a implantação do sistema dentro do servidor da instituição FATEC de Lins e a coleta de informações sobre a utilidade das funcionalidades desenvolvidas. 88 REFERÊNCIAS BIBLIOGRÁFICAS ABRES. Mapa do estágio no Brasil. Disponível <http://www.abres.org.br/v01/stats/> Acesso em: 12 out. 2012b. em: ______. Abres realiza pesquisa sobre estágio. Disponível <http://www.abres.org.br/v01/pesquisaabres/> Acesso em: 12 out. 2012a. em: ______. Dúvidas frequentes. Disponível em: <http://www.abres.org.br/v01/faqs/> Acesso em: 21 out. 2012c. ANDRADE, Wagner. Afinal, o que é HTTP?. 2009. Disponível em: < http://imasters.com.br/artigo/11513/redes-e-servidores/afinal-o-que-e-http/> Acesso em: 21 fev. 2013. ARAÚJO, E. C.; GUIZZO, G. JPA/Hibernate ou NoSQL, qual utilizar – Revista Java Magazine 103. 2012. Disponível em: < http://www.devmedia.com.br/jpahibernate-ou-nosql-qual-utilizar-revista-java-magazine-103/24386> Acesso em: 13 fev. 2013. BRASIL. Decreto-Lei nº 11.788, de 25 de setembro de 2008. Nova Cartilha Esclarecedora sobre a lei do estágio, Brasília, DF. CALEUM. Apostila Java para Desenvolvimento Web. Capítulo 3 O que é Java EE?. Disponível em: < http://www.caelum.com.br/apostila-java-web/o-que-e-javaee/> Acesso em: 14 fev. 2013. CARVALHO, Marcio S. Persistindo Objetos com Java, Hibernate e PostgreSQL, 2007. Disponível em: <http://www.devmedia.com.br/persistindo-objetos-com-javahibernate-e-postgresql/4149> Acesso em: 13 fev. 2013. CIEE. CIEE esclarece dúvidas sobre a nova lei do estágio. Disponível em: <http://www.ciee.org.br/portal/nova_lei_estagio.asp> Acesso em: 10 out. 2012a. ______. Página inicial do portal institucional. Disponível em: <http://www.ciee.org.br/portal/institucional/index.asp> Acesso em: 27 out. 2012b. ______. Pré-cadastro exclusivo para empresas. Disponível <http://www.empresas.ciee.org.br/portal/empresas/precad.asp> Acesso em: 27 2012c. ______. Portal dos estudantes. Disponível em: http://www.empresas.ciee.org.br/portal/estudantes/index.asp> Acesso em: 27 2012d. ______. Portal das escolas. Disponível em: http://www.empresas.ciee.org.br/portal/escolas/index.asp> Acesso em: 27 2012e. ÇIVICI, Çagatay. PrimeFaces User´s Guide 3.5. Disponível http://primefaces.org/documentation.html> Acesso em: 13 fev. 2013. em: em: out. < out. < out. < 89 CYBERSPHERA. Processo de criação de um programa. Disponível em: < http://www.cybersphera.com.br/java/processo-de-criacao-de-um-programa/> Acesso em: 20 mar. 2013. DEVMEDIA. MER e DER. 2009. Disponível em: < http://www.devmedia.com.br/mere-der/14332> Acesso em: 21 fev. 2013. GAMA, Alexandre. Servlets simples e prático, Parte 1. 2010. Disponível em: < http://www.devmedia.com.br/servlets-simples-e-pratico-parte-i/18637> Acesso em: 14 fev. 2013. GAUDIO, Anderson C. Applets em Java. Disponível em: http://profanderson.net/files/appletsemjava.php> Acesso em: 18 fev. 2013. < GEARY, D.; HORSTMANN C. Core JavaServer Faces. Tradução Lúcia Helena. 3. ed. Rio de Janeiro: Alta Books, 2012. p. 12-31. GONÇALVES, Edison. Desenvolvendo Aplicações Web com JSP Servlets, JavaServer Faces, Hibernate, EJB3 Persistence e Ajax. 1. ed. Rio de Janeiro: Editora Ciência Moderna Ltda, 2007. ______. Dominando JavaServer Faces e Facelets Utilizando Spring 2.5, Hibernate e JPA. 1. ed. Rio de Janeiro: Editora Ciência Moderna Ltda, 2008a. ______. Dominando Relatórios JaperReport com iReport. 1. ed. Rio de Janeiro: Editora Ciência Moderna Ltda, 2008b. HTML.NET. O que são tags HTML. Disponível em: br.html.net/tutorials/html/lesson3.php> Acesso em: 20 fev. 2013. < http://pt- INTELLECTUALE. O que é SQL?. 2013. Disponível em: http://cursosdeprogramacao.com.br/blog/o-que-e-sql/> Acesso em: 21 fev. 2013. < JBOSS. Hibernate – Relational Persistence for Idiomatic Java. Disponível em: < http://docs.jboss.org/hibernate/orm/4.1/manual/en-US/html_single/> Acesso em: 12 fev. 2013. KNEIPP, R. E.; ALBUQUERQUE, R. C. Transações no Oracle – Commit, Rollback e Savepoint. 2005. Disponível em: < http://www.devmedia.com.br/transacoes-nooracle-commit-rollback-e-savepoint/349> Acesso em: 18 fev. 2013. LAUDON K. C.; LAUDON J. P. Sistemas de informação gerenciais. Tradução Thelma Guimarães.7. ed. São Paulo: Pearson Prentice Hall, 2007. LUCKOW, D. H.; MELO, A. A. Programação Java para a Web. 3. ed. São Paulo: Novatec Editora Ltda, 2012. LOZANO, Fernando. Artigo Java Magazine 41 – JDBC de Ponta a Ponta: Parte 1. 2008. Disponível em: < http://www.devmedia.com.br/artigo-java-magazine-41-jdbcde-ponta-a-ponta-parte-1/10187> Acesso em: 12 fev. 2013. 90 MACÊDO, Diego. O modelo ACID. Disponível em: http://www.diegomacedo.com.br/o-modelo-acid/> Acesso em: 18 fev. 2013. < MENDES, Douglas R. Programação em Java com ênfase em Orientação a Objetos. São Paulo: Novatec, 2009. p. 16 – 24. MICROSOFT. Hiperlinks I: Noções Básicas. Disponível em: http://office.microsoft.com/pt-br/frontpage-help/hiperlinks-i-nocoes-basicasRZ006086600.aspx?section=5> Acesso em: 20 fev. 2013. < MINETTO, Elton L. Frameworks para Desenvolvimento em PHP. Disponível em: < http://www.novateceditora.com.br/livros/frameworks/capitulo9788575221242.pdf> Acesso em: 18 fev. 2013. MySQL. MySQL 5.5 Reference Manual 1.3.2. The Main Features of MySQL. Disponível em: < http://dev.mysql.com/doc/refman/5.5/en/features.html> Acesso em: 15 fev. 2013a. ______. MySQL 5.5 Reference Manual 2.1.1. Operating Systems Suppoted by MySQL Community Server. Disponível em: < http://dev.mysql.com/doc/refman/5.5/en/supported-os.html> Acesso em: 15 fev. 2013b. ______. MySQL 5.5 Reference Manual 14.3. The InnoDB Storage Engine. Disponível em: < http://dev.mysql.com/doc/refman/5.5/en/innodb-storageengine.html> Acesso em: 15 fev. 2013c. ______. MySQL 5.5 Reference Manual Chapter 1. General Information. Disponível em: < http://dev.mysql.com/doc/refman/5.5/en/introduction.html> Acesso em: 15 fev. 2013d. ______. MySQL 5.5 Reference Manual Chapter 11. Data Types. Disponível em: < http://dev.mysql.com/doc/refman/5.5/en/data-types.html> Acesso em: 15 fev. 2013e. ______. MySQL 5.5 Reference Manual Chapter 14. Storage Engines. Disponível em: < http://dev.mysql.com/doc/refman/5.5/en/storage-engines.html> Acesso em: 15 fev. 2013f. ______. MySQL 5.5 Reference Manual Chapter 22. Connectors and APIs. Disponível em: < http://dev.mysql.com/doc/refman/5.5/en/connectors-apis.html> Acesso em: 15 fev. 2013g. ______. MySQL 5.5 Reference Manual Chapter 25. MySQL Workbench. Disponível em: < http://dev.mysql.com/doc/refman/5.5/en/workbench.html> Acesso em: 15 fev. 2013h. 91 NETBEANS. Introdução às aplicações Java EE6. Disponível em: < http://netbeans.org/kb/docs/javaee/javaee-gettingstarted_pt_BR.html> Acesso em: 20 fev. 2013. NUNES, Paulo. Conceito de Tabela Hash. 2008. Disponível em: http://www.knoow.net/ciencinformtelec/informatica/tabeladehash.htm#vermais> Acesso em: 9 fev. 2013. < OLIVEIRA, Renato. G. Desenvolvimento baseado em componentes – Revista Java Magazine 110. 2012. Disponível em: < http://www.devmedia.com.br/desenvolvimento-baseado-em-componentes-revistajava-magazine-110/26550> Acesso em: 18 fev. 2013. ORACLE. About Java for Mobile Devices. Disponível em: < http://www.oracle.com/technetwork/java/javame/javamobile/overview/about/index.htm l> Acesso em: 17 mar. 2013a. ______. Java Platform, Enterprise Edition (Java EE). Disponível em: < http://www.oracle.com/br/technologies/java/overview/index.html#readmore> em: 17 mar. 2013b. Acesso ______. Java SE at a Glance. Disponível em: < http://www.oracle.com/technetwork/java/javase/overview/index.html> Acesso em: 17 mar. 2013c. ______. Readme Java Platform, Standard Edition 7 Development Kit. Disponível em: < http://www.oracle.com/technetwork/java/javase/jdk-7-readme-429198.html > Acesso em: 8 fev. 2013d. PRIMEFACES. DataTable – Filtering. Disponível em: < http://www.primefaces.org/showcase/ui/datatableFiltering.jsf> Acesso em: 11 fev. 2013. RAINER, R. K.; CEGIELSKI, C. G. Introdução a sistemas de informação. Tradução Daniel Vieira. 3. ed. Rio de Janeiro: Elsevier, 2011. RICARTE, Ivan L. M. Containers. 2002. Disponível em: < http://www.dca.fee.unicamp.br/cursos/PooJava/graphic/containers.html> Acesso em: 18 fev. 2013. ROOS, Dave. Como aproveitar melhor uma API para conferência online. Disponível em: < http://informatica.hsw.uol.com.br/conferencia-api1.htm> Acesso em: 20 fev. 2013. SAAB, Felipe N. Hibernate Annotations – Artigo Java Magazine 90. 2011. Disponível em: <http://www.devmedia.com.br/hibernate-annotations-artigo-javamagazine-90/20433> Acesso em: 12 fev. 2013. SAMPAIO, Cleuton. Java Enterprise Edition 6: devenvolvendo aplicações corporativas. 1. ed. Rio de Janeiro: Brasport, 2011. p. 15-22. 92 SILVA, F. A.; SILVA, F. B. Máquinas Virtuais Java e .NET. Disponível em: <http://www.ic.unicamp.br/~rodolfo/Cursos/mc722/2s2008/Trabalho/g25_texto.pdf> Acesso em: 8 fev. 2013. SILVA, Izalmo P. Artigo Java Magazine 66 – Desenvolvendo Java para web. 2009. Disponível em: < http://www.devmedia.com.br/artigo-java-magazine-66desenvolvendo-java-para-web/12289> Acesso em: 14 fev. 2013. SOBRAL, Diogo. Componentização em Java: da concepção à publicação. 2011. Disponível em: <http://www.gonow.com.br/blog/2011/05/18/componentizacao-emjava-da-concepcao-a-publicacao/> Acesso em: 18 fev. 2013. 93 A APÊNDICE A – Instalação do plugin iReport no Netbeans Esse apêndice trata-se de um tutorial de instalação do plugin da ferramenta iReport utilizado para geração de relatórios no sistema de controle de estágio. A.1 PASSOS DE INSTALAÇÃO Primeiramente é necessário baixar o plugin do iReport, isso pode ser realizado através do site do Netbeans “netbeans.org”, na guia Plugins. Após baixar é preciso descompactar o arquivo. Então, com o Netbeans aberto deve-se acionar a janela ferramentas e selecionar a opção “Plug-ins”. A janela referente às opções de plug-ins é mostrada na figura A.1 Figura A.1 – Adicionar plug-ins no Netbeans. Fonte: Elaborada pela autora, 2013. A opção “Adicionar plug-ins” deve ser acionada e os arquivos que foram baixados devem ser selecionados como mostra a figura A.2. Deve-se clicar na opção instalar, desse modo os plug-ins serão instalados no Netbeans. Ao terminar a instalação irá aparecer na barra de ferramentas do Netbeans um ícone referente ao iReport. Esse ícone é ilustrado na figura A.3. 94 Figura A.2 – Adicionar plug-ins do Ireport no Netbeans. Fonte: Elaborada pela autora, 2013. Figura A.3 – Ícone da ferramenta Ireport no Netbeans. Fonte: Elaborada pela autora, 2013. Figura A.4 – Janela para criar conexão com o banco. Fonte: Elaborada pela autora, 2013. Agora basta somente configurar a conexão com o banco de dados. Para isso, 95 é necessário acionar o novo ícone do iReport criado na barra de ferramentas do Netbeans (figura A.3). Ao acionar o ícone irá aparecer a janela ilustrada na figura A.4, nesta janela deve-se escolher a opção new. Após, deve aparecer outra janela para que se possa escolher o tipo de conexão. É necessário escolher a opção Database JDBC Connection, como mostra a figura A.5. Figura A.5 – Tipo de conexão com o banco. Fonte: Elaborada pela autora, 2013. Após escolher o tipo de conexão, o botão next é habilitado e deve-se configurar a conexão com o banco. Segundo Luckow e Melo (2012), essa conexão serve para realização de testes dos documentos desenvolvidos no iReport, pois quando o documento criado for executado dentro da aplicação, a conexão utilizada é a que foi configurada para o projeto. Ainda de acordo com os mesmos autores, abaixo são explicados os valores que os campos de configuração de conexão recebem: Name irá receber o nome que deseja-se colocar na conexão; O campo JDBC Driver será selecionado o driver utilizado para a conexão; O campo JDBC URL recebe o endereço do banco de dados e o nome do banco de dados que será utilizado; Username é o campo em que é inserido o login para o banco; Password recebe a senha do usuário. 96 A janela em que se configura os campos explicados acima são mostrados na figura A.6. A ferramenta iReport permite que após as configurações acima explanadas, seja realizado um teste para verificação da conexão. Ao selecionar o botão Test na janela de configuração de conexão, a ferramenta irá solicitar a senha do banco e tentará conectar-se a ele. Caso a configuração esteja correta, será exibida uma mensagem de conexão realizada com sucesso. Figura A.6 – Configuração de conexão com o banco. Fonte: Elaborada pela autora, 2013. A.2 EXEMPLO DE CRIAÇÃO DE UM RELATÓRIO Na aba janela do Netbeans existe a opção Welcome to Jaspersoft IReport Designer como mostra a figura A.7. Essa opção possibilita que possa haver escolha do tema que se deseja incluir no relatório. Ao clicar nessa opção irá aparecer a interface, ilustrada na figura A.8, onde deve-se selecionar a opção Step 2. 97 Figura A.7 – Welcome to Jaspersoft. Fonte: Elaborada pela autora, 2013. Figura A.8 – Welcome to Window. Fonte: Elaborada pela autora, 2013. Em seguida irá aparecer a janela com temas pré-moldados. Então basta selecionar o tema desejado. 98 Figura A.9 – Janela para escolha do tema. Fonte: Elaborada pela autora, 2013. Após escolhido o tema deve-se clicar na opção Open this Template e aparece uma janela onde deverá ser escolhido o nome para o relatório. Essa janela é ilustrada na figura A.9. Figura A.10 – Criação relatório. Fonte: Elaborada pela autora, 2013. 99 Foi escolhido o tema cherry e o seu modelo é apresentando na figura A.10 abaixo. O modelo inicial foi modificado retirando-se alguns componentes para que ficassem com a aparência ilustrada na figura A.11. Figura A.11 – Relatório com tema cherry. Fonte: Elaborada pela autora, 2013. Figura A.12 – Relatório após modificação. Fonte: Elaborada pela autora, 2013. Para a construção do relatório foi utilizada os dados inseridos nas tabelas empresa, usuários, site_custom e instituição do banco de dados MySQL. É necessário para isso, construir a uma consulta em SQL para que esses dados sejam trazidos do banco. Esse processo pode ser realizado por meio da interface selecionando o ícone destacado na figura A.12 Figura A.13 – Barra de ferramentas do IReport . Fonte: Elaborada pela autora, 2013. 100 Na próxima janela que irá aparecer deve-se escolher a opção Query Designer, e aparecerá uma interface para que se escolha com quais tabelas e campos se pretende trabalhar. No canto esquerdo da figura A.13 é possível observar, que existe uma lista de tabelas do banco de dados com o qual se está trabalhando. Deste modo, basta clicar na tabela desejada e arrastar até o meio da janela e então selecionar os campos que queira que apareça no relatório. Os relacionamentos entre as tabelas são feito de modo automático. Figura A.14 – Interface para criação de consultas SQL. Fonte: Elaborada pela autora, 2013. A aba Report Inspector localizada a esquerda no Netbeans, permite que os campos trazidos pela consulta SQL sejam introduzidos no relatório, bastando para isso clicar no campo de solta-lo na parte do relatório onde ele deve aparecer. Essa aba é mostrada na figura A.14. 101 Figura A.15 – Aba Report Inspector. Fonte: Elaborada pela autora, 2013. Após a efetivação desses passos é possível realizar um teste para saber como ficará o relatório. Para isso, deve-se selecionar a opção Preview na barra do IReport e obter-se-á o resultado mostrado na figura A.15. 102 Figura A.16 – Relatório compilado. Fonte: Elaborada pela autora, 2013. A.3 CONSIDERAÇÕES FINAIS Neste Apêndice foi explicado e ilustrado como instalar e configurar o plug-in do IReport no Netbeans e também um exemplo prático de criação de um relatório. Dados os exemplos é possível observar a simplicidade que o IReport oferece para a criação de relatórios.