From b45296aa7c9e5be8e41a640b07b07341b5ac917c Mon Sep 17 00:00:00 2001
From: koz01 <koz01@PCFEIB113-026.msad.vsb.cz>
Date: Mon, 6 Mar 2023 14:20:13 +0100
Subject: [PATCH] Support for modules

---
 log4j.xml                                     | 15 ++++++++
 pom.xml                                       | 20 +++++++++--
 src/main/java/module-info.java                |  4 ++-
 .../java/table_view/DerbyJDBCDialect.java     | 34 -------------------
 src/main/java/table_view/JDBCDialect.java     | 11 ------
 src/main/java/table_view/PersonDAO.java       |  2 ++
 .../table_view/PostgresqlJDBCDialect.java     | 28 ---------------
 src/main/java/table_view/TableViewSample.java | 10 +++++-
 8 files changed, 46 insertions(+), 78 deletions(-)
 create mode 100644 log4j.xml
 delete mode 100644 src/main/java/table_view/DerbyJDBCDialect.java
 delete mode 100644 src/main/java/table_view/JDBCDialect.java
 delete mode 100644 src/main/java/table_view/PostgresqlJDBCDialect.java

diff --git a/log4j.xml b/log4j.xml
new file mode 100644
index 0000000..0d99188
--- /dev/null
+++ b/log4j.xml
@@ -0,0 +1,15 @@
+<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
diff --git a/pom.xml b/pom.xml
index 762ab42..3d55b21 100644
--- a/pom.xml
+++ b/pom.xml
@@ -75,8 +75,22 @@
 			<artifactId>derbytools</artifactId>
 			<version>10.15.2.0</version>
 		</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>
 </project>
diff --git a/src/main/java/module-info.java b/src/main/java/module-info.java
index 05abb4f..6a107db 100644
--- a/src/main/java/module-info.java
+++ b/src/main/java/module-info.java
@@ -1,7 +1,9 @@
 module lab01 {
     requires transitive javafx.controls;
     requires javafx.fxml;
-    requires java.sql;
+    requires koz01.java2.dialects_lib;
+    requires org.apache.logging.log4j;
+    
     opens table_view to javafx.fxml;
     exports table_view;
 }
\ No newline at end of file
diff --git a/src/main/java/table_view/DerbyJDBCDialect.java b/src/main/java/table_view/DerbyJDBCDialect.java
deleted file mode 100644
index 36cc4ef..0000000
--- a/src/main/java/table_view/DerbyJDBCDialect.java
+++ /dev/null
@@ -1,34 +0,0 @@
-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();
-	}
-
-}
diff --git a/src/main/java/table_view/JDBCDialect.java b/src/main/java/table_view/JDBCDialect.java
deleted file mode 100644
index dbc012d..0000000
--- a/src/main/java/table_view/JDBCDialect.java
+++ /dev/null
@@ -1,11 +0,0 @@
-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);
-}
diff --git a/src/main/java/table_view/PersonDAO.java b/src/main/java/table_view/PersonDAO.java
index faacdad..272c9ab 100644
--- a/src/main/java/table_view/PersonDAO.java
+++ b/src/main/java/table_view/PersonDAO.java
@@ -8,6 +8,8 @@ import java.sql.Statement;
 import java.util.Collection;
 import java.util.LinkedList;
 
+import koz01.java2.dialects_lib.JDBCDialect;
+
 class PersonDAO implements AutoCloseable{
 
 	private static final String INSERT_SQL = "INSERT INTO person(first_name, last_name, email) values (?,?,?)";
diff --git a/src/main/java/table_view/PostgresqlJDBCDialect.java b/src/main/java/table_view/PostgresqlJDBCDialect.java
deleted file mode 100644
index 49353d5..0000000
--- a/src/main/java/table_view/PostgresqlJDBCDialect.java
+++ /dev/null
@@ -1,28 +0,0 @@
-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();
-	}
-}
diff --git a/src/main/java/table_view/TableViewSample.java b/src/main/java/table_view/TableViewSample.java
index a461dbd..e701544 100644
--- a/src/main/java/table_view/TableViewSample.java
+++ b/src/main/java/table_view/TableViewSample.java
@@ -1,5 +1,8 @@
 package table_view;
 
+import org.apache.logging.log4j.LogManager;
+import org.apache.logging.log4j.Logger;
+
 import javafx.application.Application;
 import javafx.collections.FXCollections;
 import javafx.collections.ObservableList;
@@ -21,9 +24,12 @@ import javafx.scene.layout.VBox;
 import javafx.scene.text.Font;
 import javafx.stage.Stage;
 import javafx.stage.WindowEvent;
+import koz01.java2.dialects_lib.Dialects;
  
 public class TableViewSample extends Application {
  
+	private static final Logger log = LogManager.getLogger(TableViewSample.class);
+	
 	private final PersonDAO dao;
 	
 	private TableView<Person> table = new TableView<>();
@@ -36,17 +42,19 @@ public class TableViewSample extends Application {
 	private TextField addEmail;
  
     public static void main(String[] args) {
+    	log.info("main executed");
         launch(args);
     }
  
     public TableViewSample() {
-    	dao = new PersonDAO(new DerbyJDBCDialect());
+    	dao = new PersonDAO(Dialects.getDialect());
     	data = FXCollections.observableArrayList(dao.getAll());	
 	}
     
     @SuppressWarnings("unchecked")
 	@Override
     public void start(Stage stage) {
+    	log.debug("start");
         Scene scene = new Scene(new Group());
         stage.setTitle("Table View Sample");
         stage.setWidth(450);
-- 
GitLab