terça-feira, 24 de abril de 2012

24.04.2012 - 9a. semana

Trabalho do Sistema de Cadastros Gerais
Checkpoint

Scripts do BD:
create table usuarios (
 id int not null primary key,
 nome varchar(40) not null unique,
 senha varchar(40) not null,
 admin int not null 
);
insert into usuarios values (1, 'admin', '123', 1);

create table paises (
 id int not null primary key,
 codigo varchar(10) not null unique,
 nome varchar(40) not null unique
);

create table estados (
 id int not null primary key,
 codigo varchar(10) not null unique,
 nome varchar(40) not null unique,
 id_pais int not null references paises (id)
);

create table cidades (
 id int not null primary key,
 codigo varchar(10) not null unique,
 nome varchar(40) not null unique,
 capital varchar(1) not null,
 populacao int not null,
 id_estado int not null references estados (id)
);

quinta-feira, 19 de abril de 2012

19.04.2012 - UsuarioCtrl

package br.com.ipa.usuario;

import br.com.ipa.dao.*;
import java.util.*;

public class UsuarioCtrl {

    private static synchronized int getProximoID() throws Exception {        
        RecordSet rs = BD.executeQuery("SELECT MAX(id)+1 FROM usuarios");
        if (!rs.next()) {
            return 0;
        }
        return rs.getInt(1);
    }

    public static synchronized void incluir(Usuario u) throws Exception {
        u.setId(getProximoID());
        String sql = "INSERT INTO usuarios VALUES (" + 
                u.getId().toString() + ", " + 
                "'" + u.getNome() + "', " + 
                "'" + u.getSenha() + "', " + 
                (u.getAdmin()?"1":"0") + ")";
        BD.execute(sql);
    }

    public static synchronized void excluir(Usuario u) throws Exception {
        String sql = "DELETE FROM usuarios WHERE id = " + u.getId();
        BD.execute(sql);
    }

    public static synchronized void alterar(Usuario u) throws Exception {
        String sql = "UPDATE usuarios SET " + 
                "nome = '" + u.getNome() + "', " + 
                "senha = '" + u.getSenha() + "', " + 
                "admin = " + (u.getAdmin()?"1":"0") + " " +
                "WHERE id = " + u.getId().toString();
        BD.execute(sql);
    }

    public static synchronized Usuario carregar(Integer id) throws Exception {
        RecordSet rs = BD.executeQuery("SELECT * FROM usuarios WHERE id=" + id.toString());
        if (!rs.next()) {
            return null;
        }

        Usuario usuario = new Usuario();
        usuario.setId(rs.getInt("id"));
        usuario.setNome(rs.getString("nome"));
        usuario.setSenha(rs.getString("senha"));
        usuario.setAdmin(rs.getInt("admin") == 1);
        return usuario;
    }

    public static synchronized ArrayList<Usuario> listar() throws Exception {
        ArrayList usuarios = new ArrayList();
        RecordSet rs = BD.executeQuery("SELECT * FROM usuarios");
        while (rs.next()) {
            Usuario usuario = new Usuario();
            usuario.setId(rs.getInt("id"));
            usuario.setNome(rs.getString("nome"));
            usuario.setSenha(rs.getString("senha"));
            usuario.setAdmin(rs.getInt("admin") == 1);
            usuarios.add(usuario);
        }
        return usuarios;
    }
}

quarta-feira, 18 de abril de 2012

19.04.2012 - qui

Continuação do Módulo JDBC

  • Aplicação do padrão DAO sobre o projeto Sistema de Cadastros Gerais (Login)

terça-feira, 17 de abril de 2012

17.04.2012 - JDBC - DAO Struture

Classe BD

package br.com.ipa.dao;

import java.sql.*;

public class BD {

   private static final String url = 
           "jdbc:derby://localhost:1527/ipa;user=admin;password=123";

   private static Connection getConnection() throws Exception {
      return DriverManager.getConnection(url);
   }

   public synchronized static int execute(String sql) throws Exception {
      Connection conn = BD.getConnection();
      Statement stmt = conn.createStatement();
      try {
         return stmt.executeUpdate(sql);
      } finally {
         stmt.close();
         conn.close();
      }
   }

   public synchronized static RecordSet executeQuery(String sql) throws Exception {
      Connection conn = BD.getConnection();
      Statement stmt = conn.createStatement();
      try {
         return new RecordSet(stmt.executeQuery(sql));
      } finally {
         stmt.close();
         conn.close();
      }
   }

   public static void main(String[] args) throws Exception {
      System.out.println(BD.getConnection());
   }
}

Classe RecordSet

package br.com.ipa.dao;

import java.sql.*;
import com.sun.rowset.CachedRowSetImpl;

public class RecordSet extends CachedRowSetImpl {

   public RecordSet() throws SQLException {
      super();
   }

   public RecordSet(ResultSet rs) throws SQLException {
      super();
      try {
         populate(rs);
      } finally {
         rs.close();
      }
   }
}

domingo, 15 de abril de 2012

17.04.2012 - ter - 8a. semana

JDBC

quinta-feira, 12 de abril de 2012

12.04.2012 - qui

Trabalhos 4, 5 e 6
  • Dar continuidade ao projeto Sistema de Cadastros Gerais
  • 0,2 pontos para Países (view, actions, model e control)
  • 0,2 pontos para Estados (view, actions, model e control)
  • 0,2 pontos para Cidades (view, actions, model e control)
Requisitos:
  • Somente usuários logados podem incluir, alterar ou excluir os registros.
  • País: ID, Codigo e Nome.
    • Não permitir IDs ou Códigos duplicados.
    • Não permitir excluir um País se houver um Estado associado a ele.
  • Estado: ID, UF, Nome e País.
    • Não  permitir IDs ou UFs duplicadas.
    • Listar todos os Países em um <select>.
    • Não permitir excluir um Estado se houver uma Cidade associada a ele.
  • Cidade: ID, Código, Nome, Se é a Capital e População.
    • Não permitir IDs ou Códigos duplicados.
    • Listar todas as UFs em um <select>.
    • População é um atributo Integer e não pode ser menor que zero.
    • Não permitir 2 cidades marcadas como Capital.
XMLUtils.java
import java.io.*;
import java.beans.XMLEncoder;
import java.beans.XMLDecoder;

public class XMLUtil {

   private static String dir = "c:/";

   public static void setDiretorio(String d) { dir = d; }
   public static String getDiretorio() { return dir; }
   
   public static void salvar(Object objeto, String arq) throws Exception {
      XMLEncoder xml = null;
      try {
         File f = new File(getDiretorio() + arq);
         xml = new XMLEncoder(
                 new BufferedOutputStream(
                 new FileOutputStream(f)));
         xml.writeObject(objeto);
         xml.flush();
      } finally {
         if (xml != null) {
            xml.close();
         }
      }
   }
   
   public static Object buscar(String arq) throws Exception {
      Object objeto = null;
      XMLDecoder xml = null;
      try {
         File f = new File(getDiretorio() + arq);
         if (!f.exists()) {
            return null;
         }
         xml = new XMLDecoder(
                 new BufferedInputStream(
                 new FileInputStream(f)));
         objeto = xml.readObject();
      } finally {
         if (xml != null) {
            xml.close();
         }
      }
      return objeto;
   }

   public static void main(String args[]) throws Exception {
      String s = "IPA-OO-2008";
      XMLUtil.salvar(s, "Teste.xml");
      System.out.println(XMLUtil.buscar("Teste.xml").toString());
   }
}

segunda-feira, 9 de abril de 2012

10.04.2012 - ter - 7a. semana

Finalizar projeto "Cadastro de Usuários"

  • Realizar o CRUD completo
  • Prever tela de LOGIN
  • Prever tela de MENU
  • Prever segurança na SESSÃO (somente acessa telas se já fez login)
  • Persistir em XML
Mais um link interessante:


domingo, 1 de abril de 2012

03.04.2012 - ter - 6a. semana

JSP: introdução!
  • Tutorial completo:
  • Scriptlet
    • <%! %>
    • <%= %>
    • <%  %>
  •  Diretivas:
    • <%@ diretiva %>
  •  Ações
    • <jsp:   >
  •  Objetos implícitos:
    • out
    • request
    • response
    • pageContext
    • session
    • application
    • exception
Link interessante sobre a tag <form>: 
Bloco synchronized em métodos static: