diff --git a/.gitignore b/.gitignore index 6bc0bfa..8f9a6c5 100644 --- a/.gitignore +++ b/.gitignore @@ -82,3 +82,9 @@ fabric.properties .idea/sonarlint # End of https://www.gitignore.io/api/intellij + +/target/ +/target/* +/target/** + +*.DS_Store \ No newline at end of file diff --git a/.idea/compiler.xml b/.idea/compiler.xml index f006a55..7ad4cb7 100644 --- a/.idea/compiler.xml +++ b/.idea/compiler.xml @@ -7,6 +7,7 @@ + diff --git a/.idea/misc.xml b/.idea/misc.xml index 803a716..48b4b95 100644 --- a/.idea/misc.xml +++ b/.idea/misc.xml @@ -1,6 +1,9 @@ + + \ No newline at end of file diff --git a/src/main/java/daos/DAO.java b/src/main/java/daos/DAO.java new file mode 100644 index 0000000..6ac0d3b --- /dev/null +++ b/src/main/java/daos/DAO.java @@ -0,0 +1,172 @@ +package daos; + +import models.User; +import models.ConnectionFactory; + +import java.sql.*; +import java.util.ArrayList; +import java.util.List; + +public class DAO implements UserDAO { + + private List allUsers; + + public User findById(Integer id) { + + Connection connection = ConnectionFactory.getConnection(); + try { + Statement stmt = connection.createStatement(); + ResultSet rs = stmt.executeQuery("SELECT * FROM user WHERE id=" + id); + if(rs.next()) + { + return extractUserFromResultSet(rs); + } + } catch (SQLException ex) { + ex.printStackTrace(); + } + + return null; + } + + public List findAll() { + allUsers = new ArrayList(); + Connection connection = ConnectionFactory.getConnection(); + try { + Statement stmt = connection.createStatement(); + ResultSet rs = stmt.executeQuery("SELECT * FROM user"); + while(rs.next()) + { + allUsers.add(extractUserFromResultSet(rs)); + } + return allUsers; + + } catch (SQLException ex) { + ex.printStackTrace(); + } + + return null; + } + + public Boolean updateUser(User dto) { + Connection connection = ConnectionFactory.getConnection(); + try { + PreparedStatement ps = createStatement(StatementType.UPDATE,connection,dto); + int i = ps.executeUpdate(); + if(i == 1) { + return true; + } + } catch (SQLException ex) { + ex.printStackTrace(); + } finally { + try { + connection.close(); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return false; + } + + public Boolean createUser(User dto) { + Connection connection = ConnectionFactory.getConnection(); + try { + PreparedStatement ps = createStatement(StatementType.INSERT,connection,dto); + int i = ps.executeUpdate(); + if(i == 1) { + return true; + } + } catch (SQLException ex) { + ex.printStackTrace(); + } finally { + try { + connection.close(); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return false; + + } + + public Boolean deleteUser(Integer id) { + + Connection connection = ConnectionFactory.getConnection(); + try { + Statement stmt = connection.createStatement(); + int i = stmt.executeUpdate("DELETE FROM user WHERE id=" + id); + if(i == 1) { + return true; + } + } catch (SQLException ex) { + ex.printStackTrace(); + } finally { + try { + connection.close(); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return false; + } + + + private User extractUserFromResultSet(ResultSet rs) throws SQLException { + User user = new User(); + user.setId( rs.getInt("id") ); + user.setName( rs.getString("name") ); + user.setPass( rs.getString("password") ); + user.setEmail(rs.getString("email") ); + user.setPhoneNumber(rs.getString("phone_number")); + return user; + } + + private PreparedStatement createStatement (StatementType stmtype, Connection connection, User dto) throws SQLException { + PreparedStatement ps; + + if (stmtype.getStatementType().equals("Insert")){ + ps = connection.prepareStatement("INSERT INTO user VALUES (NULL, ?, ?, ?,?)"); + ps.setString(1, dto.getName()); + ps.setString(2, dto.getPass()); + ps.setString(3,dto.getEmail()); + ps.setString(4,dto.getPhoneNumber()); + + return ps; + } + + if (stmtype.getStatementType().equals("Update")){ + ps = connection.prepareStatement("UPDATE user SET name=?, password=?, email=?, phone_number=? WHERE id=?"); + ps.setString(1, dto.getName()); + ps.setString(2, dto.getPass()); + ps.setString(3,dto.getEmail()); + ps.setString(4,dto.getPhoneNumber()); + ps.setInt(5, dto.getId()); + + return ps; + } + return null; + } +} + +enum StatementType{ + INSERT (1,"Insert"), UPDATE (2,"Update"); + + private String statementType; + + + private Integer key; + + StatementType(Integer key, String stmtType) { + statementType = stmtType; + this.key = key; + } + + + public String getStatementType() { + return statementType; + } + + public Integer getKey() { + return key; + } + +} \ No newline at end of file diff --git a/src/main/java/daos/DELETEME.txt b/src/main/java/daos/DELETEME.txt deleted file mode 100644 index e69de29..0000000 diff --git a/src/main/java/daos/UserDAO.java b/src/main/java/daos/UserDAO.java new file mode 100644 index 0000000..0f8a1cd --- /dev/null +++ b/src/main/java/daos/UserDAO.java @@ -0,0 +1,13 @@ +package daos; + +import models.User; + +import java.util.List; + +public interface UserDAO { + User findById (Integer id); + List findAll(); + Boolean updateUser (User dto); + Boolean createUser (User dto); + Boolean deleteUser (Integer id); +} diff --git a/src/main/java/models/ConnectionFactory.java b/src/main/java/models/ConnectionFactory.java new file mode 100644 index 0000000..66ebecb --- /dev/null +++ b/src/main/java/models/ConnectionFactory.java @@ -0,0 +1,21 @@ +package models; + +import com.mysql.jdbc.Driver; +import java.sql.*; + +public class ConnectionFactory { + + public static final String URL = "jdbc:mysql://localhost:3306/myDB?autoReconnect=true&useSSL=false"; + public static final String USER = "root"; + public static final String PASS = "easy123"; + + + public static Connection getConnection() { + try { + DriverManager.registerDriver(new Driver()); + return DriverManager.getConnection(URL, USER, PASS); + } catch (SQLException ex) { + throw new RuntimeException("Error connecting to the database", ex); + } + } +} diff --git a/src/main/java/models/DELETEME.txt b/src/main/java/models/DELETEME.txt deleted file mode 100644 index e69de29..0000000 diff --git a/src/main/java/models/DTO.java b/src/main/java/models/DTO.java new file mode 100644 index 0000000..ff40e32 --- /dev/null +++ b/src/main/java/models/DTO.java @@ -0,0 +1,5 @@ +package models; + +public interface DTO { + Integer getId(); +} diff --git a/src/main/java/models/User.java b/src/main/java/models/User.java new file mode 100644 index 0000000..22dc60d --- /dev/null +++ b/src/main/java/models/User.java @@ -0,0 +1,62 @@ +package models; + +public class User implements DTO { + + private Integer id; + private String name; + private String pwd; + private String email; + private String phoneNumber; + +// ---- constructors --------------------- + public User() { + } + + public User(String name, String pass) { + this.name = name; + this.pwd = pass; + } + + public User(Integer id, String name, String pass, String email, String phoneNumber) { + this.id = id; + this.name = name; + this.pwd = pass; + this.email = email; + this.phoneNumber = phoneNumber; + } + +// --------- getters & setters ------------- + + public Integer getId() { + return id; + } + public void setId(Integer id) { + this.id = id; + } + public String getName() { + return name; + } + public void setName(String name) { + this.name = name; + } + public String getPass() { + return pwd; + } + public void setPass(String pass) { + this.pwd = pass; + } + + public String getEmail() { + return email; + } + public void setEmail(String email) { + this.email = email; + } + + public String getPhoneNumber() { + return phoneNumber; + } + public void setPhoneNumber(String phoneNumber) { + this.phoneNumber = phoneNumber; + } +} diff --git a/src/test/java/daos/DAOTest.java b/src/test/java/daos/DAOTest.java new file mode 100644 index 0000000..96c0c54 --- /dev/null +++ b/src/test/java/daos/DAOTest.java @@ -0,0 +1,66 @@ +package daos; + +import models.User; +import org.junit.Assert; +import org.junit.Before; +import org.junit.Test; + +import java.util.List; + +public class DAOTest { + + DAO testDao; + + + @Before + public void setUp() throws Exception { + testDao = new DAO(); + } + + + @Test + public void findById() { + User expected = testDao.findById(4); + Assert.assertEquals("Nedda",expected.getName()); + } + + @Test + public void findAll() { + List allUsers = testDao.findAll(); + Integer expected = 10; + Integer actual = allUsers.size(); + + Assert.assertEquals(expected,actual); + } + + @Test + public void updateUser() { + String expected = "newpassword"; + User testUpdate = new User(7,"Matilda",expected,null,null); + testDao.updateUser(testUpdate); + + User updated = testDao.findById(7); + String actual = updated.getPass(); + + Assert.assertEquals(expected,actual); + } + + @Test + public void createUser() { + User testUpdate = new User(19,"Mark",null,null,null); + testDao.createUser(testUpdate); + Integer expected = 11; + Integer actual = testDao.findAll().size(); + + Assert.assertEquals(expected,actual); + } + + @Test + public void deleteUser() { + testDao.deleteUser(7); + Integer expected = 10; + Integer actual = testDao.findAll().size(); + + Assert.assertEquals(expected,actual); + } +} \ No newline at end of file diff --git a/src/test/java/daos/DELETEME.txt b/src/test/java/daos/DELETEME.txt deleted file mode 100644 index e69de29..0000000 diff --git a/src/test/java/models/ConnectionFactoryTest.java b/src/test/java/models/ConnectionFactoryTest.java new file mode 100644 index 0000000..dc94bf6 --- /dev/null +++ b/src/test/java/models/ConnectionFactoryTest.java @@ -0,0 +1,29 @@ +package models; + +import org.junit.Assert; +import org.junit.Before; +import org.junit.Test; + +import java.sql.Connection; +import java.sql.SQLException; + +import static org.junit.Assert.*; + +public class ConnectionFactoryTest { + Connection connection; + + + @Test + public void getConnection() { + connection = ConnectionFactory.getConnection(); + Boolean actual = false; + + try { + actual = connection.isClosed(); + } catch (SQLException e) { + e.printStackTrace(); + } + + Assert.assertFalse(actual); + } +} \ No newline at end of file diff --git a/src/test/java/models/DELETEME.txt b/src/test/java/models/DELETEME.txt deleted file mode 100644 index e69de29..0000000 diff --git a/src/test/java/models/UserTest.java b/src/test/java/models/UserTest.java new file mode 100644 index 0000000..6aec834 --- /dev/null +++ b/src/test/java/models/UserTest.java @@ -0,0 +1,103 @@ +package models; + +import org.junit.Assert; +import org.junit.Before; +import org.junit.Test; + +import java.sql.Connection; + +import static org.junit.Assert.*; + +public class UserTest { + + User testUser; + + @Before + public void setUp() throws Exception { + testUser = new User(1,"Joe","testpass","joe@gmail.com","215-222-3333"); + } + + @Test + public void getId() { + Integer actual = 1; + Integer expected = testUser.getId(); + + Assert.assertEquals(expected,actual); + } + + @Test + public void setId() { + Integer actual = 6; + testUser.setId(actual); + Integer expected = testUser.getId(); + + Assert.assertEquals(expected,actual); + } + + @Test + public void getName() { + String expected = "Joe"; + String actual = testUser.getName(); + + Assert.assertEquals(expected,actual); + } + + @Test + public void setName() { + String actual = "Jane"; + testUser.setName(actual); + String expected = testUser.getName(); + + Assert.assertEquals(expected,actual); + } + + @Test + public void getPass() { + String expected = "testpass"; + String actual = testUser.getPass(); + + Assert.assertEquals(expected,actual); + } + + @Test + public void setPass() { + String expected = "secondpass"; + testUser.setPass(expected); + String actual = testUser.getPass(); + + } + + @Test + public void getEmail() { + String expected = "joe@gmail.com"; + String actual = testUser.getEmail(); + + Assert.assertEquals(expected,actual); + } + + @Test + public void setEmail() { + String expected = "jane@gmail.com"; + testUser.setEmail(expected); + String actual = testUser.getEmail(); + + Assert.assertEquals(expected,actual); + } + + @Test + public void getPhoneNumber() { + String expected = "215-222-3333"; + String actual = testUser.getPhoneNumber(); + + Assert.assertEquals(expected,actual); + } + + @Test + public void setPhoneNumber() { + String expected = "215-333-4444"; + testUser.setPhoneNumber(expected); + String actual = testUser.getPhoneNumber(); + + Assert.assertEquals(expected,actual); + } +} \ No newline at end of file