]> git.laktatnebel.de Git - dblib.git/commitdiff
Initial project version master
authorOle B. Rosentreter <ole@laktatnebel.de>
Fri, 27 Sep 2024 15:15:40 +0000 (17:15 +0200)
committerOle B. Rosentreter <ole@laktatnebel.de>
Fri, 27 Sep 2024 15:15:40 +0000 (17:15 +0200)
.gitignore [new file with mode: 0644]
pom.xml [new file with mode: 0644]
src/main/java/de/laktatnebel/libs/dblib/DBManager.java [new file with mode: 0644]
src/main/java/de/laktatnebel/libs/dblib/driver/DBDriver.java [new file with mode: 0644]
src/main/java/de/laktatnebel/libs/dblib/driver/DBDriverMySQL.java [new file with mode: 0644]
src/main/java/de/laktatnebel/libs/dblib/driver/DBDriverPostgreSQL.java [new file with mode: 0644]
src/main/java/de/laktatnebel/libs/dblib/exception/AbstractDBManagerException.java [new file with mode: 0644]
src/main/java/de/laktatnebel/libs/dblib/exception/DBManagerException.java [new file with mode: 0644]
src/main/java/de/laktatnebel/libs/dblib/exception/DBManagerTechnicalException.java [new file with mode: 0644]

