Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
Secrets.java

# Created by https://www.gitignore.io/api/intellij
# Edit at https://www.gitignore.io/?templates=intellij
Expand Down
1 change: 1 addition & 0 deletions .idea/compiler.xml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

19 changes: 19 additions & 0 deletions .idea/dataSources.xml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

6 changes: 6 additions & 0 deletions .idea/vcs.xml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

10 changes: 10 additions & 0 deletions pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -14,5 +14,15 @@
<artifactId>junit</artifactId>
<version>4.10</version>
</dependency>
<dependency>
<groupId>com.h2database</groupId>
<artifactId>h2</artifactId>
<version>1.4.197</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.18</version>
</dependency>
</dependencies>
</project>
12 changes: 12 additions & 0 deletions src/main/java/MainApp.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
import daos.UserDao;
import models.User;

public class MainApp {
public static void main(String... args) {
UserDao userDao = new UserDao();
// User user = userDao.findById(3);
// userDao.delete(13);
// userDao.delete(14);
// System.out.println(user.toString());
}
}
27 changes: 27 additions & 0 deletions src/main/java/daos/ConnectionFactory.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
package daos;

import com.mysql.cj.jdbc.Driver;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;

public class ConnectionFactory {
private static final String URL = Secrets.getURL();
private static final String USER = Secrets.getUSER();
private static final String PASS = Secrets.getPASS();


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);
}
}
// public static void main(String[] args) {
// Connection connection = ConnectionFactory.getConnection();
// }
}

12 changes: 12 additions & 0 deletions src/main/java/daos/DAO.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
package daos;


import java.util.Set;

public interface DAO<E> {
E findById(Integer id);
Set<E> findAll();
Boolean insert(E obj);
Boolean update(Integer id, E obj);
Boolean delete(Integer id);
}
5 changes: 5 additions & 0 deletions src/main/java/daos/DTO.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
package daos;

public interface DTO<T> {
Integer getId(T obj);
}
109 changes: 109 additions & 0 deletions src/main/java/daos/UserDao.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,109 @@
package daos;

import models.User;

import java.sql.*;
import java.util.HashSet;
import java.util.Set;

public class UserDao implements DAO<User> {

public User findById(Integer id) {
Connection connection = ConnectionFactory.getConnection();

try {
String query = "SELECT * FROM Users WHERE id = " + id + ";";
Statement statement = connection.createStatement();
ResultSet resultSet = statement.executeQuery(query);

if (resultSet.next()) return extractUserFromResultSet(resultSet);

} catch(SQLException e) {
e.printStackTrace();
}

return null;
}

public Set<User> findAll() {
Connection connection = ConnectionFactory.getConnection();
try {
Statement statement = connection.createStatement();
ResultSet resultSet = statement.executeQuery("SELECT * FROM Users;");
Set users = new HashSet();
while(resultSet.next())
{
User user = extractUserFromResultSet(resultSet);
users.add(user);
}
return users;
} catch (SQLException ex) {
ex.printStackTrace();
}
return null;
}

public Boolean insert(User user) {
Connection connection = ConnectionFactory.getConnection();
try {
PreparedStatement ps = connection.prepareStatement("INSERT INTO Users VALUES (NULL, ?, ?, ?, ?, ?);");
ps = prepareUserForImport(ps, user);

int i = ps.executeUpdate();
if(i == 1) return true;

} catch (SQLException ex) {
ex.printStackTrace();
}
return false;
}

public Boolean update(Integer id, User user) {
Connection connection = ConnectionFactory.getConnection();
try {
PreparedStatement ps = connection.prepareStatement("UPDATE Users SET first_name=?, last_name=?, fav_color=?, job=?, birthdate=? WHERE id=?;");
ps = prepareUserForImport(ps, user);
ps.setInt(6, id);

int i = ps.executeUpdate();
if(i == 1) return true;
} catch (SQLException ex) {
ex.printStackTrace();
}
return false;
}

public Boolean delete(Integer id) {
Connection connection = ConnectionFactory.getConnection();
try {
Statement statement = connection.createStatement();
int i = statement.executeUpdate("DELETE FROM Users WHERE id=" + id + ";");
if(i == 1) {
return true;
}
} catch (SQLException ex) {
ex.printStackTrace();
}
return false;
}

private User extractUserFromResultSet(ResultSet rs) throws SQLException {
User user = new User();
user.setId( rs.getInt("id") );
user.setFirstName( rs.getString("first_name") );
user.setLastName( rs.getString("last_name") );
user.setFavColor( rs.getString("fav_color") );
user.setJob( rs.getString("job") );
user.setBirthday( rs.getDate("birthdate") );
return user;
}

private PreparedStatement prepareUserForImport(PreparedStatement ps, User user) throws SQLException {
ps.setString(1, user.getFirstName());
ps.setString(2, user.getLastName());
ps.setString(3, user.getFavColor());
ps.setString(4, user.getJob());
ps.setDate(5, new java.sql.Date(user.getBirthday().getTime()));
return ps;
}
}
25 changes: 25 additions & 0 deletions src/main/java/daos/UserDto.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
package daos;

import models.User;

import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;

public class UserDto implements DTO<User> {
public Integer getId(User user) {
return user.getId();
}
public static Integer getLastIdOfLast() {
Connection connection = ConnectionFactory.getConnection();
try {
Statement statement = connection.createStatement();
ResultSet resultSet = statement.executeQuery("SELECT id FROM Users ORDER BY id DESC LIMIT 1;");
if (resultSet.next()) return resultSet.getInt("id");
} catch (SQLException ex) {
ex.printStackTrace();
}
return null;
}
}
85 changes: 85 additions & 0 deletions src/main/java/models/User.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,85 @@
package models;

import java.util.Date;

public class User {
private Integer id;
private String firstName;
private String lastName;
private String favColor;
private Date birthday;
private String job;

public User() {}

public User(String firstName, String lastName, String favColor, Date birthday, String job) {
this.firstName = firstName;
this.lastName = lastName;
this.favColor = favColor;
this.birthday = birthday;
this.job = job;
}

public User(Integer id, String firstName, String lastName, String favColor, Date birthday, String job) {
this.id = id;
this.firstName = firstName;
this.lastName = lastName;
this.favColor = favColor;
this.birthday = birthday;
this.job = job;
}

public Integer getId() {
return id;
}

public void setId(Integer id) {
this.id = id;
}

public String getFirstName() {
return firstName;
}

public void setFirstName(String firstName) {
this.firstName = firstName;
}

public String getLastName() {
return lastName;
}

public void setLastName(String lastName) {
this.lastName = lastName;
}

public String getFavColor() {
return favColor;
}

public void setFavColor(String favColor) {
this.favColor = favColor;
}

public Date getBirthday() {
return birthday;
}

public void setBirthday(Date birthday) {
this.birthday = birthday;
}

public String getJob() {
return job;
}

public void setJob(String job) {
this.job = job;
}

@Override
public String toString() {
return String.format("%s %s\t|\t%s\t|\t%s\t|\t%s",
this.getFirstName(), this.getLastName(), this.getFavColor(), this.getJob(), this.getBirthday());
}
}
17 changes: 17 additions & 0 deletions src/test/java/daos/TestConnectionFactory.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
package daos;

import org.junit.Test;

import static org.junit.Assert.fail;

public class TestConnectionFactory {
@Test
public void testGetConnection() {
try {
ConnectionFactory.getConnection();
} catch( RuntimeException rte) {
fail("Could not connect to MySQL database");
}

}
}
Loading