From: Ole B. Rosentreter Date: Fri, 27 Sep 2024 15:15:40 +0000 (+0200) Subject: Initial project version X-Git-Url: https://git.laktatnebel.de/?a=commitdiff_plain;p=dblib.git Initial project version --- 134102a79befc0988a22c9a1a11b084c61e6301b diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..9aac7d9 --- /dev/null +++ b/.gitignore @@ -0,0 +1,5 @@ +.classpath +.project +.settings +bin +target diff --git a/pom.xml b/pom.xml new file mode 100644 index 0000000..ef5fb05 --- /dev/null +++ b/pom.xml @@ -0,0 +1,55 @@ + + 4.0.0 + de.laktatnebel.libs + dblib + 2.1.1-SNAPSHOT + + DbLib + + + de.laktatnebel.maven + laktatnebellib + 2.1.7 + + + + 2.1.0 + 8.4-702.jdbc4 + 5.1.19 + + + + + + postgresql + postgresql + ${postgresql.version} + + + mysql + mysql-connector-java + ${mysql.version} + + + de.laktatnebel.libs + validatorlib + ${validatorlib.version} + + + + + + + de.laktatnebel.libs + validatorlib + + + postgresql + postgresql + + + mysql + mysql-connector-java + + + 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 index 0000000..9312620 --- /dev/null +++ b/src/main/java/de/laktatnebel/libs/dblib/DBManager.java @@ -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 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 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 index 0000000..2291a97 --- /dev/null +++ b/src/main/java/de/laktatnebel/libs/dblib/driver/DBDriver.java @@ -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 index 0000000..c9bb10e --- /dev/null +++ b/src/main/java/de/laktatnebel/libs/dblib/driver/DBDriverMySQL.java @@ -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 index 0000000..403b76a --- /dev/null +++ b/src/main/java/de/laktatnebel/libs/dblib/driver/DBDriverPostgreSQL.java @@ -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 index 0000000..42d7c37 --- /dev/null +++ b/src/main/java/de/laktatnebel/libs/dblib/exception/AbstractDBManagerException.java @@ -0,0 +1,18 @@ +package de.laktatnebel.libs.dblib.exception; + +public abstract class AbstractDBManagerException extends Exception { + + /** + * + */ + private static final long serialVersionUID = 5031846039056065812L; + + public AbstractDBManagerException(String message) { + super(message); + } + + public AbstractDBManagerException(String message, Exception e) { + super(message, e); + } + +} 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 index 0000000..55ad1c1 --- /dev/null +++ b/src/main/java/de/laktatnebel/libs/dblib/exception/DBManagerException.java @@ -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 index 0000000..26eeb2a --- /dev/null +++ b/src/main/java/de/laktatnebel/libs/dblib/exception/DBManagerTechnicalException.java @@ -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); + } +}