diff --git a/.gitignore b/.gitignore
new file mode 100644 (file)
index 0000000..9aac7d9
--- /dev/null
@@ -0,0 +1,5 @@
+.classpath
+.project
+.settings
+bin
+target
diff --git a/pom.xml b/pom.xml
new file mode 100644 (file)
index 0000000..ef5fb05
--- /dev/null
+++ b/pom.xml
@@ -0,0 +1,55 @@
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+       <modelVersion>4.0.0</modelVersion>
+       <groupId>de.laktatnebel.libs</groupId>
+       <artifactId>dblib</artifactId>
+       <version>2.1.1-SNAPSHOT</version>
+
+       <name>DbLib</name>
+       
+       <parent>
+               <groupId>de.laktatnebel.maven</groupId>
+               <artifactId>laktatnebellib</artifactId>
+               <version>2.1.7</version>
+       </parent>
+
+       <properties>
+               <validatorlib.version>2.1.0</validatorlib.version>
+               <postgresql.version>8.4-702.jdbc4</postgresql.version>
+               <mysql.version>5.1.19</mysql.version>
+       </properties>
+
+       <dependencyManagement>
+               <dependencies>
+                       <dependency>
+                               <groupId>postgresql</groupId>
+                               <artifactId>postgresql</artifactId>
+                               <version>${postgresql.version}</version>
+                       </dependency>
+                       <dependency>
+                               <groupId>mysql</groupId>
+                               <artifactId>mysql-connector-java</artifactId>
+                               <version>${mysql.version}</version>
+                       </dependency>
+                       <dependency>
+                               <groupId>de.laktatnebel.libs</groupId>
+                               <artifactId>validatorlib</artifactId>
+                               <version>${validatorlib.version}</version>
+                       </dependency>
+               </dependencies>
+       </dependencyManagement>
+
+       <dependencies>
+               <dependency>
+                       <groupId>de.laktatnebel.libs</groupId>
+                       <artifactId>validatorlib</artifactId>
+               </dependency>
+               <dependency>
+                       <groupId>postgresql</groupId>
+                       <artifactId>postgresql</artifactId>
+               </dependency>
+               <dependency>
+                       <groupId>mysql</groupId>
+                       <artifactId>mysql-connector-java</artifactId>
+               </dependency>
+       </dependencies>
+</project>
diff --git a/src/main/java/de/laktatnebel/libs/dblib/DBManager.java b/src/main/java/de/laktatnebel/libs/dblib/DBManager.java
new file mode 100644 (file)
index 0000000..9312620
--- /dev/null
@@ -0,0 +1,191 @@
+package de.laktatnebel.libs.dblib;
+
+import java.sql.Connection;
+import java.sql.DriverManager;
+import java.sql.SQLException;
+
+import de.laktatnebel.libs.dblib.driver.DBDriver;
+import de.laktatnebel.libs.dblib.exception.DBManagerException;
+import de.laktatnebel.libs.dblib.exception.DBManagerTechnicalException;
+import de.laktatnebel.libs.validatorlib.SQLValidator;
+
+public class DBManager {
+
+       /**
+        * 
+        */
+       private Connection connection = null;
+
+       /**
+        * 
+        */
+       private String host = null;
+
+       /**
+        * 
+        */
+       private String user = null;
+
+       /**
+        * 
+        */
+       private String pass = null;
+
+       /**
+        * 
+        */
+       private DBDriver driver = null;
+
+       /**
+        * 
+        */
+       private String database = null;
+
+       public DBManager() {
+               super();
+       }
+
+       /**
+        * @param connection
+        * @param host
+        * @param user
+        * @param pass
+        * @param driver
+        * @param database
+        */
+       public DBManager(final String host, final String user, final String pass, final DBDriver driver, final String database) {
+               super();
+               this.host = host;
+               this.user = user;
+               this.pass = pass;
+               this.driver = driver;
+               this.database = database;
+       }
+
+       /**
+        * @throws DBManagerException
+        * @throws DBManagerTechnicalException
+        * 
+        */
+       public void connect() throws DBManagerException, DBManagerTechnicalException {
+               try {
+                       final String driverName = this.driver.getDriverName();
+                       Class.forName(driverName);
+
+                       final StringBuffer connetionUrl = new StringBuffer();
+                       connetionUrl.append(this.driver.getDriverUrl());
+                       connetionUrl.append(getHost());
+                       connetionUrl.append("/");
+                       connetionUrl.append(getDatabase());
+
+                       this.connection = DriverManager.getConnection(connetionUrl.toString(), this.user, this.pass);
+               } catch (final ClassNotFoundException cnfe) {
+                       throw new DBManagerTechnicalException(cnfe.getMessage(), cnfe);
+               } catch (final SQLException sqle) {
+                       throw new DBManagerException(sqle.getMessage(), sqle);
+               }
+       }
+
+       /**
+        * @throws DBManagerTechnicalException
+        * 
+        */
+       public void closeConnection() throws DBManagerTechnicalException {
+               try {
+                       this.connection.close();
+               } catch (final SQLException sqle) {
+                       throw new DBManagerTechnicalException(sqle.getMessage(), sqle);
+               }
+       }
+
+       /**
+        * @return string Host
+        */
+       private String getHost() {
+               return this.host;
+       }
+
+       /**
+        * @return String database name
+        */
+       private String getDatabase() {
+               return this.database;
+       }
+
+       /**
+        * @return boolean isConnected
+        */
+       public boolean isConnected() {
+               if (this.connection == null) {
+                       return false;
+               }
+               return true;
+       }
+
+       /**
+        * @param schema
+        *            Schema
+        * @param table
+        *            Tabelle
+        * @param where
+        *            Where-Clause
+        * @param orderBy
+        *            OrderBy-Clause
+        * @return List<String> Ergebnisse
+        * @throws DBManagerException
+        * @throws DBManagerTechnicalException
+        */
+       public static String selectWhereOrderBy(final String schema, final String table, final String where, final String orderBy) {
+               final StringBuilder sql = new StringBuilder("SELECT * FROM ");
+               sql.append(schema);
+               sql.append(".");
+               sql.append(table);
+               if (SQLValidator.isValidWhere(where)) {
+                       sql.append(" WHERE ");
+                       sql.append(where);
+               }
+               if (SQLValidator.isValidOrderBy(orderBy)) {
+                       sql.append(" ORDER BY ");
+                       sql.append(orderBy);
+               }
+
+               return sql.toString();
+       }
+
+       /**
+        * @param schema
+        *            Schema
+        * @param table
+        *            Tabelle
+        * @param where
+        *            Where-Clause
+        * @param orderBy
+        *            OrderBy-Clause
+        * @return List<String> Ergebnisse
+        * @throws DBManagerException
+        * @throws DBManagerTechnicalException
+        */
+       public static String selectColWhereOrderBy(final String schema, final String table, final String columns, final String where, final String orderBy) {
+               final StringBuilder sql = new StringBuilder("SELECT ");
+               sql.append(columns);
+               sql.append(" FROM ");
+               sql.append(schema);
+               sql.append(".");
+               sql.append(table);
+               if (SQLValidator.isValidWhere(where)) {
+                       sql.append(" WHERE ");
+                       sql.append(where);
+               }
+               if (SQLValidator.isValidOrderBy(orderBy)) {
+                       sql.append(" ORDER BY ");
+                       sql.append(orderBy);
+               }
+
+               return sql.toString();
+       }
+
+       public Connection getConnection() {
+               return this.connection;
+       }
+
+}
diff --git a/src/main/java/de/laktatnebel/libs/dblib/driver/DBDriver.java b/src/main/java/de/laktatnebel/libs/dblib/driver/DBDriver.java
new file mode 100644 (file)
index 0000000..2291a97
--- /dev/null
@@ -0,0 +1,13 @@
+package de.laktatnebel.libs.dblib.driver;
+
+public abstract class DBDriver {
+
+       public abstract String getDriverName();
+
+       public abstract String getDriverUrl();
+
+       public DBDriver() {
+               super();
+       }
+
+}
\ No newline at end of file
diff --git a/src/main/java/de/laktatnebel/libs/dblib/driver/DBDriverMySQL.java b/src/main/java/de/laktatnebel/libs/dblib/driver/DBDriverMySQL.java
new file mode 100644 (file)
index 0000000..c9bb10e
--- /dev/null
@@ -0,0 +1,21 @@
+package de.laktatnebel.libs.dblib.driver;
+
+public class DBDriverMySQL extends DBDriver {
+
+       private static final String DRIVER_NAME = "com.mysql.jdbc.Driver";
+       private static final String DRIVER_URL = "jdbc:mysql://";
+
+       public DBDriverMySQL() {
+               super();
+       }
+
+       @Override
+       public String getDriverName() {
+               return DRIVER_NAME;
+       }
+
+       @Override
+       public String getDriverUrl() {
+               return DRIVER_URL;
+       }
+}
diff --git a/src/main/java/de/laktatnebel/libs/dblib/driver/DBDriverPostgreSQL.java b/src/main/java/de/laktatnebel/libs/dblib/driver/DBDriverPostgreSQL.java
new file mode 100644 (file)
index 0000000..403b76a
--- /dev/null
@@ -0,0 +1,21 @@
+package de.laktatnebel.libs.dblib.driver;
+
+public class DBDriverPostgreSQL extends DBDriver {
+
+       private static final String DRIVER_NAME = "org.postgresql.Driver";
+       private static final String DRIVER_URL = "jdbc:postgresql://";
+
+       public DBDriverPostgreSQL() {
+               super();
+       }
+
+       @Override
+       public String getDriverName() {
+               return DRIVER_NAME;
+       }
+
+       @Override
+       public String getDriverUrl() {
+               return DRIVER_URL;
+       }
+}
diff --git a/src/main/java/de/laktatnebel/libs/dblib/exception/AbstractDBManagerException.java b/src/main/java/de/laktatnebel/libs/dblib/exception/AbstractDBManagerException.java
new file mode 100644 (file)
index 0000000..42d7c37
--- /dev/null
@@ -0,0 +1,18 @@
+package de.laktatnebel.libs.dblib.exception;\r
+\r
+public abstract class AbstractDBManagerException extends Exception {\r
+\r
+       /**\r
+        * \r
+        */\r
+       private static final long serialVersionUID = 5031846039056065812L;\r
+\r
+       public AbstractDBManagerException(String message) {\r
+               super(message);\r
+       }\r
+\r
+       public AbstractDBManagerException(String message, Exception e) {\r
+               super(message, e);\r
+       }\r
+\r
+}\r
diff --git a/src/main/java/de/laktatnebel/libs/dblib/exception/DBManagerException.java b/src/main/java/de/laktatnebel/libs/dblib/exception/DBManagerException.java
new file mode 100644 (file)
index 0000000..55ad1c1
--- /dev/null
@@ -0,0 +1,20 @@
+package de.laktatnebel.libs.dblib.exception;
+
+public class DBManagerException extends AbstractDBManagerException {
+
+       /**
+        * 
+        */
+       private static final long serialVersionUID = -5885145110145375067L;
+
+       /**
+        * @param message
+        */
+       public DBManagerException(final String message) {
+               super(message);
+       }
+
+       public DBManagerException(final String message, final Exception e) {
+               super(message, e);
+       }
+}
diff --git a/src/main/java/de/laktatnebel/libs/dblib/exception/DBManagerTechnicalException.java b/src/main/java/de/laktatnebel/libs/dblib/exception/DBManagerTechnicalException.java
new file mode 100644 (file)
index 0000000..26eeb2a
--- /dev/null
@@ -0,0 +1,21 @@
+package de.laktatnebel.libs.dblib.exception;
+
+public class DBManagerTechnicalException extends AbstractDBManagerException {
+
+
+       /**
+        * 
+        */
+       private static final long serialVersionUID = 7940585738672776843L;
+
+       /**
+        * @param message
+        */
+       public DBManagerTechnicalException(final String message) {
+               super(message);
+       }
+
+       public DBManagerTechnicalException(final String message, final Exception e) {
+               super(message, e);
+       }
+}