Projeto Final Curso de Java Básico Este projeto tem o objetivo de permitir seu contato com as funções mais comuns na maioria dos programas, que são exibição de dados e consulta à base de dados. O programa criado deverá dar a opção ao usuário de consultar uma base de dados retornado todas as pessoas de uma tabela ou as pessoas com nome igual a um parâmetro passado. O fluxo deverá ser repetido até que o usuário escolha a opção terminar. Devemos respeitar o padrão MVC (Model View Control) que define que o programa deve ser modularizado tendo um módulo que representa o acesso aos dados e a persistência deles (model), outro que representa a apresentação dos dados (view) e outro para controle de aplicação, onde ficariam as regras de negócio (control). Esses módulos devem ser o mais independente possível, permitindo uma troca de uma camada facilmente. Documentação O projeto deverá seguir o seguinte design em UML: Diagrama de caso de uso: • • Caso de uso Consulta todas as pessoas cadastradas Usuário seleciona a opção de retornar todas as pessoas cadastradas, sistema exibe a lista das pessoas cadastradas na base de dados. Caso de uso Consulta Pessoas baseado no nome Usuário seleciona a opção de retornar pessoas com nome parecidos a um string passado como parâmetro. Sistema deve exibir a lista de pessoas que têm nome parecido com o parâmetro. Diagrama de Classes: Teremos as seguintes classes e com seus pacotes: • br.curso.java.RunProgram – Que deverá somente conter o método main para executar o programa. • br.curso.java.control.Consultador – Esta é uma interface que você deverá codificar uma classe que a implemente. Ela deverá conter os métodos para consulta os quais são passíveis de ter a lógica do negócio. • br.curso.java.dao.Dao – Esta é uma classe abstrata que você deverá codificar uma classe que a extenda. Ela deverá conter os métodos para acesso ao banco de dados. • • br.curso.java.presentation.ViewLayer – Esta é uma interface que você deverá codificar uma classe para implementála. Ela deverá conter os métodos para interação do usuário e exibição dos dados. br.curso.java.vo.PessoaVO Classe que carrega os valores de uma pessoa. Os atributos dela devem ser “id”, “nome” e “sobrenome”. TODOS NÃO DEVEM SER ACESSÍVEIS DE CLASSES EXTERNAS. Aqui seguem os diagramas de sequência do projeto. Um diagrama de sequência deve indicar como deve ser o fluxo do programa dado um caso de uso. Sequência Consultar todas as pessoas: Sequência Consultar Pessoa usando nome como filtro Entregas: Parte 1: Converta o modelo UML do projeto em classes (não é necessário criar as classes com prefixo “Sua” somente as interfaces e classes abstratas) . Parte 2: Implemente as classes do diagrama com prefixo “Sua”. Exceto a classe da camada de apresentação SuaClasseDeApresentacaoSwing. Implemente a classe de apresentação que usa a linha de comando usando os métodos System.in.read e System.out.println(). Parte3: Explique quais seriam os impactos de criar uma classe na camada de apresentação que utilize Swing (usado para desenhar interface gráfica em java). Também explique qual seria o impacto que tivessemos que mudar a forma de acesso ao banco de dados. Explique como o MVC ajudou ou não na modularização do projeto. Parte4: (OPCIONAL) Implemente uma interface gráfica usando swing para permitir a interação do usuário. Instruções: Descompacte o arquivo bancodedados.zip em um diretório qualquer. Ele criará a seguinte estrutura de diretórios: /database /runServer.bat /curso.log /curso.script /curso.properties /server.properties /lib /hsqldb.jar Os arquivos dentro de database são os arquivos da base de dados que será acessada e um .bat para iniciar o servidor de banco de dados no seu computador. O arquivo dentro de lib é o jar que contém o código do nosso banco de dados (HSQL). Você deverá incluí-lo no classpath de sua aplicação para poder conectar ao banco. Banco de dados O banco de dados possui a seguinte tabela: Pessoa Campo Tipo Id Integer Nome Varchar Sobrenome Varchar Ela já está populada com dados somente consultas são necessárias. dicas: 1. Acesso a banco de dados: O banco de dados utilizado será o HSQL (www.hsql.org). HSQL é um banco de dados em java stand alone apropriado para desenvolvimento. Ele pode ser criado em memória ou em arquivo. No nosso projeto criamos um banco de dados em arquivo. Para executar o servidor do banco de dados é somente preciso executar o arquivo runServer.bat (/database/runServer.bat). Ao executá-lo teremos o servidor de banco de dados rodando. Para obter uma conexão ao banco de dados use o seguinte código: String driver = “org.hsqldb.jdbcDriver”; Class.forName(driver).newInstance(); String url = "jdbc:protocol[:subprotocol]:dburl/dbname"; Connection conn = DriverManager.getConnection(url, USERID,PWD); onde o protocol será “hsqldb” e o subprotocol será “hsql” e o dburl será a sua máquina local então será “localhost” e dbname é “cursoJava”. Userid = “sa” senha = “” ou seja vazio então a url será "jdbc:hsqldb:hsql://localhost/cursoJava" • Criação de um statement para consulta ao banco: Statement st = conn.createStatement(); ResultSet rs = st.executeQuery( SQL ); while(rs.next()){ int a = rs.getInt(“NomeDaColuna”); String str = rs.getString(“NomeDaColuna”); } onde SQL é o sql a ser executado no banco, e NomeDaColuna é o nome da coluna do registro retornado. • • Você precisará que o jar anexo (mysql-connector-java-3.0.17-ga-bin.jar) no seu classpath. Para liberar a conexão com o banco de dados utilize o método close() da connection: conn.close(); • Para adicionar um jar ao classpath é similar a adicionar um diretório: por exemplo: para diretórios: java -classpath c:/dir1/;c:/dir2/ Runner para jar's: java -classpath pacote.jar;ibm.jar Runner para jar's e diretórios: java -classpath ibm.jar;c:/classe/;c:/lib/meu.jar Runner • SQL para retornar todas as pessoas da tabela: select * from pessoa • SQL para retornar pessoas cujo nome inicia com a letra 'a': select * from pessoa where nome like 'a%'