Skip to content
Snippets Groups Projects
Commit 943bc46b authored by Jan Kožusznik's avatar Jan Kožusznik
Browse files

Add support for derby DB

parent c3ecb72d
No related merge requests found
......@@ -43,19 +43,40 @@
<version>5.5.2</version>
<scope>test</scope>
</dependency>
<!-- https://mvnrepository.com/artifact/org.postgresql/postgresql -->
<dependency>
<groupId>org.postgresql</groupId>
<artifactId>postgresql</artifactId>
<version>42.2.18</version>
<groupId>org.postgresql</groupId>
<artifactId>postgresql</artifactId>
<version>42.2.18</version>
</dependency>
<!-- https://mvnrepository.com/artifact/com.oracle.database.jdbc/ojdbc10 -->
<dependency>
<groupId>com.oracle.database.jdbc</groupId>
<artifactId>ojdbc10</artifactId>
<version>19.8.0.0</version>
<groupId>com.oracle.database.jdbc</groupId>
<artifactId>ojdbc10</artifactId>
<version>19.8.0.0</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.apache.derby/derby -->
<dependency>
<groupId>org.apache.derby</groupId>
<artifactId>derby</artifactId>
<version>10.15.2.0</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.apache.derby/derbyclient -->
<dependency>
<groupId>org.apache.derby</groupId>
<artifactId>derbyclient</artifactId>
<version>10.15.2.0</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.apache.derby/derbytools -->
<dependency>
<groupId>org.apache.derby</groupId>
<artifactId>derbytools</artifactId>
<version>10.15.2.0</version>
</dependency>
</dependencies>
</project>
package table_view;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.util.Objects;
class DerbyJDBCDialect implements JDBCDialect{
@Override
public String getDriverClazzName() {
return "org.apache.derby.jdbc.EmbeddedDriver";
}
@Override
public Connection getConnection(String dbName) throws SQLException {
return DriverManager.getConnection("jdbc:derby:" + dbName + ";create=true");
}
@Override
public String getCreateTable() {
return "CREATE TABLE person(id int GENERATED ALWAYS AS IDENTITY, first_name varchar(64), last_name varchar(64), email varchar(64))";
}
@Override
public void handleExceptionForCreation(SQLException e) {
//table already exist
if(Objects.equals(e.getSQLState(), "X0Y32")) {
return;
}
e.printStackTrace();
}
}
package table_view;
import java.sql.Connection;
import java.sql.SQLException;
interface JDBCDialect {
String getDriverClazzName();
String getDriverID();
Connection getConnection(String dbName) throws SQLException;
String getCreateTable();
void handleExceptionForCreation(SQLException e);
}
package table_view;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
......@@ -31,12 +30,12 @@ class PersonDAO implements AutoCloseable{
throw new RuntimeException(e);
}
String url = dialect.getDriverID() + "://localhost/java1";
try {
conn = DriverManager.getConnection(url,"java1","java4ever");
conn = dialect.getConnection("java1");
constructTable();
} catch (SQLException e) {
e.printStackTrace();
dialect.handleExceptionForCreation(e);
}
}
......
package table_view;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
class PostgresqlJDBCDialect implements JDBCDialect{
@Override
......@@ -8,8 +12,8 @@ class PostgresqlJDBCDialect implements JDBCDialect{
}
@Override
public String getDriverID() {
return "jdbc:postgresql";
public Connection getConnection(String dbName) throws SQLException {
return DriverManager.getConnection("jdbc:postgresql://localhost/"+dbName,"java1","java4ever");
}
@Override
......@@ -17,4 +21,8 @@ class PostgresqlJDBCDialect implements JDBCDialect{
return "CREATE TABLE IF NOT EXISTS person(id SERIAL PRIMARY KEY, first_name varchar(64), last_name varchar(64), email varchar(64))";
}
@Override
public void handleExceptionForCreation(SQLException e) {
e.printStackTrace();
}
}
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment