Skip to content
Snippets Groups Projects
Commit b45296aa authored by koz01's avatar koz01
Browse files

Support for modules

parent 3750bc4c
No related merge requests found
Pipeline #974 failed with stages
in 0 seconds
<Configuration >
<Appenders>
<Console name="Out">
<PatternLayout pattern="%d{HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n"/>
</Console>
</Appenders>
<Loggers>
<logger name="table_view.TableViewSample" level="debug">
</logger>
<Root level="error">
<AppenderRef ref="Out"/>
</Root>
</Loggers>
</Configuration>
\ No newline at end of file
...@@ -75,8 +75,22 @@ ...@@ -75,8 +75,22 @@
<artifactId>derbytools</artifactId> <artifactId>derbytools</artifactId>
<version>10.15.2.0</version> <version>10.15.2.0</version>
</dependency> </dependency>
<dependency>
<groupId>koz01.java2</groupId>
<artifactId>dialects-lib</artifactId>
<version>0.0.1-SNAPSHOT</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.apache.logging.log4j/log4j-core -->
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-core</artifactId>
<version>2.20.0</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.apache.logging.log4j/log4j-core -->
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-api</artifactId>
<version>2.20.0</version>
</dependency>
</dependencies> </dependencies>
</project> </project>
module lab01 { module lab01 {
requires transitive javafx.controls; requires transitive javafx.controls;
requires javafx.fxml; requires javafx.fxml;
requires java.sql; requires koz01.java2.dialects_lib;
requires org.apache.logging.log4j;
opens table_view to javafx.fxml; opens table_view to javafx.fxml;
exports table_view; exports table_view;
} }
\ No newline at end of file
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();
Connection getConnection(String dbName) throws SQLException;
String getCreateTable();
void handleExceptionForCreation(SQLException e);
}
...@@ -8,6 +8,8 @@ import java.sql.Statement; ...@@ -8,6 +8,8 @@ import java.sql.Statement;
import java.util.Collection; import java.util.Collection;
import java.util.LinkedList; import java.util.LinkedList;
import koz01.java2.dialects_lib.JDBCDialect;
class PersonDAO implements AutoCloseable{ class PersonDAO implements AutoCloseable{
private static final String INSERT_SQL = "INSERT INTO person(first_name, last_name, email) values (?,?,?)"; private static final String INSERT_SQL = "INSERT INTO person(first_name, last_name, email) values (?,?,?)";
......
package table_view;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
class PostgresqlJDBCDialect implements JDBCDialect{
@Override
public String getDriverClazzName() {
return "org.postgresql.Driver";
}
@Override
public Connection getConnection(String dbName) throws SQLException {
return DriverManager.getConnection("jdbc:postgresql://localhost/"+dbName,"java1","java4ever");
}
@Override
public String getCreateTable() {
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();
}
}
package table_view; package table_view;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import javafx.application.Application; import javafx.application.Application;
import javafx.collections.FXCollections; import javafx.collections.FXCollections;
import javafx.collections.ObservableList; import javafx.collections.ObservableList;
...@@ -21,9 +24,12 @@ import javafx.scene.layout.VBox; ...@@ -21,9 +24,12 @@ import javafx.scene.layout.VBox;
import javafx.scene.text.Font; import javafx.scene.text.Font;
import javafx.stage.Stage; import javafx.stage.Stage;
import javafx.stage.WindowEvent; import javafx.stage.WindowEvent;
import koz01.java2.dialects_lib.Dialects;
public class TableViewSample extends Application { public class TableViewSample extends Application {
private static final Logger log = LogManager.getLogger(TableViewSample.class);
private final PersonDAO dao; private final PersonDAO dao;
private TableView<Person> table = new TableView<>(); private TableView<Person> table = new TableView<>();
...@@ -36,17 +42,19 @@ public class TableViewSample extends Application { ...@@ -36,17 +42,19 @@ public class TableViewSample extends Application {
private TextField addEmail; private TextField addEmail;
public static void main(String[] args) { public static void main(String[] args) {
log.info("main executed");
launch(args); launch(args);
} }
public TableViewSample() { public TableViewSample() {
dao = new PersonDAO(new DerbyJDBCDialect()); dao = new PersonDAO(Dialects.getDialect());
data = FXCollections.observableArrayList(dao.getAll()); data = FXCollections.observableArrayList(dao.getAll());
} }
@SuppressWarnings("unchecked") @SuppressWarnings("unchecked")
@Override @Override
public void start(Stage stage) { public void start(Stage stage) {
log.debug("start");
Scene scene = new Scene(new Group()); Scene scene = new Scene(new Group());
stage.setTitle("Table View Sample"); stage.setTitle("Table View Sample");
stage.setWidth(450); stage.setWidth(450);
......
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