private List<Log> listarLogsPorConsulta(String sql) throws DataException { List<Log> lista = new ArrayList<Log>(); try { Statement s = BDUtil.getConexao().createStatement(); ResultSet r = s.executeQuery(sql); while (r.next()) { Log l = new Log(); l.setIdLog(r.getInt("idLog")); l.setChaveUnica(r.getString("chaveUnica")); int tipoOp = r.getInt("tipoOperacao"); Log.TipoOperacao tipoOperacao = null; if (tipoOp == Log.TipoOperacao.CADASTRO.ordinal()) { tipoOperacao = Log.TipoOperacao.CADASTRO; } else if (tipoOp == Log.TipoOperacao.ALTERACAO.ordinal()) { tipoOperacao = Log.TipoOperacao.ALTERACAO; } else if (tipoOp == Log.TipoOperacao.DELECAO.ordinal()) { tipoOperacao = Log.TipoOperacao.DELECAO; } else if (tipoOp == Log.TipoOperacao.ADICAO_CANTOR_A_MUSICA.ordinal()) { tipoOperacao = Log.TipoOperacao.ADICAO_CANTOR_A_MUSICA; } else if (tipoOp == Log.TipoOperacao.ALTERACAO_ARQUIVO_MUSICA.ordinal()) { tipoOperacao = Log.TipoOperacao.ALTERACAO_ARQUIVO_MUSICA; } l.setTipoOperacao(tipoOperacao); l.setClasseObjeto(r.getString("classeObjeto")); l.setChaveUnicaObjeto(r.getString("chaveUnicaObjeto")); ByteArrayInputStream bais = new ByteArrayInputStream((byte[]) r.getObject("objeto")); ObjectInputStream ois; try { ois = new ObjectInputStream(bais); l.setObjeto(ois.readObject()); ois.close(); bais.close(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (ClassNotFoundException e) { // TODO Auto-generated catch block e.printStackTrace(); } l.setData(new Date(r.getTimestamp("data").getTime())); lista.add(l); } r.close(); s.close(); return lista; } catch (SQLException e) { e.printStackTrace(); throw new DataException("Não foi possível realizar a operação"); } }
public int cadastrarLog(Log log) throws DataException { try { String sql = "INSERT INTO log (chaveUnica, tipoOperacao, classeObjeto, objeto, data, chaveUnicaObjeto) VALUES (?, ?, ?, ?, ?, ?)"; PreparedStatement ps = BDUtil.getConexao().prepareStatement(sql, PreparedStatement.RETURN_GENERATED_KEYS); ByteArrayOutputStream bos = new ByteArrayOutputStream(); ObjectOutputStream oos; oos = new ObjectOutputStream(bos); oos.writeObject(log.getObjeto()); oos.flush(); oos.close(); bos.close(); byte[] objeto = bos.toByteArray(); ps.setString(1, log.getChaveUnica()); ps.setInt(2, log.getTipoOperacao().ordinal()); ps.setString(3, log.getClasseObjeto()); ps.setObject(4, objeto); ps.setTimestamp(5, new Timestamp(log.getData().getTime())); if (log.getChaveUnicaObjeto() == null) { ps.setNull(6, java.sql.Types.VARCHAR); } else { ps.setString(6, log.getChaveUnicaObjeto()); } System.out.println(ps); if (ps.executeUpdate() > 0) { ResultSet rs = ps.getGeneratedKeys(); rs.next(); int codigo = rs.getInt("GENERATED_KEY"); log.setIdLog(codigo); rs.close(); } else { System.out.println("Erro ao executar a inserção"); } ps.close(); return log.getIdLog(); } catch (SQLException e) { e.printStackTrace(); throw new DataException(); } catch (IOException e) { e.printStackTrace(); } return 0; }