CENTRO ESTADUAL DE EDUCAÇÃO TECNOLÓGICA “PAULA SOUZA” FACULDADE DE TECNOLOGIA DE LINS CURSO SUPERIOR DE TECNOLOGIA EM BANCO DE DADOS MANUEL AFONSO DE LAVA GRANJEIA DESENVOLVIMENTO DE UMA APLICAÇÃO WEB PARA PEQUENOS ESCRITÓRIOS DE ADVOCACIA, COMBINADO COM USO DE DISPOSITIVO MÓVEL LINS/SP 2º SEMESTRE/2011 CENTRO ESTADUAL DE EDUCAÇÃO TECNOLÓGICA “PAULA SOUZA” FACULDADE DE TECNOLOGIA DE LINS CURSO SUPERIOR DE TECNOLOGIA EM BANCO DE DADOS MANUEL AFONSO DE LAVA GRANJEIA DESENVOLVIMENTO DE UMA APLICAÇÃO WEB PARA PEQUENOS ESCRITÓRIOS DE ADVOCACIA, COMBINADO COM USO DE DISPOSITIVO MÓVEL Trabalho de Conclusão de Curso apresentado à Faculdade de Tecnologia de Lins para obtenção do Título de Tecnólogo em Banco de Dados. Orientador: Prof. Me. João Luís Cardoso de Moraes LINS/SP 2º SEMESTRE/2011 MANUEL AFONSO DE LAVA GRANJEIA DESENVOLVIMENTO DE UMA APLICAÇÃO WEB PARA PEQUENOS ESCRITÓRIOS DE ADVOCACIA, COMBINADO COM USO DE DISPOSITIVO MÓVEL Trabalho de Conclusão de Curso apresentado à Faculdade de Tecnologia de Lins, como parte dos requisitos necessários para a obtenção do título de Tecnólogo em Banco de Dados sob orientação do Prof. Me. João Luís Cardoso de Moraes. Data de aprovação: 14/ 12 /2011 ____________________________________________ Orientador (Prof. Me. João Luís Cardoso de Moraes ) ____________________________________ Profª Me. Gisele Molina Becari _____________________________________ Prof. Me. Júlio Fernando Lieira A Deus, à minha família e aos professores Me. João Luís Cardoso de Mores e Ygor Gonzaga de Oliveira. AGRADECIMENTOS Primeiramente, agradeço a Deus, Nossa Senhora Auxiliadora e São João Bosco por ter chegado até aqui. Aproveito o ensejo para manifestar minha gratidão à minha família e a todos os envolvidos na produção deste trabalho. Quanto à equipe da FATEC LINS, reconheço o esforço para que os alunos tivessem um curso de qualidade. Todos foram muito importantes, independentemente de sua função. Por fim, jamais me esquecerei dos amigos que conquistei durante três anos nas tardes quentes de Lins e do apoio recebido de meu orientador, Prof. Me. João Luís Cardoso de Moraes, o qual desempenhou brilhantemente seu mister e daqueles que contribuíram indiretamente: Prof. Me. Mario Henrique S. Pardo, Prof. Me. Fábio Lúcio Meira e Prof. Ygor Gonzaga de Oliveira, Profª Mª Adriana de Bortoli, Prof. Me. Júlio Fernando Lieira, Prof. Me. Adriano de Souza Marques, Prof. Me. Alexandre Ponce de Oliveira, Prof. Me. Anderson Pazin, Prof. Me. Luiz Fernando de Oliveira Silva, Profª Mª Gisele Molina Becari, Prof. Dr. Luciano Soares de Souza e Letícia Raquel, minha irmã. RESUMO A informática chegou aos setores mais conservadores e tradicionais da sociedade, inclusive o Direito, marcado por grandes pilhas de papel. Ela pode contribuir muito para o aperfeiçoamento do sistema jurídico, principalmente com a Internet, porque proporciona mobilidade ao processo e com isso os profissionais do fórum podem investir o tempo que gastariam atendendo advogados para dar andamento aos processos. Pequenos escritórios de advocacia podem utilizar a tecnologia disponível, com enfoque no aperfeiçoamento de suas atividades de advogado, pois ele não precisará mais estar fisicamente em seu escritório para saber o que acontece. Este trabalho objetiva o desenvolvimento de uma solução web para escritórios de advocacia, com enfoque na utilização das tecnologias envolvidas, no sentido de contribuir para a melhora de seus processos rotineiros, principalmente a composição da procuração “ad juditia” e relatórios, evitando erros de digitação e consumo de tempo para escrita de documentos. A pesquisa de compromissos é realizada por meio de um dispositivo móvel conectado à Internet, em que o advogado informará seu código e a data para receber a listagem de compromissos na tela do aparelho. Foram utilizadas as seguintes tecnologias: Java Server Faces (JSF), Hibernate, Model Views Controller (MVC), Java Enterprise Editition (Java EE) e Java Micro Edition (Java ME), Oracle 10g, JDBC e IReports. Palavras-chave: Escritórios Advocacia. Dispositivo móvel. ABSTRACT Informatics has come to the more conservative and traditional departments of the society, including Law, marked by large stacks of paper. It can contribute greatly to improving the legal system, mainly with the Internet, because it provides mobility to the process and with it the court house professionals might invest their time on attending lawyers and coursing processes. Small law firms can use the available technology, focusing on the improvement of the lawyer’s activities, because he will no longer need to be physically in his office to know what happens. This work aims to develop a web solution for law firms, focusing on the use of the technologies, to contribute to the improvement of their routine processes, especially the composition of "ad juditia” mandate and reports, avoiding typing mistakes and waste of time for writing documents. The research commitment is accomplished through a mobile device connected to the Internet, in which the lawyer informs his code and date to receive a list of commitments on the screen of the device. The following technologies were used: Java Server Faces (JSF), Hibernate, Model Views Controller (MVC), Editition Java Enterprise (Java EE) and Java Micro Edition (Java ME), Oracle 10g, JDBC and iReports Keywords: Law Offices. Mobile device. LISTA DE ILUSTRAÇÕES Figura 1.1 - Plataforma Java ..................................................................................... 20 Figura 1.2 - Java Micro Edition .................................................................................. 23 Figura 1.3 - API JDBC. .............................................................................................. 25 Figura 2.1 - Caso de uso cadastrar advogado. ......................................................... 43 Figura 2.2 - Caso de uso cadastrar secretária. ......................................................... 44 Figura 2.3 - Caso de uso cadastrar cliente. ............................................................... 46 Figura 2.4 - Caso de uso cadastrar processo............................................................ 47 Figura 2.5 - Caso de uso relacionar clientes processos e advogados. ..................... 48 Figura 2.6 - Caso de uso cadastrar procuração. ....................................................... 49 Figura 2.7 - Caso de uso cadastrar andamento processual. ..................................... 49 Figura 2.8 - Caso de uso agendar consulta .............................................................. 51 Figura 2.9 - Caso de uso compor procuração “ad juditia”. ........................................ 52 Figura 2.10 - Caso de uso cadastrar contrato de honorários advocatícios. .............. 53 Figura 2.11 - Caso de uso relacionar contratos e advogados. .................................. 54 Figura 2.12 - Caso de uso gerarRelConsAdv. ........................................................... 55 Figura 2.13 - Caso de uso buscar cliente. ................................................................. 56 Figura 2.14 - Caso de uso buscar secretária............................................................. 57 Figura 2.15 - Caso de uso buscar procuração “ad juditia”. ........................................ 58 Figura 2.16 - Caso de uso listar compromissos. ....................................................... 59 Figura 2.17 - Caso de uso gerar relatório geral de agendamentos ........................... 60 Figura 2.18 - Caso de uso gerar relatório de andamentos do processo. ................... 61 Figura 2.19 - Caso de uso gerar relatório de processos por cliente. ......................... 62 Figura 2.20 - Caso de uso buscar contrato. .............................................................. 63 Figura 2.21 – Diagrama de classes ........................................................................... 64 Figura 2.23 – Diagrama de estrutura de dados completo. ........................................ 66 Figura 2.25 – Diagrama de estrutura de dados parcial: agendamento. ..................... 68 Figura 2.26 – Diagrama de estrutura de dados parcial: cadastro de contratos. ........ 69 Figura 2.27 – Diagrama de estrutura de dados parcial: processos. .......................... 70 Figura 2.28 – Diagrama de estrutura de dados parcial: cadastro de procurações. ... 71 Figura 2.29 - Diagrama de atividade cadastrar advogado. ........................................ 72 Figura 2.30 - Diagrama de atividade cadastrar secretária. ........................................ 73 Figura 2.31- Diagrama de atividade cadastrar cliente ............................................... 74 Figura 2.33 - Diagrama de atividade clientes advogados e processos. .................... 76 Figura 2.34 - Diagrama de atividade cadastrar procuração. ..................................... 77 Figura 2.35 - Diagrama de atividade cadastrar andamento. ..................................... 78 Figura 2.36 - Diagrama de atividade agendar consultas. .......................................... 79 Figura 2.37 - Diagrama de atividade compor procuração “ad juditia”. ....................... 80 Figura 2.38 - Diagrama de atividade cadastrar contrato. .......................................... 81 Figura 2.39 - Diagrama de atividade advogados e contratos. ................................... 82 Figura 2.40 - Diagrama de atividade relatório de consultas por advogado. .............. 83 Figura 2.41 - Diagrama de atividade buscar cliente. ................................................. 83 Figura 2.42 - Diagrama de atividade buscar secretária. ............................................ 84 Figura 2.43 - Diagrama de atividade buscar procuração “ad juditia”, ........................ 84 Figura 2.44 - Diagrama de atividade listar compromissos. ........................................ 85 Figura 2.45 - Diagrama de atividade gerar relatório geral de agendamentos. .......... 85 Figura 2.46 - Diagrama de atividade relatório de andamentos do processo. ............ 86 Figura 2.47 - Diagrama de atividade relatório de processos por cliente. ................... 86 Figura 2.48 - Diagrama de atividade buscar contrato. ............................................... 87 Figura 2.49 – Diagrama MVC cadastrar advogado. .................................................. 88 Figura 2.51 - Diagrama MVC cadastrar cliente. ........................................................ 90 Figura 2.52 - Diagrama MVC cadastrar processo. .................................................... 91 Figura 2.53 - Diagrama MVC relacionar clientes, advogados e processos. .............. 92 Figura 2.54 - Diagrama MVC cadastrar procuração “ad juditia”. ............................... 93 Figura 2.55 - Diagrama MVC cadastrar andamentos. ............................................... 94 Figura 2.56 - Diagrama MVC agendar consulta. ....................................................... 95 Figura 2.57 - Diagrama MVC compor procuração “ad juditia”. .................................. 96 Figura 2.58 - Diagrama MVC cadastrar contrato. ...................................................... 97 Figura 2.59 - Diagrama MVC relacionar advogados e contratos. .............................. 98 Figura 2.60 - Diagrama MVC gerar relatório de consultas por advogado. ................ 98 Figura 2.61 - Diagrama MVC buscar cliente.............................................................. 99 Figura 2.62 - Diagrama MVC buscar secretária. ..................................................... 100 Figura 2.63 - Diagrama MVC buscar procuração “ad juditia”. ................................. 100 Figura 2.64 - Diagrama MVC listar agendamentos. ................................................ 101 Figura 2.65 - Diagrama MVC relatório geral de agendamentos. ............................. 102 Figura 2.66 - Diagrama MVC relatório de andamentos por processo. .................... 102 Figura 2.67 - Diagrama MVC relatório de processos por cliente. ............................ 103 Figura 2.68 - Diagrama MVC buscar contrato. ........................................................ 104 Figura 2.69 - Diagrama de sequência cadastrar advogado. .................................... 104 Figura 2.71 - Diagrama de sequência cadastrar cliente. ......................................... 105 Figura 2.72 - Diagrama de sequência cadastrar processo. ..................................... 106 Figura 2.73 - Diagrama de sequência clientes, processos e advogados. ............... 106 Figura 2.74 - Diagrama de sequência cadastrar procuração. ................................. 107 Figura 2.75 - Diagrama de sequência cadastrar andamento. ................................. 107 Figura 2.76 - Diagrama de sequência agendar consultas. ...................................... 108 Figura 2.77 - Diagrama de sequência compor procuração “ad juditia”. ................... 108 Figura 2.78 - Diagrama de sequência cadastrar contrato. ...................................... 109 Figura 2.79 - Diagrama de sequência relacionar contratos e advogados. .............. 109 Figura 2.80 - Diagrama de sequência relatório de consultas por advogado. .......... 110 Figura 2.81 - Diagrama de sequência buscar cliente. ............................................. 110 Figura 2.82 - Diagrama de sequência buscar secretária. ........................................ 111 Figura 2.83 - Diagrama de sequência buscar procuração “ad juditia”. .................... 111 Figura 2.84 - Diagrama de sequência listar agendamentos. ................................... 112 Figura 2.85 - Diagrama de sequência relatório geral de agendamentos. ................ 112 Figura 2.86 - Diagrama de sequência relatório de andamentos por processo. ....... 113 Figura 2.87 - Diagrama de sequência relatório de processos por cliente. ............... 113 Figura 2.88 - Diagrama de sequência buscar contrato. ........................................... 114 Figura 3.1 - Estrutura da tabela de processos......................................................... 115 Figura 3.2 - Servlet responsável por receber os parâmetros do aplicativo móvel, realizar a consulta no banco de dados e retornar os resultados. ............................ 116 Figura 3.3 - Consulta de compromissos e resultados obtidos. ................................ 117 Figura 3.4 - Página JSF antes da configuração do idioma. ..................................... 118 Figura 3.5 - Visão básica da página principal. ......................................................... 119 Figura 3.6 - Página JSF responsável pelo controle de agendamentos. .................. 120 Figura 3.7 - Cadastro de compromissos. ................................................................ 121 Figura 3.8 - Sintaxe SQL para obtenção dos dados do cliente e do advogado. ...... 121 Figura 3.9 - Configuração do empacotamento. ....................................................... 122 Figura 3.10 - Montagem da procuração “Ad Juditia” no NetBeans.......................... 123 Figura 3.11 - Formulário da procuração cível (pagina JSP) .................................... 124 Figura 3.12 - Servlet responsável por enviar dados para composição da procuração. ................................................................................................................................ 124 Figura 3.13 - Procuração “Ad Juditia” Cível composta de acordo com os parâmetros fornecidos pela página JSP. .................................................................................... 125 LISTA DE QUADROS Quadro 1. Necessidades e prioridades......................................................................40 Quadro 2. Casos de uso............................................................................................40 LISTA DE ABREVIATURAS E SIGLAS AC - Ação Cautelar ADC - Ação Direta de Inconstitucionalidade ADI - Ação Direta de Inconstitucionalidade ADO – Ação Direta de Inconstitucionalidade por Omissão ADPF - Ação de Descumprimento de Preceito Fundamental AJAX - Asynchronous Javascript And Xml API - Application Programming Interface AR - Ação Rescisória CDC - Connected Device Configuration CLDC - Connected Limited Device Configuration CRUD - Create, Retrieve, Update and Delete CVM - Compact Virtual Machine CVS - Concurrent Version System EJB - Enterprise Java Beans HC - Habeas Corpus HTML - Hypertext Markup Language HTTP – Hypertext Transfer Protocol IDE - Integrated Development Environment IrDA - Infrared Data Association JCP - Java Community Process JDBC - Java Database Connectivity Java EE - Java Enterprise Editition Java ME - Java Micro Edition JNI - Java Native Interface JPA - Java Persistence API JRE - Java Runtime Environment JSDK - Java Software Development Kit Java SE - Java Standard Edition JSF- Java Server Faces JSP - Java Server Pages JSR - Java Specification Request JVM - Java Virtual Machine JVMDI - Java Virtual Machine Debugging Interface MI - Mandado de Injunção MIDP - Mobile Information Device Profile MS - Mandado de Segurança MVC - Model View Controler OAB - Ordem dos Advogados do Brasil ORM - Object-relational Mapping PDA - Personal Digital Assistants PDF – Portable Data Format PJOs - Plain Old Java Objects PSV - Proposta de Súmula Vinculante RCL - Reclamação RMI - Remote Method Invocation ROM - Read Only Memory SGBD - Sistema Gerenciador de Banco de Dados SL - Suspensão de Liminar SQL - Structured Query Language SS - Suspensão de Segurança STA - Suspensão de Tutela Antecipada STF - Supremo Tribunal Federal UML - Unified Modeling Language VSS -Visual SourceSafe WLAN - Wireless Local Area Network WMAN - Wireless Metropolitan Area Network WPAN - Wireless Personal Area Network WSD - Web Services Developers WWAN - Wireless Wide Area Network XML - Extensible Markup Language LISTA DE SÍMBOLOS % - Porcentagem @ - Arroba § - Parágrafo SUMÁRIO AGRADECIMENTOS .................................................................................................. 5 1 TECNOLOGIAS UTILIZADAS ................................................................................ 19 1.1 Java ..................................................................................................................... 19 1.1.1 Java ME ........................................................................................................ 21 1.1.2 Persistência de Dados em Java ................................................................... 24 1.2 COMUNICAÇÃO SEM FIO ................................................................................. 29 1.3 Integrated Development Environment (IDE) ........................................................ 31 1.4 JAVA SERVER FACES (JSF) ............................................................................ 33 1.5 Documentos em pdf ............................................................................................ 34 1.6 oracle 10g............................................................................................................ 34 1.7 DO ADVOGADO E DA SOCIEDADE DE ADVOGADOS .................................... 35 1.8 Da procuração “Ad Juditia” .................................................................................. 36 2 ANÁLISE E PROJETO DE SISTEMA .................................................................... 37 2.1 ANÁLISE DE NEGÓCIO ..................................................................................... 37 2.1.1 Instrução do problema .................................................................................. 37 2.1.2 Atores Envolvidos no Processo .................................................................... 38 2.1.3 Descrição do Ambiente Atual ........................................................................ 38 2.2 Visão Geral do Produto ....................................................................................... 39 2.2.1 Perspectiva do Produto (Análise de Mercado) .............................................. 39 2.2.3 Características .............................................................................................. 39 2.3 ANÁLISE DE REQUISITOS............................................................................. 40 2.3.1 Análise de Requisitos Funcionais ................................................................. 40 2.3.1.2 Diagrama de classes ................................................................................. 64 2.4.1.2 Mapeamento para Modelo Relacional e Projeto Físico.............................. 66 2.4.3 Diagrama de Atividades ................................................................................ 72 2.4.4 MVC .............................................................................................................. 88 2.4.5 Diagrama de Sequência ............................................................................. 104 3 IMPLEMENTAÇÃO E TESTES ........................................................................... 115 3.1 Oracle 10g ......................................................................................................... 115 3.2 Implementação JAVAME................................................................................... 115 3.3 Aplicação web ................................................................................................... 118 3.4 Considerações finais ........................................................................................ 125 17 INTRODUÇÃO O advogado, conhecido pelo formalismo e pelo excelente domínio do vernáculo bem articulado com suas principais ferramentas: a fala e a escrita, no presente século viu-se obrigado a interagir com a moderna Ciência da Informática. O que existia nessa área há alguns anos e era artigo de luxo e sofisticação tornou-se instrumento fundamental para exercício de sua nobre tarefa de contribuir para que haja Justiça, assim como preceitua nossa Carta Magna em seu artigo 133, que ressalta a importância de tal profissional à administração da justiça. Os meios eletrônicos de comunicação ganham cada vez mais destaque no mundo jurídico. O processo digital já é realidade e tem feito com que entidades de classe, como a Ordem dos Advogados do Brasil (OAB), invistam em treinamento tecnológico, considerando seu grandioso mérito, sendo que o analfabeto digital enfrenta grandes dificuldades até para situações corriqueiras, por exemplo, para fazer sua Declaração de Imposto de Renda. Neste contexto, percebe-se a extrema importância do assunto, tanto que o Supremo Tribunal Federal (STF), guardião da Constituição e instância jurisdicional máxima do Brasil possui uma lista do que somente pode ser julgado se for apresentado eletronicamente, conforme trecho a seguir: No Supremo, 14 classes processuais só são aceitas em meio eletrônico. São elas: ação direta de inconstitucionalidade (ADI), arguição de descumprimento de preceito fundamental (ADPF), ação direta de inconstitucionalidade por omissão (ADO), ação direta de constitucionalidade (ADC), reclamação (RCL), proposta de súmula vinculante (PSV), ação cautelar (AC), ação rescisória (AR), mandado de segurança (MS), mandado de injunção (MI), suspensão de liminar (SL), suspensão de segurança (SS), suspensão de tutela antecipada (STA), e habeas corpus (HC). Este último, quando não foi impetrado por advogado, será recebido em papel. (NUNES, 2010, p.16) Com toda essa inovação tecnológica atuando em setores tão tradicionais o escritório do advogado não pode ficar alheio a essas mudanças, funcionando com grandes arquivos de metal, repletos de pastas e agendas, para controlar o andamento dos processos, audiências e o atendimento de seus clientes. Definitivamente, isso não faz muito sentido devido ao acesso às tecnologias para aperfeiçoamento e portabilidade de suas funções. Este trabalho objetiva o desenvolvimento de um sistema web básico e genérico capaz de gerenciar um pequeno escritório de advogados, integrando 18 cadastro de funcionários, advogados, clientes, andamento de processos, bem como os compromissos de cada profissional, além da emissão de relatórios pertinentes e composição da procuração “ad juditia”. Para complementar, o advogado poderá consultar seus afazeres diários através de seu celular, tudo com enfoque na integração de tecnologias. Para isto, utilizar-se-á o banco de dados Oracle 10g, Integrated Development Environment (IDE) NetBeans 6.9.1, Java Server Pages (JSP), Servlets, Java Script, Java Server Faces (JSF), Java Micro Edition (Java ME), Unified Modeling Language (UML), juntamente com o padrão Model – View – Controler (MVC) e HyperText Markup Language (HTML) através do Microsoft Office SharePoint Designer 2007. Destarte, pode-se ressaltar que o profissional do direito não pode ficar alheio a esses aspectos tecnológicos, mas utilizá-los para aprimorar seu labor, de modo que seu escritório também esteja disponível virtualmente, possibilitando, de certa forma, seu acesso em qualquer lugar do mundo, bastando simplesmente a utilização da conexão com a Internet. 19 1 TECNOLOGIAS UTILIZADAS 1.1 JAVA O Java possui uma grande vantagem em relação a outras linguagens pelo fato de ser interpretado e compilado. Um programa em C para ser executado precisa que seu compilador gere o seu respectivo arquivo executável e deve existir um arquivo desse diferente para cada sistema operacional, o que muito dificulta a portabilidade. Em um programa feito em Java, ainda que sem utilizar os poderosos recursos da orientação a objetos, em vez de gerar um simples arquivo executável, seu compilador gera um bytecode, que pode ser entendido como uma linguagem intermediária entre a de alto nível e a de máquina. Para fazer funcionar, basta que o dispositivo tenha a versão compatível com o sistema operacional em uso da Java Virtual Machine (JVM), o que é capaz de interpretar o bytecode, sem a necessidade de utilizar um compilador diferente para cada sistema operacional que for necessário utilizar a aplicação. Dessa forma, o programa é eficiente porque é compilado e funciona em múltiplas plataformas porque é interpretado. Insta salientar que é necessário utilizar para compilar a aplicação o pacote Java destinado a cada categoria de equipamento. Após essa breve introdução acerca do funcionamento da linguagem, é mister conhecer, ainda que de forma sucinta, suas siglas e a organização estrutural, dividida em três tipos de pacotes, sendo eles: Java Standard Edition (Java SE): trata-se da versão inicial, voltada ao desenvolvimento de grande parte das aplicações desktop. Java Enterprise Editition (Java EE): atua para desenvolver aplicações de grande porte, que necessitam do uso de Enterprise Java Beans (EJB), além de servidores de aplicação. Este pacote disponibiliza um recurso muito utilizado quando o assunto é programação web, principalmente, se utilizado o padrão MVC, o Servlet. Java Micro Edition (Java ME): a escassez de recursos, geralmente, são dispositivos móveis. Tal pacote será melhor explorado em um tópico específico, 20 devido a sua importância para este trabalho. A imagem logo abaixo mostra a destinação de cada versão Java. Figura 1.1 - Plataforma Java Fonte: SOUZA, 2010, p. 7 Terminados os padrões, é chegada a hora de compreender outros conceitos de extrema importância quando o assunto é Java: Java Virtual Machine (JVM): conhecida simplesmente por Máquina Virtual, é ela a responsável por interpretar o bytecode que outrora fora compilado para uma linguagem intermediária entre o alto e o baixo nível, o já citado bytecode. Para acelerar e execução, a JVM pode compilar pequenos trechos do programa. Esse recurso é chamado de just in time compiler. Application Programming Interface (API): é a interface que faz a interação entre o aplicativo e a programação, ou seja, são instruções e padrões de programação para possibilitar o acesso de um aplicativo. Java Software Development Kit (JSDK): mais conhecido por JDK, é um conjunto composto pela maquina virtual, compilador e appletviewer, com a função de executar applets e as famosas bibliotecas básicas da linguagem Java. Java Runtime Environment (JRE): resume-se, basicamente, à maquina virtual do Java, não sendo capaz, por si só, de compilar um programa. Java Community Process (JCP): trata-se de uma organização internacional, composta por desenvolvedores e fabricantes, cujo objetivo principal é aperfeiçoar a linguagem Java. 21 Java Specification Request (JSR): são intenções de alterações e novas implementações. É a parte documental para que sejam propostas modificações. Servlet: é comumente utilizado para criação de páginas web dinâmicas, aumentando as funcionalidades da camada servidora. Para isso, utiliza-se de um modelo de programação request/response, ou seja, solicitação e resposta. Se for considerado o padrão MVC, faz o papel do controlador. Web Services Developers Pack (WSDP): contempla as ferramentas e integra as APIs para o desenvolvimento web e Servlets. Java Server Pages (JSP): é uma proposta baseada em Java importantíssimo quando o assunto é desenvolvimento web. É uma linguagem de scripts muito semelhante ao PHP, porém, é transferida para Java puro no instante de execução. 1.1.1 Java ME Os dispositivos móveis ganham cada vez mais destaque no mercado mundial. Até mesmo o que era puramente mecânico há alguns anos, por exemplo, uma máquina de lavar roupas, atualmente possui um microdispositivo controlador e, na maioria das vezes, a linguagem utilizada é o Java, porém, na versão Java ME que tem um enfoque em equipamentos que dispõem de poucos recursos de memória, processamento e energia. (PALUDO, 2003) “A plataforma Java ME foi criada pela Sun™ Microsystems, para permitir o uso de Java em dispositivos com recursos limitados. Ela envolveu o uso de um subconjunto da linguagem Java, que continua sendo Java, mas com a eliminação de uma série de funcionalidades (...).” (BORGES, 2004) A plataforma acima citada subdivide-se em duas categorias, sendo que uma tem relação com aparelhos que possuem um pouco mais de recurso, como televisores. Já a outra é voltada para dispositivos móveis como celulares e smartphones, sempre levando em conta suas particularidades. Connected Device Configuration (CDC) é a configuração que atente aos dispositivos com uma quantidade levemente maior de recursos, por exemplo, set-top boxes e sistemas de navegação para carros. Devido ao fato desses equipamentos 22 possuírem maior poder de processamento, a CDC atua com um conjunto compatível com a plataforma Java SE, inclusive uma versão de sua máquina virtual chamada de Compact Virtual Machine (CVM). Com isso, ela consegue oferecer os seguintes recursos: portabilidade, suporte nativo a processos, rápida sincronização, execução de classes Java fora da memória Read Only Memory (ROM), classe de acesso remoto pequenas, suporte para sistemas operacionais de tempo real, suporte as seguintes características de Java SE: segurança, Java Native Interface (JNI), Remote Method Invocation (RMI), Java Virtual Machine Debugging Interface (JVMDI) e weakreferences (objetos recentemente utilizados). (VIANA, 2011) A outra opção é a Connected Limited Device Configuration (CLDC), muito utilizada em celulares e computadores de mão, tem a responsabilidade de atuar em quesitos essenciais como redes, entrada e saída, internacionalização e as bibliotecas do núcleo Java (java.lang, java.util). Suas raízes estão em um padrão menos limitado, o CDC. O objetivo desse padrão é a programação de aplicações e não do sistema. Devido a isso, o desenvolvedor estará plenamente voltado para sua aplicação, não se preocupando em qual equipamento vai funcionar. Tal categoria do Java ME possui uma grande preocupação com segurança, utilizando-se camadas especializadas: baixo nível, nível de aplicação e fim a fim. A primeira trata da qualidade da semântica e para que nenhum código mal-intencionado cause falhas na máquina virtual. No setor de nível de aplicação, controla tudo que ela pode acessar, desde bibliotecas a recursos do sistema. Por último, a proteção fim a fim protege toda a transação até que seja encerrada. (CARNIEL, 2007) Dentre as implementações do CLDC, há uma biblioteca de comunicação que merece destaque: Connection Framework. Ela é capaz de fazer conexões com um site da Internet, servidores e portas de comunicação. (CARNIEL. 2007) Entretanto, essas duas configurações não são suficientes para suprir todas as necessidades do ambiente de execução. Para complementá-las existem os perfis (profiles) que adicionam classes que possibilitam desenvolver aplicações para um tipo específico de equipamento. Eles permitem a definição da camada de abstração das APIs necessárias para o programador escrever o código. Sua principal função é trabalhar para interoperabilidade entre aparelhos de uma mesma categoria. Os principais perfis para o CLDC são o Mobile Information Device Profile (MIDP) e o PDA Profile (PDA). O primeiro lida com a comunicação por rede pelo HTTP 1.1, interface gráfica com o usuário simples e armazenamento local de dados. 23 O segundo, por sua vez, é feito para que as facilidades encontradas em PDAs e smartphones sejam aproveitadas, principalmente na construção de interfaces gráficas mais sofisticadas. Para a CDC, os perfis de destaque são: Fondation, Personal e RMI. O Fundadion Profile é responsável por trazer as principais bibliotecas do Java ME. O Personal Profile está relacionado com as bibliotecas gráficas. O RMI adiciona suas bibliotecas do Java SE, porém apenas o lado cliente dessa API é suportado. Por derradeiro, não faz muito sentido falar em Java ME sem citar o MIDlet (aplicativo para o perfil MIDP). Ele está presente em todas as etapas em todas as fases do aplicativo, principalmente quando há mudança de um estado para outro do mesmo. Insta salientar o método startApp( ), que pode ser implementado pelo desenvolvedor para que possa tomar atitudes em relação a cada mudança de estado. (PAULO, 2008) A figura 1.2 mostra as diferentes aplicações da plataforma Java, com destaque para Java ME. Figura 1.2 - Java Micro Edition Fonte: 3G, 2011. 24 1.1.2 Persistência de Dados em Java O desenvolvimento de uma aplicação, na maioria das vezes, não está relacionado simplesmente a processar uma informação inserida pelo usuário, mas também precisa interagir com uma base de dados. Assim, necessita-se armazenar, recuperar, alterar e excluir os registros do negócio que o programa gerencia. A Persistência de dados, por sua vez, está intimamente ligada ao armazenamento em um banco relacional. No entanto, a linguagem Java está cada vez mais presente nesses aplicativos que se comunicam com bancos de dados. O fato de destaque é que Java utiliza o paradigma de orientação a objetos, com várias diferenças em relação aos tradicionais bancos de dados relacionais. Desse modo, o desafio é aliar os poderosos recursos da orientação a objetos com a segurança e confiabilidade dos bancos relacionais, fazendo com que tudo funcione harmonicamente, sendo que as soluções mais utilizadas são o Java Database Connectivity (JDBC), Hibernate e Java Persistence API (JPA). (KING, 2004) Porém, antes do estudo dessas tecnologias, é preciso conhecer a ideia do Mapeamento Objeto-Relacional (ORM) e do Plain Old Java Objects, ou POJOs. O primeiro, em linhas gerais, tem por objetivo fazer a integração de aplicações orientadas a objetos com os tradicionais bancos relacionais. Nos casos do Hibernate e do JPA, isso é feito automaticamente. O segundo é formado por categorias de objetos Java que apresentam uma forma bem mais modesta, se o referencial for um framework. (GOUVEA, 2010) O JDBC é, geralmente, o primeiro contato que os estudantes têm quando o assunto é persistência de dados em Java. Trata-se de API que possibilita ao desenvolvedor a conexão com o banco de dados, bem como, a utilização de SQL na aplicação Java de modo a permitir e realização de consultas e manipulação de resultados. Em última análise, o JDBC é uma interface implementada pela classe DriverManager que é responsável por gerenciar as conexões, uma vez que é compatível com vários drivers, por isso, é possível a conexão com vários SGBDs sem a necessidade de alterar o código já escrito em Java. Tal interface, embora comumente seja trabalhada em baixo nível, também está servindo de base para o 25 projeto de outras que atuarão em alto nível para viabilizar o mapeamento de bancos relacionais direto para classes Java. (LOPES, 2010) A arquitetura do JDBC tem por finalidades principais ser uma interface independente e viabilizar o acesso a qualquer Sistema Gerenciador de Banco de Dados, através de Structured Query Language (SQL). A API JDBC atua nas frentes de alto e baixo nível. A primeira é utilizada pelos programas para acessar em primeira instância as funcionalidades oferecidas pelo JDBC. A segunda, por sua vez, interage com os métodos disponíveis nos drivers JDBC, ou seja, quem efetivamente faz a conexão com o banco de dados, conforme ilustrado na figura abaixo. Figura 1.3 - API JDBC. Fonte: WILSON, 2010. A imagem logo acima é uma representação da arquitetura JDBC. É importante destacar a função da classe DriverManager, que é responsável por abrir a conexão do driver JDBC já registrado. Ao iniciar a comunicação, o DriverManeger seleciona um driver de uma lista para realizar a conexão, de acordo com a URL (caminho do BD) especificada. Assim que houve sucesso em sua função, as buscas de resultados (fetch) e consultas (queries) são feitas propriamente no driver JDBC. 26 Conhecer as classes da API JDBC é de extrema utilidade para o desenvolvimento do tema, como bem descreve Márcio Pulcinelli: DriverManager – Passa as requisições de conexão para os drivers JDBC. DriverPropertyInfo – Uma instância de propriedades de uma conexão de um driver JDBC. Types – Uma lista de constantes simbólicas de tipos de dados SQL Data uma extensão da classe java.util.Date mais apropriada ao tipo de dados Date do SQL. Time – Uma extensão da classe java.util.Date mais apropriada ao tipo de dados Time do SQL Timestamp – Uma extensão da classe java.util.Date mais apropriada ao tipo de dados Timestamp do SQL. Numeric – Um tipo de dados numérico com maior precisão que proporciona um conjunto completo de operações aritméticas de grande precisão; esta classe é apropriada ao tipo de dados Numeric do SQL. Driver – Classe através da qual o Driver Manager acessa os drivers JDBC Connection, efetuando uma conexão ao banco de dados; através dela, o programador manipula suas consultas e resultados Statement – Classe que executa comandos SQL simples PreparedStatement – Classe especializada em manipular comandos SQL com parâmetros. CallableStatement – Classe especializada em manipular chamadas a procedimentos armazenados. ResultSet – Classe para acessar os resultados obtidos pela execução de uma consulta SQL. DatabaseMetaData – Classe usada para acessar uma grande variedade de informações sobre uma conexão a um banco de dados. ResultSetMetaData – Classe usada para acessar uma grande variedade de informações sobre os atributos de um ResultSet. (PULCINELLI, 2010) Portando, mesmo sendo uma das maneiras mais simples de fazer a comunicação entre os aplicativos Java e o banco de dados, o JDBC mostra todos seus recursos que, bem explorados, são capazes de funcionalidades fantásticas, embora muitos o considerem uma tecnologia em decadência. Segundo KING (2004), o Hibernate, também disponível no pacote .Net sob a nomenclatura de NHibernate, facilita o mapeamento entre os atributos dos objetos e as tabelas dos bancos de dados relacionais, uma vez que diminui a complexidade da operação devido ao fato de transformar as classes Java para tabelas SQL automaticamente. Insta salientar que esse mapeamento pode ser implementado por arquivos Extensible Markup Language (XML), JSR-220 Persistence Annotation ou código Java. Sua consagração está diretamente relacionada à sua simplicidade, pois concentra todo envolvimento no Hibernate Session, como mostra a figura a seguir: 27 Figura 1.4 - Arquitetura Hibernate. Fonte: DEVMEDIA, 2010. O ponto de destaque da figura acima fica por conta do Hibernate Session, uma vez que engloba o conceito do gerenciador de persistência (Persistence Manager), frequentemente utilizado para operações de inserção, atualização, consulta e remoção de cada instância de classe mapeada pelo Hibernate. Já o SessionFactory tem a responsabilidade de compilar e armazenar nas tabelas. Como o Hibernate conecta-se a vários bancos de dados, precisa-se atender às solicitações dos mesmos, relacionando com o mapeamento. Essa é outra finalidade importante do SessionFactory, que é configurado de acordo com o SGBD que está atuando, portanto, especifica-se cada objeto persistido no banco de dados 28 através de um arquivo XML. Além disso, há três estados que um objeto pode apresentar no contexto do Hibernate: Transient: objeto não salvo que ainda está na memória. Persistent: objeto na cache do SessionFactory que pode ainda não estar salvo. Detached: objeto gravado com sucesso no banco de dados. Desse modo, pode-se afirmar que o Hibernate é uma solução de fácil acesso e bastante eficaz para integrar objetos a bancos de dados relacionais, uma vez que é capaz de realizar o mapeamento objeto-relacional e ainda possui excelentes estruturas para persistência de dados. O último tópico abordado fica a cargo do moderno JPA. Trata-se de um framework empregado na camada de persistência que tem por objetivo integrar os conceitos de orientação a objetos ao modelo relacional, de modo a melhorar o rendimento do desenvolvedor. Seu funcionamento é simples e rápido, pois todo o trabalho de mapeamento que o programador teria de efetuar é realizado de forma automatizada pela API, isso é possível graças ao Java Persistense Metadada, posto em prática por arquivos XML ou Java annotation, que indica a classe que sofre persistência, bem como e relação entre seus métodos e a coluna da tabela. (GOUVEA, 2010) Em regra, o nome da classe é o mesmo da tabela, assim como cada atributo equivale a nome da coluna. Todavia, isso pode perfeitamente ser alterado de maneira bastante simples. Utiliza-se anntotations também para especificar a questão da cardinalidade, por exemplo: @OneToOne, @OneToMany, @ManyToOne e @ManyToMany. Isso significa, respectivamente, um para um, um para muitos, muitos para um e muitos para muitos, ou ainda, o famoso n para n. O fato curioso fica por conta do JPA utilizar-se do já citado JDBC para efetivar as operações de persistência, portanto, é necessário escolher um JPA Provider. Contudo, persistir dados deixou de ser uma tarefa complexa e cansativa devido a tais ferramentas que muito aperfeiçoam o desempenho do desenvolvedor. Porém, o conhecimento teórico acerca do mapeamento objeto-relacional em muito contribui para uma utilização mais avançada dessas tecnologias. 29 1.2 COMUNICAÇÃO SEM FIO A transferência de dados entre dispositivos eletrônicos, durante muitos anos, era efetuada apenas por cabos, o que possuía vários inconvenientes, principalmente a questão da infra-estrutura necessária para acomodar os fios. Para sanar tal problema, foi desenvolvida a tecnologia wireless que pode ser entendida como a maneira de transmitir dados à distância entre clientes e servidores sem o uso de condutores elétricos a uma distância que varia de alguns metros, como no caso do controle remoto do televisor, até milhões de quilômetros com o emprego de satélites artificiais. Os dispositivos clientes podem ser bastante diversificados, desde os tradicionais computadores até os mais avançados celulares. (VIANA, 2009) Antes de aprofundar o estudo, é importante entender alguns aspectos físicos que muito auxiliam a compreensão de como um dado pode sair de um lugar e ir para o outro sem, ao menos, utilizar um cabo ligando dois pontos. Através do uso de ondas eletromagnéticas e de infravermelho isso é perfeitamente possível. Ondas eletromagnéticas, de maneira simples, nada mais são do que campos elétricos e magnéticos alternados entre si de maneira perpendicular e atingem uma velocidade muito próxima da luz. Uma vez lançadas, elas permanecem trafegando até que sua energia se esgote. Todavia, há algumas características acerca de ondas relevantes para o aprendizado, como comprimento de onda, frequência e amplitude. Tais aspectos são grandezas físicas, ou seja, podem ser medidos quantitativamente e sempre são acompanhadas de uma unidade de medida correspondente. (SILVA, 2010) Frequência é o número de oscilações por unidade de tempo, medida no Sistema Internacional por Hz. Comprimento de onda é a distância entre duas cristas, comumente medida em metros. Amplitude é a altura da onda entre o ponto mais baixo e o mais alto. Também utiliza a mesma unidade de medida do comprimento de onda. Insta salientar que frequência e comprimento de onda são grandezas físicas inversamente proporcionais, isto significa que se a frequência aumenta, diminui-se o 30 comprimento. Se este aumenta, diminui-se a frequência. Uma onda eletromagnética propaga-se perfeitamente no vácuo. (SILVA, 2008) O infravermelho é uma radiação localizada no setor invisível do espectro eletromagnético, nas proximidades do final vermelho de luz visível, além disso, não gera ionização e nos vertebrados pode ser percebida na forma de calor, assim como foi constatado em 1800 por William Herschel. Nesse contexto, vale lembrar a Infrared Data Association (IrDA), entidade responsável por estabelecer os padrões para esse tipo de comunicação. Não há como falar de redes sem fio sem classificá-las, pois agrupar por semelhanças muito facilita os estudos. Neste quesito não há muita diferença para as redes convencionais, a não ser o prefixo wireless na frente. Logo abaixo, contam as principais classificações quanto à área de abrangência. Wireless Personal Area Network (WPAN) – é projetada para pequenas redes, geralmente utilizada em conjunto com o Bluetooth. Wireless Local Area Network (Wireless LAN ou WLAN) - trata-se da conexão de rede local por ondas eletromagnéticas muito utilizada para compartilhar informações e acesso à Internet em escritórios, aeroportos, hotéis e similares, mostrando claramente suas vantagens em relação à rede ADSL convencional. (SILVA, 2008) Wireless Metropolitan Area Network (WMAN) faz referência a uma rede metropolitana que é capaz de atingir no mínimo alguns quilômetros quadrados. Wireless Wide Area Network (WWAN) é a rede de longo alcance, geograficamente distribuída, capaz de abranger um país inteiro ou até continentes, englobando as redes WPAN, WLAN e WMAN. A Internet é um ótimo exemplo. (WIRELESS, 2010) Por outro lado, isso não faria sentido sem o trabalho dos protocolos que, simplificadamente, são a linguagem que os dispositivos utilizam para estabelecer a comunicação entre si, estão concentrados entre os principais: o Bluetooth e o 802.11, também conhecido por Wi-Fi. É importante ressaltar que são protocolos complementares, e não concorrentes como muito erroneamente divulgam. O primeiro, inicialmente, foi projetado para conectar dispositivos em uma distância não superior a dez metros, sendo muito empregado para conexão de celulares com computadores e até mesmo com seus próprios acessórios como, por exemplo, fones de ouvido. Os dispositivos identificam-se e são capazes de 31 estabelecer pequenas redes, tendo um deles como host. Embora o Bluetooth seja utilizado em pequenas distâncias, sua grande vantagem é que consome pouca energia, o que significa uma grande vantagem para sua implementação em dispositivos móveis que necessitam de um uso muito eficiente de energia para poupar suas baterias. Já o protocolo 802.11, mais popularizado em sua versão 802.11b, utiliza o mesmo espectro de frequência que o Bluetooth, porém a transmissão é feita valendo-se do direct-sequence spread-spectrum. No princípio, os dados eram transmitidos a uma taxa de 11 Mbps, mas hoje equipamentos que atuam a 100 Mbps podem facilmente ser encontrados no mercado. No entanto, tal taxa pode cair por fatores como a distância, ficando em torno de até 5 Mbps, dependendo do equipamento. A distância média de operação é de cem metros, mas em locais fechados essa distância cai consideravelmente. Embora possua uma alta taxa de transmissão e uma distância considerável, possui a desvantagem de consumir bastante energia em relação ao Bluetooth, o que dificulta seu uso em dispositivos que precisam garantir uma maior autonomia da bateria. (WIRELESS, 2010) 1.3 INTEGRATED DEVELOPMENT ENVIRONMENT (IDE) O termo IDE, do inglês Integrated Development Environment, que pode ser entendido como Ambiente de Desenvolvimento Integrado, constitui-se de um software com excelentes ferramentas para facilitar os programadores a trabalhar com os recursos da linguagem e facilitar na digitação e implementação do código. Na maioria das vezes, uma IDE é basicamente composta por um editor de códigofonte que reconhece as expressões reservadas, um compilador, um depurador e demais recursos específicos.(OLIVEIRA, 2011) Encontram-se disponíveis muitos ambientes de desenvolvimento Java, cada um explorando aquilo que julga ser mais útil. O fato é que a melhor ferramenta é aquela que a pessoa mais tem conhecimento. Portanto, serão apresentadas algumas delas. JCreator: fácil e poderoso. É gratuito em sua versão básica que oferece principalmente suporte para aplicações (J2SE). Para quem deseja mais 32 complementos como complemento da linha de código, preenchimento para parâmetros, nomes e sintaxe de membros; além de interface avançada para JDBC e instrumentos para alta produtividade, basta adquirir a versão Pro. (BREGAIDA, 2011) Gel: pequeno e muito rápido é nativo para Windows e foi escrito em Delphi por Gerald Nunn. O IDE trabalha com sintaxe para Java, JSP, HTML, XML, C, C++, Perl, Python e outras. É possível desfazer e refazer ações infinitamente, identação de bloco, pesquisa por expressão regular e em arquivos. Também oferece suporte para Concurrent Version System (CVS), Visual Source Safe (VSS) e outros. Faz a ligação do Java com JSP, possui complemento de código e dicas de métodos das classes do Java, sem contar os plugins personalizáveis. É gratuito, porém, seu desenvolvimento não é continuado desde meados de 2004. (BREGAIDA, 2011) JEdit: um editor de tamanho reduzido. Possui as funcionalidades básicas da linguagem Java e é escrito nela própria, portanto, funciona em qualquer sistema operacional que possua a máquina virtual do Java instalado. Chama a atenção o fato de estar disponível em mais de noventa idiomas. É totalmente gratuito, inclusive para uso comercial. (BREGAIDA, 2011) OptimalJ: utiliza uma interface gráfica para o usuário bastante parecida com a do famoso NetBeans. Além disso, traz recursos muito interessantes e pouco explorados por outros ambientes, por exemplo, geração de códigos a partir de diagramas UML, refatoração refinada e ferramentas para análise de desempenho. Contudo, necessita-se adquirir a licença. (BREGAIDA, 2011) Eclipse: um dos mais conhecidos ambientes de desenvolvimento quando o assunto é Java. Trata-se de um projeto de código aberto (opensource) e tem a finalidade de ser uma plataforma robusta para desenvolvimento comercial que integra as mais modernas tecnologias, tanto para aplicações locais, até complexos sistemas web. É capaz de integrar diversas tecnologias, como JSP, MVC, Servlets, XML, interagindo com containers, por exemplo, o Apache TomCat. Embora o Projeto Eclipse seja patrocinado pela IBM, conta com a colaboração de importantes parceiros: Borland, Oracle, OMG, Merant, Novell (SuSE), Red Hat, Sybase, Fujitsu, entre outros. (BREGAIDA, 2011) NetBeans: muito bem conceituado entre os desenvolvedores, também é um projeto de código aberto, repleto de recursos para trabalhar com qualquer tipo de aplicação. Possui suporte, além do Java, para HTML, C, C++, JSP, entre outros. 33 Existem várias versões gratuitas e comerciais. Integra as tecnologias JSP, XML, RMI, CORBA, JINI, JDBC e Servlet; suporte a Ant, CVS e outros sistemas de controle de versão, além de disponibilizar suporte para compiladores e depuradores, assistentes e ferramentas para geração automática de alguns códigos. (BREGAIDA, 2011) Intelij IDEA: trate-se de um IDE completo, comercial, com elevado nível de usabilidade e aproveitamento de códigos. Está disponível para Windows, Linux, MacOS e Unix. Possui uma interface para edição de arquivos Java, JSP, XML, HTML. Além disso, trás recurso de autocompletar, identação automática, busca e substituição, reconhecimento de sintaxe, colocação de parênteses e chaves, informações sobre classes e métodos do Java, geração automatizada de código, entre outros. O ponto de destaque fica por conta do refactoring, capaz de renomear e mover classes, pacotes, métodos, atributos, variáveis locais com atualização global das referências e parâmetros. (BREGAIDA, 2011) Sun Java Studio Creator: versão moderna do antigo Projeto Rave. É um IDE da nova geração e tem por enfoque o desenvolvimento Java Web, principalmente voltado para Java Server Faces (JSF), possuindo uma interface bastante simples, bastando, na maioria das vezes, arrastar e soltar para gerar o código. É bastante semelhante ao .NET da Microsoft. (BREGAIDA, 2011) 1.4 JAVA SERVER FACES (JSF) O mercado de desenvolvimento cobra cada vez mais qualidade e agilidade de seus profissionais. Digitar linha por linha do código é muito importante para um primeiro contato com a informática na graduação, porém perde-se muito em rendimento. Para sanar essas necessidades, existem os frameworks, também chamados de ferramentas, capazes de automatizar a geração do código, de modo a propiciar muita rapidez, por exemplo, o JFS, desenvolvido pela Sun Microsystems para potencializar o desenvolvimento de aplicações web, principalmente as dinâmicas. “Na prática, a utilização de Java Server Faces torna fácil o desenvolvimento através de componentes de interface de usuário, possibilitando a conexão desses 34 componentes a objetos de negócio de forma simplificada.” (GONÇALVES, 2008, p.198) 1.5 DOCUMENTOS EM PDF A tecnologia Portable Data Format (PDF) tornou-se muito utilizada devido a sua facilidade de visualização e impressão. Por esse motivo, utilizar-se-á um complemento para IDE NetBeans, denominado JasperReports, capaz de gerar relatórios com base em consultas a um banco de dados. O JasperReports é uma biblioteca escrita em Java, cujo o código é aberto e tem como principal foco facilitar a tarefa dos desenvolvedores na criação de relatórios para as aplicações tanto desktop como web, fornecendo uma ferramenta que facilita a geração dos mesmos, tendo como resultado de saída relatórios no formato XML, incentivando, assim, a criação de uma ferramenta para gerar relatórios visuais que foi chamada de IReport, sendo que o mesmo foi desenvolvido pelo italiano Giulio Toffoli e logo após com a grande popularização, foi comprada pela JasperSoft para se tornar ferramenta oficial na construção de relatórios para o JasperReports. (CASTRO, 2011, p. 24) 1.6 ORACLE 10G Atualmente, a informação é o bem mais precioso de uma empresa, o que justifica a importância de um Sistema Gerenciador de Banco de Dados (SGDB) confiável. O Oracle 10g é uma opção bastante interessante e dinâmica por ir do básico ao sofisticado, dentre outras vantagens, assim como comenta Lívia Garcia Alves de Souza: Por ser um modelo de banco de dados relacional e ter um grande potencial de performance, suas principais características são melhorias de gerenciamento (recursos de auto-ajuste); desempenho e melhorias de escalabilidade; capacidade de transporte de tabela para vários tipos de máquina (por exemplo, Windows para Linux); criptografia transparente de dados; entre outras. (SOUZA, 2011, p. 32) 35 1.7 DO ADVOGADO E DA SOCIEDADE DE ADVOGADOS “O advogado é indispensável à administração da justiça, sendo inviolável por seus atos e manifestações no exercício da profissão, nos limites da lei.” (CF, 1988, p. 99). O advogado é figura de extrema importância para promoção da Justiça, tanto que a Carta Magna da República Federativa do Brasil fez questão de explicitá-la em seu artigo 133. Nesse contexto, o ordenamento jurídico, especialmente nos termos da lei federal n° 8.906 de 1994 (Estatuto da Advocacia e da Ordem dos Advogados do Brasil), assegura privativamente a tal profissional, ressalvadas algumas exceções, o jus postulandi, ou seja, capacidade postulatória. Evidencia-se, então, a capacidade exclusiva do advogado representar interesses de terceiros perante o Poder Judiciário. Desta forma, por intermédio de sua atividade, o cidadão pode encontrar a tutela jurisdicional, sentido de solucionar os conflitos de interesses qualificados por uma pretensão resistida, ou de modo mais singelo, os litígios. Resumidamente, em regra, as pessoas para terem acesso à jurisdição necessitam que seja feito através de um advogado, devido à já citada capacidade postulatória. Insta salientar que a legislação brasileira admite, em algumas hipóteses, que não é preciso o acompanhamento de um advogado para pleitear algo em juízo. O exemplo clássico é o Habeas Corpus. Aos advogados é facultado organizarem-se em sociedades, porém existem algumas características específicas dessa organização reguladas pelo Estatuto da Advocacia. A sociedade de advogados pode ter natureza de pessoa jurídica ou sociedade civil de pessoas com o objetivo de prestação de serviços advocatícios. Ela não pode ser confundida com as demais sociedades civis, uma vez é defeso a mercantilização da advocacia, bem como a divulgação conjunta com outras atividades, lucrativas ou não, somente pode ser formada por advogados, dentre outras restrições previstas na lei. Em nível organizacional, um advogado pode ser sócio, empregado ou associado, como bem preceitua Haroldo Paranhos Cardella: O Regulamento Geral introduziu no art. 39 um tipo intermediário entre o sócio da sociedade e o advogado. É o advogado associado, que não estabelece qualquer vínculo de subordinação ou de relação de emprego com a sociedade, mas 36 atua em parceria, recebendo percentual ajustado, ou seja, utiliza as instalações da sociedade, mas não assume qualquer responsabilidade social. (CARDELLA, 2005, p. 81) Destaca-se que o simples fato de advogados reunirem-se em um mesmo lugar para compartilhar despesas não caracteriza sociedade de advogados, esta exige todo um trâmite na OAB para ser efetivada. É perfeitamente permitido que estes profissionais usem recursos em comum, por exemplo, divisão do valor do aluguel do prédio, do condomínio e, em tempos modernos, um programa de computador. Tais condutas não infringem nenhuma norma. (CARDELA, 2005) Independentemente de como esse profissional trabalhe, a informática pode facilitar muito sua vida, desde o aspecto da segurança até a mobilidade proporcionada pelos sistemas web. 1.8 DA PROCURAÇÃO “AD JUDITIA” Procuração é o instrumento, ou seja, um documento especialmente constituído para comprovar uma relação jurídica. Tal relação, neste trabalho, de maneira bastante singela, trata-se de um mandato, ou seja, uma outorga de poderes do cliente para o advogado e como destina-se para uma representação judicial, faz-se necessário a cláusula “ad juditia”. Em última análise, nada mais é que um contrato. O tema contratos, que contempla os mandatos, é muito vasto é não é o objetivo deste estudo. Portanto, nas linhas acima foram explanados, de maneira simples, alguns conceitos elementares e relação ao assunto. 37 2 ANÁLISE E PROJETO DE SISTEMA 2.1 ANÁLISE DE NEGÓCIO 2.1.1 Instrução do problema Os escritórios de advocacia que não são informatizados ficam vinculados às antigas agendas de papel e os tradicionais formulários manuscritos. Toda vez que o advogado precisa consultar ou marcar um compromisso necessita ir fisicamente ao local onde está sua agenda ou, quanto está impossibilitado por qualquer motivo, pedir que alguém o faça. Além disso, existe a questões da procuração e do contrato de prestação de serviços advocatícios que precisam ser gerados com base em dados cadastrais, tanto do cliente quanto do advogado. Tal problema afeta diretamente o advogado, o cliente e secretária do escritório. Os dois primeiros são prejudicados com possíveis erros no preenchimento de formulários que não fazem nenhum tipo de validação de dados e todos sofrem com a demora para a conferência dos dados todas as vezes que eles forem utilizados para qualquer fim. O fato de digitar novamente os dados cadastrais dos envolvidos nos procedimentos gera vários erros de digitação e imprecisão das informações. De acordo com a gravidade do equívoco, invalida-se um documento, o que é extremamente gravoso tanto para o profissional quanto para seu cliente. Aliado a isso, o advogado não consegue, de certa forma, portabilidade de seu escritório devido a sua agenda ficar atrelada a um local físico. Contudo, a implantação do sistema permite sanar tais dificuldades porque os dados cadastrais dos envolvidos serão digitados e conferidos com cautela apenas uma vez, além de não mais haver rasuras, bem como trazer ao advogado a possibilidade de interagir com o sistema de agendamento de compromissos de qualquer dispositivo com acesso à Internet e consulta simples através de um aplicativo desenvolvido para seu celular. Tal abordagem reduzirá o fluxo de dados 38 na rede, já que trafegarão apenas as informações da consulta, pois a camada de visão ficará na aplicação. 2.1.2 Atores Envolvidos no Processo O sistema atua basicamente com três atores: cliente, advogado e secretária, cada um com suas responsabilidades. A secretária é responsável por fazer o atendimento inicial do cliente e agendamento de compromissos, principalmente as consultas. É também sua função cadastrar os clientes com os dados pessoais por eles fornecidos e fazer as atualizações necessárias, podendo também excluir e alterar informações referentes às consultas. Ao cliente cabe solicitar agendamento de consultas e conferir se seus dados cadastrais foram inseridos corretamente no formulário eletrônico. Por fim, o advogado atua como gerenciador do sistema, tendo amplos poderes para alterar, incluir e excluir compromissos, dados cadastrais de clientes, secretárias e advogados, acessar os relatórios de consultas por profissional, emitir a procuração “ad juditia” e relatórios relevantes. Somente ele terá acesso a consultas de compromissos via celular. 2.1.3 Descrição do Ambiente Atual O funcionamento de um pequeno escritório de advocacia, que não é informatizado, mantém a mesma forma de trabalho há algumas décadas. A obsoleta agenda de papel continua firmemente em seu mister: recebe as anotações de consultas e com rasuras guarda as alterações feitas pelo advogado ou pela secretária. Se o advogado não está no escritório e precisa saber quais serão seus compromissos para o próximo dia, por exemplo, precisa ir pessoalmente ler os escritos, ou pedir que alguém gentilmente o faça. 39 Os dados cadastrais dos clientes são anotados em formulários de papel e sempre que uma alteração precisa ser feita é confeccionado um novo formulário inserindo novamente todas as informações por quem realizou a atualização. Quanto os relatórios de quantos atendimentos foram realizados por ano por cada profissional, é incumbência da secretária fazê-los, analisando as anotações efetuadas no decorrer desse período. Outro aspecto de bastante relevância fica por conta da confecção de documentos que exigem os dados cadastrais, tanto de clientes quanto de advogados, uma vez que sempre que são utilizados precisam ser digitados novamente, ou seja, transcritos sempre que o cliente precisar outorgar uma procuração “ad juditia” ou necessita-se de um contrato de honorários. Após tal procedimento manual, geralmente realizado pelo advogado, surge o a obrigação de conferir se os dados não contêm erros de digitação, o que consome um tempo que poderia ser investido em mais atenção ao cliente. 2.2 VISÃO GERAL DO PRODUTO 2.2.1 Perspectiva do Produto (Análise de Mercado) O produto em questão tem funcionamento autônomo. Tal afirmativa diz que ele não faz parte de um sistema, nem recebe informações provenientes de outro software. Destina-se apenas a solucionar a questão em foco de maneira simples e eficaz, informatizando tarefas que gastam muito tempo quando feitas pelo modo tradicional, contendo inconsistências de informações que podem ser resolvidas pela informática. 2.2.3 Características Quadro 1 – Necessidades e prioridades. 40 Necessidade Prioridade Cadastro de clientes Alta Cadastro de advogados Alta Cadastro de processos Alta Cadastro de compromissos Alta Cadastro de secretárias Alta Relatório de consultas por advogado Alta Expedição de relatório de processos por Alta cliente Expedição da procuração “ad juditia” Alta Expedição de relatório de consultas Alta Expedição de relatório de andamentos Alta do processo. Listagem de compromissos pelo celular. Alta Pesquisas básicas Média Fonte: elaborado pelo autor. 2.3 ANÁLISE DE REQUISITOS 2.3.1 Análise de Requisitos Funcionais LISTA DE EVENTOS Quadro 2 – Casos de uso. Letra Descrição Evento Caso de uso Resposta A Advogado solicita Dados do Cadastrar Cadastro, cadastro advogado advogado msg02 Advogado solicita Dados da Cadastrar Cadastro, cadastro de secretária secretária Msg11 B secretária 41 C D E F Secretária cadastra Dados do Cadastrar Cadastro, cliente cliente cliente Msg01 Secretária cadastra Dados do Cadastrar Cadastro, processo processo processo msg05 Advogado relaciona- Dados do RelacionarCliA Cadastro, se com processo e relaciona- dvProcesso msg23 cliente mento Advogado solicita o Dados da Cadastrar Cadastro, cadastro de uma procuração procuração msg25 Advogado solicita o Dados do Cadastrar Cadastro, cadastro de um andamento andamento msg22 Cliente solicita Dados do Agendar Agendamento, agendamento de agendamento consulta msg06 Advogado solicita Número da Compor Procuração “ad procuração “ad OAB, CPF do procuração “ad juditia” juditia” cliente e juditia” procuração “ad juditia” G andamento H consulta I finalidade J K Advogado solicita Dados do Cadastrar Cadastro, cadastro de contrato contrato contrato msg08 Advogado solicita Dados do Relacionar Cadastro, relacionamento com relacionamento contratos e contrato Advogado solicita L M N msg52 advogados Código do Gerar relatório Relatório relatório individual de advogado de consultas individual de agendamentos por advogado agendamento Buscar cliente Dados do Advogado solicita Nome do busca de cliente cliente Advogado solicita Nome da Buscar Dados da busca de secretária secretária secretária secretária cliente 42 O P Q Advogado solicita Código do Buscar Dados da busca de procuração cliente Procuração procuração Advogado solicita Código do Listar Lista individual listagem individual advogado, dia, Compromissos de de agendamentos mês e ano compromissos Advogado solicita Gerar relatório Agenda relatório geral de geral de completa de agendamentos agendamentos todos advogados R Advogado solicita Código do Gerar relatório Relatório de relatório de processo no de andamentos andamentos andamentos do tribunal processo S Advogado solicita Código do Gerar relatório Relatório de relatório de cliente de processos processos por por cliente cliente processos por cliente T Advogado busca Código do contrato cliente Buscar contrato Dados do contrato Fonte: elaborado pelo autor. Caso de uso A – Cadastrar advogado Este caso de uso é responsável pelo cadastro de um advogado. Curso Normal: A.1. O advogado solicita cadastro. A.1.2. O sistema obtém os dados do advogado. A.1.3. O sistema verifica se o campo Nº OAB está preenchido. A.1.4. O sistema cria uma instância do advogado e emite msg02 “Advogado cadastrado!”. Cursos Alternativos: 43 A.2: O advogado já está cadastrado e deseja-se alterá-lo. A.2.1. O sistema obtém os dados do advogado. A.2.2. O sistema verifica se o campo Nº OAB está preenchido. A.2.3. O sistema atualiza o advogado e emite msg03 “Alteração realizada com sucesso!”. A.2.4. Abandonar o caso de uso. A.3.1. O advogado já está cadastrado e deseja-se excluí-lo. A.3.2. O sistema exclui o advogado e emite msg04 “Exclusão realizada com sucesso!”. A.3.3. Abandonar o caso de uso. A.4: O campo Nº OAB não está preenchido. A.4.1. O sistema emite a msg05: “Maybe not null”. A.4.2: O sistema redireciona-se ao passo A.2.1. A.4.3. Abandonar o caso de uso. Figura 2.1 - Caso de uso cadastrar advogado. Fonte: elaborado pelo autor. Caso de Uso B – Cadastrar Secretária 44 Este caso de uso é responsável pelo cadastro de uma secretária. Curso Normal: B.1. O advogado solicita o cadastro de uma secretária. B.1.1. O sistema obtém os dados da secretária. B.1.2. O sistema cria uma instância do da secretária e emite msg11 “Secretária cadastrada com sucesso!”. Cursos Alternativos: B.2: A secretária já está cadastrada e deseja-se alterá-la. B.2.1. O sistema obtém os dados da secretária. B.2.2. O sistema atualiza o cliente e emite msg03 “Alteração realizada com sucesso”. B.2.3. Abandonar o caso de uso. B.3.1: A secretária já está cadastrada e deseja-se excluí-la. B.3.2. O sistema exclui a secretária e emite msg04 “Exclusão realizada com sucesso!”. B.3.3. Abandonar o caso de uso. Figura 2.2 - Caso de uso cadastrar secretária. 45 Fonte: elaborado pelo autor. Caso de Uso C – Cadastrar Cliente Este caso de uso é responsável pelo cadastro de um cliente. Curso Normal: C.1. O cliente solicita cadastro. C.1.1. O sistema obtém os dados do cliente. C.1.2. O sistema cria uma instância do cliente e emite msg01 “Cliente cadastrado com sucesso!”. Cursos Alternativos: C.2: O cliente já está cadastrado e deseja-se alterá-lo. C.2.1. O sistema obtém os dados do cliente. C.2.2. O sistema atualiza o cliente e emite msg03 “Alteração realizada com sucesso”. C.2.3. Abandonar o caso de uso. C.3.1: O cliente já está cadastrado e deseja-se excluí-lo. C.3.2. O sistema exclui o cliente e emite msg04 “Exclusão realizada com sucesso!”. C.3.3. Abandonar o caso de uso. 46 Figura 2.3 - Caso de uso cadastrar cliente. Fonte: elaborado pelo autor. Caso de Uso D – Cadastrar processo Este caso de uso é responsável pelo cadastro de um processo. Curso Normal: D.1. O advogado solicita o cadastro de um processo. D.1.1. O sistema obtém os dados do processo. D.1.3. O sistema cria uma instância do processo e emite msg05 “Processo cadastrado com sucesso”. Cursos Alternativos: D.2: O processo já está cadastrado e deseja-se alterá-lo. D.2.1. O sistema obtém os dados do processo. D.2.2. O sistema atualiza o processo e emite msg03 “Alteração realizada com sucesso!”. D.2.3. Abandonar o caso de uso. D.3: O processo já está cadastrado e deseja-se excluí-lo. D.3.1. O sistema exclui o processo e emite msg04 “Exclusão realizada com sucesso!”. D.3.2. Abandonar o caso de uso. 47 Figura 2.4 - Caso de uso cadastrar processo. Fonte: elaborado pelo autor. Caso de Uso E – Relacionar advogado com processo e cliente Este caso de uso é responsável pelo relacionamento do advogado com processo do respectivo cliente. Curso Normal: E.1. O advogado solicita o relacionamento com o processo e cliente. E.1.1. O sistema obtém os dados do relacionamento. E.1.2. O sistema cria uma instância do processo e emite msg23 “Relacionamento concluído com sucesso”. Cursos Alternativos: E.2: O relacionamento já está cadastrado e deseja-se alterá-lo. E.2.1. O sistema obtém os dados do relacionamento. E.2.2. O sistema atualiza o processo e emite msg03 “Alteração realizada com sucesso!”. E.2.3. Abandonar o caso de uso. E.3: O relacionamento já está cadastrado e deseja-se excluí-lo. E.3.1. O sistema exclui o relacionamento e emite msg04 “Exclusão realizada com sucesso!”. E.3.2. Abandonar o caso de uso. 48 Figura 2.5 - Caso de uso relacionar clientes processos e advogados. Fonte: elaborado pelo autor. Caso de Uso F – Cadastrar Procuração Este caso de uso é responsável pelo cadastro de uma procuração. Curso Normal: F.1. O advogado solicita o cadastro de uma procuração. F.1.1. O sistema obtém os dados da procuração. F.1.2. O sistema cria uma instância da procuração e emite msg25 “Procuração cadastrada com sucesso”. Cursos Alternativos: F.2: A procuração já está cadastrada e deseja-se alterá-la. F.2.1. O sistema obtém os dados do procuração. F.2.2. O sistema atualiza a procuração e emite msg03 “Alteração realizada com sucesso!”. F.2.3. Abandonar o caso de uso. F.3: A procuração já está cadastrado e deseja-se excluí-lo. F.3.1. O sistema exclui a procuração e emite msg04 “Exclusão realizada com sucesso!”. F.3.2. Abandonar o caso de uso. 49 Figura 2.6 - Caso de uso cadastrar procuração. Fonte: elaborado pelo autor. Caso de Uso G – Cadastrar andamento Este caso de uso é responsável pelo cadastro de um andamento processual. Curso Normal: G.1. O advogado solicita o cadastro de andamento. G.1.1. O sistema obtém os dados do andamento. G.1.3. O sistema cria uma instância do andamento e emite msg22 “Andamento cadastrado com sucesso”. Cursos Alternativos: G.2: O andamento já está cadastrado e deseja-se alterá-lo. G.2.1. O sistema obtém os dados do andamento. G.2.2. O sistema atualiza o andamento e emite msg03 “Alteração realizada com sucesso!”. G.2.3. Abandonar o caso de uso. G.3: O andamento já está cadastrado e deseja-se excluí-lo. G.3.1. O sistema exclui o processo e emite msg04 “Exclusão realizada com sucesso!”. G.3.2. Abandonar o caso de uso. Figura 2.7 - Caso de uso cadastrar andamento processual. 50 Fonte: elaborado pelo autor. Caso de uso H – Agendar consulta Este caso de uso é responsável por agendar uma consulta. Curso Normal: H.1. O cliente solicita o agendamento de uma consulta. H.1.1. O sistema exibe uma lista com os códigos dos clientes cadastrados. H.1.2. O sistema exibe uma lista com os códigos dos advogados cadastrados. H.1.3. O sistema exibe uma lista com os códigos das secretárias cadastradas. H.1.4. O sistema solicita os demais dados da consulta. H.1.5. O sistema cria uma instância da consulta e emite msg06 “Consulta agendada com sucesso!”. Cursos Alternativos: H.2: Necessita-se desmarcar a consulta. H.2.1. O sistema mostra a lista de consultas para os usuário escolher. H.2.2. O sistema emite a msg04 “Exclusão realizada com sucesso!”. H..2.3. Abandonar o caso de uso. H.3. Necessita-se alterar a consulta. H.3.1. O sistema obtém os dados do da consulta. H.3.2. O sistema atualiza a consulta e emite msg03 “Alteração realizada com sucesso!”. H.3.3. Abandonar o caso de uso. 51 Figura 2.8 - Caso de uso agendar consulta. Fonte: elaborado pelo autor. Caso de uso I – Compor procuração “ad jutitia” Este caso de uso é responsável por compor uma procuração “ad juditia”. Curso Normal: I.1: O advogado solicita a composição de uma procuração “ad juditia” I.1.1. O sistema obtém o CPF do cliente. I.1.2. O sistema obtém o Nº da OAB do advogado. I.1.3. O sistema obtém a finalidade da procuração. I.1.4. O sistema cria uma instância da procuração. Cursos Alternativos: I.2: O cliente não está cadastrado. I.2.2 O sistema emite a msg50 “Cliente não cadastrado”. I.2.3. Abandonar o caso de uso. I.3: O advogado não está cadastrado. I.3.1. O sistema emite a msg51 ”Advogado não cadastrado”. I.3.3. Abandonar o caso de uso. 52 Figura 2.9 - Caso de uso compor procuração “ad juditia”. Fonte: elaborado pelo autor. Caso de uso J – Cadastrar Contrato Este caso de uso é responsável por cadastrar um contrato de honorários advocatícios. Curso Normal: J.1. O advogado solicita ao sistema o cadastro de um contrato de honorários advocatícios. J.1.1. O sistema obtém os dados da do contrato. J.1.2. O sistema cria uma instância do contrato e emite msg08 “Contrato de honorários cadastrado com sucesso”. Cursos Alternativos: J.2: O contrato já está cadastrado e deseja-se alterá-lo. J.2.1. O sistema obtém os dados do contrato. J.2.2. O sistema atualiza o contrato e emite msg03 “Alteração realizada com sucesso!”. J.2.3. Abandonar o caso de uso. J.3: O contrato já está cadastrado e deseja-se excluí-lo. 53 J.3.1. O sistema exclui o contrato e emite msg04 “Exclusão realizada com sucesso!”. J.3.2. Abandonar o caso de uso. Figura 2.10 - Caso de uso cadastrar contrato de honorários advocatícios. Fonte: elaborado pelo autor. Caso de Uso K – Relacionar contrato e advogado. Este caso de uso é responsável pelo relacionamento do advogado com um contrato. Curso Normal: K.1. O advogado solicita o relacionamento com o contrato. K.1.1. O sistema obtém os dados do relacionamento. K.1.2. O sistema cria uma instância do processo e emite msg52 “Relacionamento contratual concluído com sucesso”. Cursos Alternativos: K.2: O relacionamento já está cadastrado e deseja-se alterá-lo. K.2.1. O sistema obtém os dados do relacionamento. K.2.2. O sistema atualiza o processo e emite msg03 “Alteração realizada com sucesso!”. 54 K.2.3. Abandonar o caso de uso. K.3: O relacionamento já está cadastrado e deseja-se excluí-lo. K.3.1. O sistema exclui o relacionamento e emite msg04 “Exclusão realizada com sucesso!”. K.3.2. Abandonar o caso de uso. Figura 2.11 - Caso de uso relacionar contratos e advogados. Fonte: elaborado pelo autor. Caso de Uso L – Gerar relatório de consultas realizadas por um advogado Este caso de uso é responsável por gerar um relatório contendo as consultas realizadas por um advogado informado. Curso Normal: L.1. O advogado solicita relatório de consultas. L.1.1. O sistema obtém o número da OAB do advogado. L.1.2. O sistema verifica se o advogado está cadastrado. L.1.3. O sistema cria uma instância do relatório e emite msg10: “Relatório gerado com sucesso”. 55 Cursos Alternativos: L.2: O advogado não está cadastrado L.2.1. O sistema emite a msg99: “Não cadastrado”. L.2.2. O sistema redireciona para a interface de cadastro de advogados. L.2.3. Abandonar o caso de uso. Figura 2.12 - Caso de uso gerarRelConsAdv. Fonte: elaborado pelo autor. Caso de Uso M – Buscar Cliente Este caso de uso é responsável por pesquisar um cliente por nome. Curso Normal: M.1. O advogado solicita a busca de um cliente por nome. M.1.1. O sistema obtém o nome do cliente. M.1.2. O sistema exibe todos os dados cadastrais do cliente. Cursos Alternativos: M.2: Não existe cliente com o nome fornecido. M.2.1. O sistema exibe a msg99 “Não encontrado”. 56 M.2.2. Abandonar o caso de uso. Figura 2.13 - Caso de uso buscar cliente. Fonte: elaborado pelo autor. Caso de Uso N – Buscar Secretária Este caso de uso é responsável por pesquisar uma secretária por nome. Curso Normal: N.1. O advogado solicita a busca de uma secretária por nome. N.1.1. O sistema obtém o nome da secretária. N.1.2. O sistema exibe todos os dados cadastrais da secretária. Cursos Alternativos: N.2: Não existe secretária com o nome fornecido. N.2.1. O sistema exibe a msg99 “Não encontrado”. N.2.2. Abandonar o caso de uso. 57 . Figura 2.14 - Caso de uso buscar secretária. Fonte: elaborado pelo autor. Caso de Uso O – Buscar Procuração Este caso de uso é responsável por pesquisa uma procuração “ad juditia” pelo código do cliente. Curso Normal: O.1. O advogado ou a secretária solicita a busca de uma procuração pelo código do cliente. O.1.1. O sistema obtém o código do cliente. O.1.2. O sistema exibe todos os dados da procuração. Cursos Alternativos: O.2: Não existe procuração para o código do cliente fornecido. O.2.1. O sistema exibe a msg99 “Não encontrado”. O.2.2. Abandonar o caso de uso. 58 Figura 2.15 - Caso de uso buscar procuração “ad juditia”. Fonte: elaborado pelo autor. Caso de Uso P – Listar compromissos Este caso de uso é responsável por listar os compromissos de um advogado. Curso Normal: P.1. O advogado solicita a listagem de seus compromissos. P.1.1. O sistema obtém o código do advogado, dia, mês e ano. P.1.2. O sistema exibe todos os compromissos do respectivo advogado para a data informada. Cursos Alternativos: P.2: Não há compromisso para a data informada ou há algum dado incorreto. P.2.1. O sistema exibe a msg99 “Não encontrado”. P.2.2. Abandonar o caso de uso. 59 Figura 2.16 - Caso de uso listar compromissos. Fonte: elaborado pelo autor. Caso de Uso Q – Relatório de geral de agendamentos Este caso de uso é responsável por gerar um relatório contendo todos os agendamentos realizados. Curso Normal: Q.1. O advogado solicita o relatório de compromissos agendados. Q.1.2. O sistema gera e exibe o relatório no formato PDF. Cursos Alternativos: Q.2: Não há compromissos. Q.2.1. O sistema exibe a msg99 “Não encontrado”. Q.2.2. Abandonar o caso de uso. 60 Figura 2.17 - Caso de uso gerar relatório geral de agendamentos Fonte: elaborado pelo autor. Caso de Uso R – Relatório de andamentos por processo Este caso de uso é responsável por gerar um relatório contendo todos os andamentos de um processo. Curso Normal: R.1. O advogado solicita o relatório de andamentos do processo. R.1.1. O sistema obtém o código do processo cadastrado no respectivo tribunal. R.1.2. O sistema gera e exibe o relatório no formato PDF. Cursos Alternativos: R.2: Não há andamentos ou processo não cadastrado. R.2.1. O sistema exibe a msg99 “Não encontrado”. R.2.2. Abandonar o caso de uso. 61 Figura 2.18 - Caso de uso gerar relatório de andamentos do processo. Fonte: elaborado pelo autor. Caso de Uso S – Gerar relatório de processos por cliente Este caso de uso é responsável por gerar um relatório contendo todos os processos de um determinado cliente. Curso Normal: S.1. O advogado solicita o relatório de processos por cliente. S.1.1. O sistema obtém o código do cliente. S.1.2. O sistema gera e exibe o relatório no formato PDF. Cursos Alternativos: S.2: Não há cliente ou processo. S.2.1. O sistema exibe a msg99 “Não encontrado”. S.2.2. Abandonar o caso de uso. 62 Figura 2.19 - Caso de uso gerar relatório de processos por cliente. Fonte: elaborado pelo autor. Caso de Uso T – Buscar Contrato Este caso de uso é responsável por buscar um contrato pelo código do cliente. Curso Normal: T.1. O advogado solicita a busca de uma um contrato pelo código do cliente. T.1.1. O sistema obtém o código do cliente. T.1.2. O sistema exibe todos os dados do contrato. Cursos Alternativos: T.2: Não existe contrato para o código do cliente fornecido. T.2.1. O sistema exibe a msg99 “Não encontrado”. T.2.2. Abandonar o caso de uso. 63 Figura 2.20 - Caso de uso buscar contrato. Fonte: elaborado pelo autor. 64 2.3.1.2 Diagrama de classes Figura 2.21 – Diagrama de classes Fonte: elaborado pelo autor. 65 2.4 ANÁLISE E DESIGN 2.4.1 Projeto de Banco de Dados 2.4.1.1 Diagrama de Entidades e Relacionamentos (modelo lógico) Figura 2.22 - Diagrama de entidades e relacionamentos. Fonte: elaborado pelo autor. 66 2.4.1.2 Mapeamento para Modelo Relacional e Projeto Físico Figura 2.23 – Diagrama de estrutura de dados completo. Fonte: elaborado pelo autor. 67 Figura 2.24 – Diagrama de estrutura de dados compacto. Fonte: elaborado pelo autor. 68 Figura 2.25 – Diagrama de estrutura de dados parcial: agendamento. Fonte: elaborado pelo autor. 69 Figura 2.26 – Diagrama de estrutura de dados parcial: cadastro de contratos. Fonte: elaborado pelo autor. 70 Figura 2.27 – Diagrama de estrutura de dados parcial: processos. Fonte: elaborado pelo autor. 71 Figura 2.28 – Diagrama de estrutura de dados parcial: cadastro de procurações. Fonte: elaborado pelo autor. 72 2.4.3 Diagrama de Atividades Figura 2.29 - Diagrama de atividade cadastrar advogado. Fonte: elaborado pelo autor. 73 Figura 2.30 - Diagrama de atividade cadastrar secretária. Fonte: elaborado pelo autor. 74 Figura 2.31- Diagrama de atividade cadastrar cliente Fonte: elaborado pelo autor. 75 Figura 2.32 - Diagrama de atividade cadastrar processo. Fonte: elaborado pelo autor. 76 Figura 2.33 - Diagrama de atividade clientes advogados e processos. Fonte: elaborado pelo autor. 77 Figura 2.34 - Diagrama de atividade cadastrar procuração. Fonte: elaborado pelo autor. 78 Figura 2.35 - Diagrama de atividade cadastrar andamento. Fonte: elaborado pelo autor. 79 Figura 2.36 - Diagrama de atividade agendar consultas. Fonte: elaborado pelo autor. 80 Figura 2.37 - Diagrama de atividade compor procuração “ad juditia”. Fonte: elaborado pelo autor. 81 Figura 2.38 - Diagrama de atividade cadastrar contrato. Fonte: elaborado pelo autor. 82 Figura 2.39 - Diagrama de atividade advogados e contratos. Fonte: elaborado pelo autor. 83 Figura 2.40 - Diagrama de atividade relatório de consultas por advogado. Fonte: elaborado pelo autor. Figura 2.41 - Diagrama de atividade buscar cliente. Fonte: elaborado pelo autor. 84 Figura 2.42 - Diagrama de atividade buscar secretária. Fonte: elaborado pelo autor. Figura 2.43 - Diagrama de atividade buscar procuração “ad juditia”, Fonte: elaborado pelo autor. 85 Figura 2.44 - Diagrama de atividade listar compromissos. Fonte: elaborado pelo autor. Figura 2.45 - Diagrama de atividade gerar relatório geral de agendamentos. Fonte: elaborado pelo autor. 86 Figura 2.46 - Diagrama de atividade relatório de andamentos do processo. Fonte: elaborado pelo autor. Figura 2.47 - Diagrama de atividade relatório de processos por cliente. Fonte: elaborado pelo autor. 87 Figura 2.48 - Diagrama de atividade buscar contrato. Fonte: elaborado pelo autor. 88 2.4.4 MVC Figura 2.49 – Diagrama MVC cadastrar advogado. Fonte: elaborado pelo autor. 89 Figura 2.50 - Diagrama MVC cadastrar secretária. Fonte: elaborado pelo autor. 90 Figura 2.51 - Diagrama MVC cadastrar cliente. Fonte: elaborado pelo autor. 91 Figura 2.52 - Diagrama MVC cadastrar processo. Fonte: elaborado pelo autor. 92 Figura 2.53 - Diagrama MVC relacionar clientes, advogados e processos. Fonte: elaborado pelo autor. 93 Figura 2.54 - Diagrama MVC cadastrar procuração “ad juditia”. Fonte: elaborado pelo autor. 94 Figura 2.55 - Diagrama MVC cadastrar andamentos. Fonte: elaborado pelo autor. 95 Figura 2.56 - Diagrama MVC agendar consulta. Fonte: elaborado pelo autor. 96 Figura 2.57 - Diagrama MVC compor procuração “ad juditia”. Fonte: elaborado pelo autor. 97 Figura 2.58 - Diagrama MVC cadastrar contrato. Fonte: elaborado pelo autor. 98 Figura 2.59 - Diagrama MVC relacionar advogados e contratos. Fonte: elaborado pelo autor. Figura 2.60 - Diagrama MVC gerar relatório de consultas por advogado. Fonte: elaborado pelo autor. 99 Figura 2.61 - Diagrama MVC buscar cliente. Fonte: elaborado pelo autor. 100 Figura 2.62 - Diagrama MVC buscar secretária. Fonte: elaborado pelo autor. Figura 2.63 - Diagrama MVC buscar procuração “ad juditia”. Fonte: elaborado pelo autor. 101 Figura 2.64 - Diagrama MVC listar agendamentos. Fonte: elaborado pelo autor. 102 Figura 2.65 - Diagrama MVC relatório geral de agendamentos. Fonte: elaborado pelo autor. Figura 2.66 - Diagrama MVC relatório de andamentos por processo. Fonte: elaborado pelo autor. 103 Figura 2.67 - Diagrama MVC relatório de processos por cliente. Fonte: elaborado pelo autor. 104 Figura 2.68 - Diagrama MVC buscar contrato. Fonte: elaborado pelo autor. 2.4.5 Diagrama de Sequência Figura 2.69 - Diagrama de sequência cadastrar advogado. Fonte: elaborado pelo autor. 105 Figura 2.70 - Diagrama de sequência cadastrar secretária. Fonte: elaborado pelo autor. Figura 2.71 - Diagrama de sequência cadastrar cliente. Fonte: elaborado pelo autor. 106 Figura 2.72 - Diagrama de sequência cadastrar processo. Fonte: elaborado pelo autor. Figura 2.73 - Diagrama de sequência clientes, processos e advogados. Fonte: elaborado pelo autor. 107 Figura 2.74 - Diagrama de sequência cadastrar procuração. Fonte: elaborado pelo autor. Figura 2.75 - Diagrama de sequência cadastrar andamento. Fonte: elaborado pelo autor. 108 Figura 2.76 - Diagrama de sequência agendar consultas. Fonte: elaborado pelo autor. Figura 2.77 - Diagrama de sequência compor procuração “ad juditia”. Fonte: elaborado pelo autor. 109 Figura 2.78 - Diagrama de sequência cadastrar contrato. Fonte: elaborado pelo autor. Figura 2.79 - Diagrama de sequência relacionar contratos e advogados. Fonte: elaborado pelo autor. 110 Figura 2.80 - Diagrama de sequência relatório de consultas por advogado. Fonte: elaborado pelo autor. Figura 2.81 - Diagrama de sequência buscar cliente. Fonte: elaborado pelo autor. 111 Figura 2.82 - Diagrama de sequência buscar secretária. Fonte: elaborado pelo autor. Figura 2.83 - Diagrama de sequência buscar procuração “ad juditia”. Fonte: elaborado pelo autor. 112 Figura 2.84 - Diagrama de sequência listar agendamentos. Fonte: elaborado pelo autor. Figura 2.85 - Diagrama de sequência relatório geral de agendamentos. Fonte: elaborado pelo autor. 113 Figura 2.86 - Diagrama de sequência relatório de andamentos por processo. Fonte: elaborado pelo autor. Figura 2.87 - Diagrama de sequência relatório de processos por cliente. Fonte: elaborado pelo autor. 114 Figura 2.88 - Diagrama de sequência buscar contrato. Fonte: elaborado pelo autor. 115 3 IMPLEMENTAÇÃO E TESTES 3.1 ORACLE 10G Após a conclusão da análise e projeto do sistema, o banco de dados foi implementado no Sistema Gerenciador de Banco de Dados ORACLE 10g, juntamente com sequences e triggers. Figura 3.1 - Estrutura da tabela de processos. Fonte: elaborado pelo autor. 3.2 IMPLEMENTAÇÃO JAVAME O passo seguinte foi a utilização do IDE NetBeans para implementar a aplicação em Java. Dividiu-se a aplicação em três projetos: o servidor que atua junto com a aplicação móvel, a aplicação para dispositivo móvel e o sistema web responsável pelo gerenciamento das informações, juntamente com os relatórios. Nessa etapa, primeiramente optou-se pelo desenvolvimento do servidor que fica em execução para receber os parâmetros do dispositivo móvel, faz a consulta no banco de dados e retorna o resultado para o dispositivo móvel. O servidor foi 116 desenvolvido com a base na tecnologia Servlet, já explicada anteriormente. Insta salientar que a comunicação da aplicação com o servidor é feita através do protocolo HTTP. Abaixo segue trecho do código implementado nessa classe capaz de receber os parâmetros, efetuar a consulta e retornar os resultados. Figura 3.2 - Servlet responsável por receber os parâmetros do aplicativo móvel, realizar a consulta no banco de dados e retornar os resultados. Fonte: elaborado pelo autor. Com o banco de dados e a classe Java responsável por integrá-lo à aplicação móvel, fez-se necessário produzir uma pequena aplicação com JAVA ME que funcione em um celular com acesso à Internet para enviar ao servidor acima citado o código do advogado, o dia, o mês e o ano. Por sua vez, a classe de acesso ao banco de dados monta a consulta com os parâmetros recebidos e retorna o resultado diretamente na tela do dispositivo móvel. A interface gráfica é bastante simples, basta preencher os campos de acordo com os dados solicitados, que são números inteiros e selecionar a opção “Listar compr...”, no canto inferior esquerdo na visão do usuário. 117 Note que a consulta somente funcionará se todos os campos estiverem preenchidos e que os compromissos serão listados em ordem crescente de horário. O processo pode ser repetido inúmeras vezes, mesmo com a listagem em tela. Basta selecionar a opção voltar, também no canto inferior esquerdo da tela de compromissos. Figura 3.3 - Consulta de compromissos e resultados obtidos. Fonte: elaborado pelo autor. Assim, finaliza-se a participação do dispositivo móvel no projeto. Insta salientar que embora as funcionalidades sejam simples, a ideia principal é integrar tecnologias. Nessa simples consulta, foram necessários, basicamente, os seguintes conhecimentos: conexão com banco de dados via JDBC, Servlets, passagem de parâmetros por referência, MIDlets visuais e protocolo HTTP, um 118 assunto de redes, porém, de extrema importância para a comunicação entre as aplicações via Internet. 3.3 APLICAÇÃO WEB Como já explanado em capítulos anteriores, o Java Server Faces implementa o padrão MVC. No entanto, admite-se uma personalização muito grande. Houve ajuste no idioma, no rótulo dos campos das tabelas e nas mensagens de erro, de modo a facilitar a operação pelos usuários. Faz-se isso através dos arquivos index.xhtml e Bundle.properties . Figura 3.4 - Página JSF antes da configuração do idioma. Fonte: elaborado pelo autor. Quanto ao arquivo index.xhtml, este teve seu código substituído por outro para tornar a interface gráfica mais amigável ao usuário, embora simples, pois o projeto não objetiva um trabalho artístico, uma vez que o enfoque reside no processamento dos dados inseridos pelo usuário. 119 Figura 3.5 - Visão básica da página principal. Fonte: elaborado pelo autor. A página principal tem a finalidade de direcionar os usuários para os recursos desejados, de acordo com o menu, no canto esquerdo. Por exemplo, com um clique em advogado exibir-se-á a tela que os gerencia com suas opções principais: inserir, alterar e excluir. A listagem é feita automaticamente sempre que a página for acessada. É a partir dessa página que é feito o acesso ao sistema de relatórios. Também é importante destacar que a aplicação para dispositivo móvel não acessa a página da figura logo acima, pois possui uma interface própria na aplicação para reduzir o fluxo de dados na rede. 120 Figura 3.6 - Página JSF responsável pelo controle de agendamentos. Fonte: elaborado pelo autor. Para cada funcionalidade que exige um cadastro, o sistema apresenta uma tela com a mesma estrutura do processo de agendamento, tudo organizado de modo intuitivo. O campo código do respectivo cadastro não aparece ao usuário, já que existe um tratamento realizado no banco de dados, através de sequences e triggers para essa função, ou seja, é gerado automaticamente. Caso algum campo de preenchimento obrigatório não estiver devidamente preenchido, o sistema exibirá uma mensagem dizendo o que está errado. 121 Figura 3.7 - Cadastro de compromissos. Fonte: elaborado pelo autor. Os relatórios principais do sistema, por exemplo, listagem de processos por clientes, consultas realizadas por cada advogado e, principalmente, a montagem da procuração “ad juditia” são compostos em PDF Portable Document Format (PDF) com o intuito de facilitar a apresentação e também o transporte e a impressão dos documentos, apesar de que sua elaboração é muito mais custosa para o desenvolvedor. Implementou-se tal funcionalidade através do plugin, ou seja, do complemento IReports no NetBeans. Figura 3.8 - Sintaxe SQL para obtenção dos dados do cliente e do advogado. Fonte: elaborado pelo autor. 122 As instruções em linguagem SQL de cada relatório foram programadas no próprio relatório. No entanto, para que ele funcione via web, necessitou-se de uma arquitetura com três classes: conexão com o banco de dados, configuração do relatório, e Servlet responsável por trabalhar com os parâmetros recebidos de uma página JSP e direcioná-los para o relatório específico. O grande truque dessa ferramenta consiste em uma configuração nas propriedades do projeto de modo a não permitir a compactação dos arquivos que contém os relatórios, que são da extensão .jrxml. Figura 3.9 - Configuração do empacotamento. Fonte: elaborado pelo autor. Com as consultas SQL realizadas pela conexão autônoma do plugin e os parâmetros configurados, a montagem do PDF não tem maiores segredos, restando a dedicação do programador à continuidade do desenvolvimento dos códigos necessários à exibição do documento. 123 Figura 3.10 - Montagem da procuração “Ad Juditia” no NetBeans. Fonte: elaborado pelo autor. Na página principal existe um menu destinado ao sistema de procurações. Basta selecioná-lo e escolher algum dos modelos apresentados e preencher os dados solicitados pelo formulário. No caso em tela, informando apenas o número do CPF do cliente e o número da OAB do advogado, o sistema consulta via web todos os demais dados necessários à confecção da procuração no banco de dados comum para gerar o documento. Por uma questão legal, deve-se informar a finalidade da procuração, nesse caso, de acordo com o Código de Processo Civil Brasileiro. Utilizaram-se dados fictícios nos exemplos afim de não expor a privacidade alheia, mas os formulários estão aptos para o trabalho real. 124 Figura 3.11 - Formulário da procuração cível (pagina JSP). Fonte: elaborado pelo autor. Figura 3.12 - Servlet responsável por enviar dados para composição da procuração. Fonte: elaborado pelo autor. 125 Figura 3.13 - Procuração “Ad Juditia” Cível composta de acordo com os parâmetros fornecidos pela página JSP. Fonte: elaborado pelo autor. 3.4 CONSIDERAÇÕES FINAIS Este capítulo enfatizou as funcionalidades de destaque do projeto, mas existem pesquisas simples em funcionamento, por exemplo, buscar uma secretária por nome, um processo por número dentre outras. Há relatórios implementados de consultas realizadas por advogados, processos por cliente, agendamentos totais e andamentos de processos. Todos eles compostos em formato PDF, com os mesmos recursos técnicos utilizados na procuração “ad juditia”. 126 Em se tratando de um protótipo de sistema, foram apresentadas as funcionalidades essenciais. Realizou-se uma demonstração prática das tecnologias, de modo que fique fácil a ampliação de mais recursos do projeto, de acordo com as necessidades específicas de cada pequeno escritório. 127 CONCLUSÃO A Tecnologia da Informação efetivamente está presente em todos os setores da atividade humana, inclusive entre aqueles existentes há milênios. Ela é capaz de resolver problemas complexos com apenas alguns cliques, portanto, deixa importante marca na História Mundial. Com as áreas envolvidas com a Justiça, não poderia ser diferente, entrementes e sistema jurídico brasileiro, mesmo com todo avanço tecnológico, ainda dá passos vagarosos na informatização. Por outro lado, algumas classes processuais, conforme já explanado na introdução, somente são aceitas por meio eletrônico, o que envolve várias tecnologias, das quais várias foram implementadas neste projeto. Outro aspecto relevante é o potencial informacional dos dispositivos móveis atuais, principalmente dos celulares, uma vez que parcela significativa de seus usuários não explora todas suas funcionalidades. Sua participação neste trabalho mostrou-se surpreendente, uma vez que deixou claro aos que acompanharam o desenvolvimento seu poder computacional e a proximidade do código com a programação web. Com relação às tecnologias utilizadas, insta salientar alguns aspectos relevantes. O banco de dados Oracle 10g foi bastante estável e interagiu muito bem com os demais recursos, totalmente compatível com as diversas formas pelas quais foi acessado: JSF, que utiliza configuração do Hibernate e JPA e método JDBC tradicional combinado com Servlets na pesquisa via celular e nas buscas feitas pelo sistema. A utilização da ferramenta JSF muito facilitou o desenvolvimento das operações básicas: inserir, consultar, alterar e excluir, também conhecidas no universo da informática por Create, Retrieve, Update and Delete (CRUD) e, principalmente, com a interface gráfica implementada automaticamente com a vantagem do programador poder traduzir as informações apresentadas ao usuário para o idioma necessário. Também ficou muito claro o paradigma MVC, que é a base de organização de tal tecnologia. Porém, para o desenvolvimento de consultas 128 mais elaboradas e outros recursos do desenvolvimento web, faz-se necessário um estudo aprofundado sobre JSF, já que utiliza procedimentos diferentes do modelo anterior, ou seja, Servlets. A composição de relatórios no formato PDF facilita a visualização por parte do usuário, porém exige de quem desenvolve um pouco mais de conhecimento em Java para sua elaboração e paciência para o trabalho com a estética do documento. Por derradeiro, o desenvolvimento da aplicação para dispositivos móveis, especialmente celulares, foi o grande destaque do trabalho por demonstrar a integração de diversas plataformas de desenvolvimento de software funcionamento harmônico entre si, de modo que demonstrou essa face importantíssima da Plataforma Java. Além disso, a questão da reutilização de código ficou evidenciada na listagem de agendamentos, feitas através do site e do software do celular, uma vez que o código foi praticamente o mesmo, ressalvando algumas peculiaridades da plataforma JAVA ME. Assim, demonstrou-se a portabilidade. Destarte, conclui-se que um escritório de advocacia, por mais simples que seja, ganha muita produtividade com a informatização, mesmo que básica, pois reduz muitos erros a otimiza o controle de uma maneira geral. Outro aspecto de destaque é a mobilidade proporcionada ao advogado, tanto pelo sistema web quanto por poder listar seus compromissos através de seu celular com acesso à Internet de qualquer forma. Além disso, a plataforma Java mostrou-se suficiente para solução do problema proposto, devido à sua portabilidade e consequente aproveitamento de código. Como trabalhos futuros, a gestão de segurança e o desenvolvimento uma interface gráfica amigável são ótimas opções. 129 REFERÊNCIAS BIBLIOGRÁFICAS BORGES, Rosfran Lins. J2ME na Prática, 2004. Disponível em: < http://www.ucb.br/java/JavaDays/J2ME_RosfranBorges.pdf > Acesso em: 08 mar. 2011 BREGAIDA E. JSF e outras tecnologias Java Web - IMES.java. Slides Share, 2011. Disponível em: <http://www.slideshare.net/eduardo.bregaida/jsf-e-outrastecnologias-java-web-imesjava > Acesso em: 10 mar. 2011. CARDELLA, H.; CREMASCO, J. A. Manual de ética profissional do advogado. 1 ed. São Paulo: Millennium, 2005. CARNIEL, J. D. TV Digital e JavaTV. Nonsense... it’s life!, 2007. Disponível em: <http://julianocarniel.blogspot.com/2007/12/tv-digital-e-javatv.html>. Acesso em: 3 mai. 2011. CASTRO, A. O. Sistema de gestão para salas de vacinação. 2011. Monografia (Curso Superior de Tecnologia em Banco de Dados) – Faculdade de Tecnologia de Lins, Centro Estadual de Ensino Tecnológico “Paula Souza”, Lins. FLOGGY: Framework de Persistência de Dados J2ME. Java Móvel. 2009. Disponível em: <http://www.javamovel.com/2009/06/floggy-framework-de-persis tencia-de_2660.html> Acesso em: 15 mar. 2011 FRANZINI, F. Aplicações Web com Java. iMasters, 09 jul. 2009. Disponível em: <http://imasters.com.br/artigo/13463/java/aplicacoes_web_com_java/> Acesso em: 29 mar. 2011 GONÇALVES, E. Dominando Java Server Faces e Facelets utilizando Spring 2.5, Hibernate e JPA. Rio de Janeiro: Editora ciência Moderna Ltda., 2008. GOUVEA, W. Entendo a persistência em Java I. Let The Computer Decide, Rio de Janeiro, 16 mar. 2010. Disponível em: <http://amsterdaintelligence.blogspot. com/2010/03/entendo-persistencia-em-java-i.html> Acesso em: 18 abr. 2011 INTRODUÇÃO à tecnologia Java EE 5. NetBeans. 2010. Disponível em: <http://netbeans.org/kb/docs/javaee/javaee-intro_pt_BR.html> Acesso em: 10 mar. 2011. 130 JSF e outras tecnologias – Java Web. Java Anywhere. 2008. Disponível em: <http://javawora.blogspot.com/2008/08/jsf-e-outras-tecnologias-java-web.html> Acesso em: 12 mar. 2011. KING G. et. Hibernate - Persistência Relacional para Java Idiomático. Hibernate. 2004. Disponível em: <http://docs.jboss.org/hibernate/core/3.5/reference /pt-BR/html_single/> Acesso em: 14 abr. 2011. KURNIAWAN, B. Java para a Web com Servlets, JSP e EJB: Um guia do programador para soluções escalonáveis em J2EE. Rio de Janeiro: Editora ciência Moderna Ltda., 2002. LEMOS, A. J.; SENGER, V. JSF 2.0: Uma Evolução nas Interfaces Web com Java. 2010. Disponível em: < http://www.slideshare.net/drspockbr/jsf-20-umaevoluo-nas-interfaces-web-com-java > Acesso em: 9 set. 2011 LOPES, C. JPA com Java Básico MySql. Camilo Lopes – LpJava. 29 mar. 2010. Diponível em: <http://blog.marcomendes.com/2007/04/10/o-modelo-unificadopara-os-frameworks-de-persistencia-em-java-jpa/> Acesso em: 11 mar. 2011. NUNES, E. Jornal do Advogado. São Paulo, Número 353, agosto 2010. O QUE é a tecnologia Java e por que é. Java. 2011. Disponível em: <http://www.java.com/pt_BR/download/faq/whatis_java.xml> Acesso em: 27 mar. 2011. OLIVEIRA, E. C. M. Tecnologia Java Web Start. Linha de Código. 2011. Disponível em: <http://www.linhadecodigo.com.br/artigo/627/Tecnologia-Java-WebStart.aspx> Acesso em: 27 mar. 2011. PALUDO, L. Um estudo sobre as tecnologias Java de desenvolvimento de aplicações móveis. 2003. Tese Especialização em Ciência da Computação – Faculdades de Informática, Universidade Federal de Santa Catarina, Florianópolis. PAMPLONA, V. F. Prevayler: Persistência totalmente OO. Java free, 16 ago. 2009. Disponível em: <http://javafree.uol.com.br/artigo/871482/> Acesso em: 15 abr. 2011 131 PAULO L. Experiência com desenvolvimento WEB + JAVA. Tecnologia Web, 14 set. 2008. Disponível em: <http://blog.lppjunior.com/experiencia-comdesenvolvimento-web-java/> Acesso em: 10 mar. 2011. PULCINELLI, M. Teoria sobre JDBC. Blog do Pulcinelli, 11, dez. 2010. Disponível em: <http://blog.marcio-pulcinelli.com/2010/12/11/teoria-sobre-jdbc> Acesso em 17/12/2011 SERVLET. Scribd. 2010. Disponível em: < http://pt.scribd.com/doc/7238159/ JAVA-Servlet>. Acesso em: 24 abr. 2011 SILVA, R. L. Tecnologia Wireless. WebEdu. 2010. Disponível em: < http://webeduc.mec.gov.br/linuxeducacional/manuais/Tecnologia%20Wireless.pdf> Acesso em: 2 abr. 2011 SOUZA, L. G. A. de. Sistema para academia de ginástica mundo livre. 2011. Monografia (Curso Superior de Tecnologia em Banco de Dados) – Faculdade de Tecnologia de Lins, Centro Estadual de Ensino Tecnológico “Paula Souza”, Lins. TECNOLOGIA Wireless. ItalBrasNET. 2009. Disponível em: < http://www.italbrasnet.com.br/tecnologia_de_produtos_wireless.html>. Acesso em: 14 mar. 2011. VIANA, R. Java ME – Uma breve introdução. Rafael Viana Weblog, 2009. Disponível em: <http://rvlaraujo.wordpress.com/2009/07/11/java-me-uma-breveintroducao/>. Acesso em: 30 abr. 2011 ________. Persistência em Java ME – uma pequena introdução. Rafael Viana Weblog, 4 dez. 2009. Disponível em: <http://rvlaraujo.wordpress. com/2009/12/04/persistencia-em-java-me-uma-pequena-explicacao/> Acesso em: 18 abr. 2011 WIRELESS. iWeb. 2009. Disponível em: < http://www.iweb.com.br/iweb/pdfs/ 20031008-wireless-01.pdf>. Acesso em: 27 mar. 2011 WIRELESS. World Lingo. 2010. Disponível em: < http://www.worldlingo.com/ ma/enwiki/pt/Wireless>. Acesso em: 2 abr. 2011