package br.ufpr.c3sl.daoconcrete; import java.sql.Connection; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; import java.util.Date; import javax.swing.JOptionPane; import br.ufpr.c3sl.dao.UserDAO; import br.ufpr.c3sl.daoFactory.MysqlDAOFactory; import br.ufpr.c3sl.exception.UserException; import br.ufpr.c3sl.model.User; public class MysqlUserDAO implements UserDAO{ private static final String INSERT = "INSERT INTO users (email, created_at) VALUES (?, ?)"; private static final String FIND_BY_EMAIL = "SELECT * FROM users WHERE email LIKE ?"; /** * insert * @param user * @return user The mistake inserted */ @Override public User insert(User user) throws UserException { Connection c = MysqlDAOFactory.createConnection(); if (user.getCreatedAt() == null) user.setCreatedAt(new Date().getTime()); PreparedStatement pstmt; try { pstmt = c.prepareStatement(INSERT); pstmt.setString(1, user.getEmail()); pstmt.setTimestamp(2, user.getCreateAtTime()); pstmt.executeUpdate(); ResultSet rset = pstmt.getGeneratedKeys(); rset.next(); Long idGenerated = rset.getLong(1); user.setId(idGenerated); pstmt.close(); c.close(); return user; } catch (SQLException e) { throw new UserException(e.getMessage()); } } @Override public User findByEmail(String email){ Connection c = MysqlDAOFactory.createConnection(); PreparedStatement pstmt = null; try { pstmt = c.prepareStatement(FIND_BY_EMAIL); pstmt.setString(1, email); ResultSet rset = pstmt.executeQuery(); if (rset.next()) return createUser(rset); return null; } catch (SQLException e) { e.printStackTrace(); return null; }finally{ try { pstmt.close(); c.close(); } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); } } } private User createUser(ResultSet rset) throws SQLException{ User user = new User(rset.getString("email")); user.setCreatedAt(rset.getTimestamp("created_at").getTime()); user.setId(rset.getLong("id")); return user; } @Override public User findOrCreateByEmail(String email) throws UserException { User user = findByEmail(email); if(user == null){ user = new User(email); user = insert(user); JOptionPane.showMessageDialog(null, "Novo cadastro no servidor realizado com sucesso"); } return user; } }