Skip to content
Open
Show file tree
Hide file tree
Changes from 6 commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -74,3 +74,5 @@ This project is licensed under the [GNU GPL v3 License](https://www.gnu.org/lice
<a href="https://github.com/PhastixTV"><img src="https://github.com/PhastixTV.png" width="50" height="50" alt="@PhastixTV"/></a>
<a href="https://github.com/zCreeperYT"><img src="https://github.com/zCreeperYT.png" width="50" height="50" alt="@zCreeperYT"/></a>
<a href="https://github.com/ProJakob"><img src="https://github.com/ProJakob.png" width="50" height="50" alt="@ProJakob"/></a>
<a href="https://github.com/liyanic"><img src="https://github.com/liyanic.png" width="50" height="50" alt="@liyanic"/></a>
<a href="https://github.com/CrAfTsArMy"><img src="https://github.com/CrAfTsArMy.png" width="50" height="50" alt="@CrAfTsArMy"/></a>
177 changes: 94 additions & 83 deletions pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -2,19 +2,19 @@
<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>
<modelVersion>4.0.0</modelVersion>

<groupId>de.codeblocksmc.codelib</groupId>
<artifactId>CodeLib</artifactId>
<version>3.6.4</version>
<packaging>jar</packaging>
<groupId>de.codeblocksmc.codelib</groupId>
<artifactId>CodeLib</artifactId>
<version>3.6.4</version>
<packaging>jar</packaging>

<name>CodeLib</name>
<name>CodeLib</name>

<properties>
<java.version>21</java.version>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>
<properties>
<java.version>21</java.version>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>

<distributionManagement>
<repository>
Expand All @@ -23,79 +23,90 @@
</repository>
</distributionManagement>

<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.14.0</version>
<configuration>
<source>21</source>
<target>21</target>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-shade-plugin</artifactId>
<version>3.6.0</version>
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>shade</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
<resources>
<resource>
<directory>src/main/resources</directory>
<filtering>true</filtering>
</resource>
</resources>
</build>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.14.0</version>
<configuration>
<source>21</source>
<target>21</target>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-shade-plugin</artifactId>
<version>3.6.0</version>
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>shade</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
<resources>
<resource>
<directory>src/main/resources</directory>
<filtering>true</filtering>
</resource>
</resources>
</build>

<repositories>
<repository>
<id>papermc-repo</id>
<url>https://repo.papermc.io/repository/maven-public/</url>
</repository>
<repository>
<id>sonatype</id>
<url>https://oss.sonatype.org/content/groups/public/</url>
</repository>
</repositories>
<repositories>

<dependencies>
<dependency>
<groupId>io.papermc.paper</groupId>
<artifactId>paper-api</artifactId>
<version>1.21.6-R0.1-SNAPSHOT</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>io.github.leonardosnt</groupId>
<artifactId>bungeechannelapi</artifactId>
<version>1.0.0-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>fr.mrmicky</groupId>
<artifactId>fastboard</artifactId>
<version>2.1.5</version>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.42</version>
<scope>provided</scope>
</dependency>
<!-- HeadDatabase-API -->
<dependency>
<groupId>com.arcaniax</groupId>
<artifactId>HeadDatabase-API</artifactId>
<version>1.3.2</version>
<scope>provided</scope>
</dependency>
</dependencies>

<repository>
<id>codemc-repo</id>
<url>https://repo.codemc.org/repository/maven-public/</url>
</repository>

<repository>
<id>papermc-repo</id>
<url>https://repo.papermc.io/repository/maven-public/</url>
</repository>
<repository>
<id>sonatype</id>
<url>https://oss.sonatype.org/content/groups/public/</url>
</repository>


</repositories>



<dependencies>
<dependency>
<groupId>io.papermc.paper</groupId>
<artifactId>paper-api</artifactId>
<version>1.21.6-R0.1-SNAPSHOT</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>io.github.leonardosnt</groupId>
<artifactId>bungeechannelapi</artifactId>
<version>1.0.0-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>fr.mrmicky</groupId>
<artifactId>fastboard</artifactId>
<version>2.1.5</version>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.42</version>
<scope>provided</scope>
</dependency>
<!-- HeadDatabase-API -->
<dependency>
<groupId>com.arcaniax</groupId>
<artifactId>HeadDatabase-API</artifactId>
<version>1.3.2</version>
<scope>provided</scope>
</dependency>
</dependencies>
</project>

This file was deleted.

120 changes: 75 additions & 45 deletions src/main/java/de/codeblocksmc/codelib/databsae/MSSQLTemplate.java
Original file line number Diff line number Diff line change
Expand Up @@ -2,57 +2,87 @@

import lombok.Getter;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.util.logging.Logger;
/**
* Abstract Microsoft SQL Server specific implementation of {@link SQLTemplate}.
*
* @author JustCody
* @author CrAfTs_ArMy
* @version 2.0
*/
public abstract non-sealed class MSSQLTemplate extends SQLTemplate {

public class MSSQLTemplate extends DatabaseObject {
/**
* Additional JDBC connection flags appended to the connection URL.
*/
@Getter
public Connection conn;
private final Logger log;
private final String DB_NAME;
private final String DB_USER;
private final String DB_PASSWORD;
private final int DB_PORT;
private final String DB_HOST;

public MSSQLTemplate(Logger log, String DB_NAME, String DB_USER, String DB_PASSWORD, int DB_PORT, String DB_HOST) {
this.log = log;
this.DB_NAME = DB_NAME;
this.DB_USER = DB_USER;
this.DB_PASSWORD = DB_PASSWORD;
this.DB_PORT = DB_PORT;
this.DB_HOST = DB_HOST;
private final String additionalFlags;

/**
* Creates a new MSSQLTemplate without any additional connection flags.
*
* @param host The database host
* @param port The database port
* @param database The database name
* @param user The database user
* @param password The database password
*/
public MSSQLTemplate(String host, int port, String database, String user, String password) {
super(host, port, database, user, password);
this.additionalFlags = "";
}

public Connection connect() {
String CONNECTION_STRING = "jdbc:sqlserver://HOST;databaseName=DATABASE;encrypt=false;trustServerCertificate=true;"
.replace("HOST", DB_HOST).replace("DATABASE", DB_NAME);
try {
Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
conn = DriverManager.getConnection(CONNECTION_STRING, DB_USER, DB_PASSWORD);
log.info("MSSQL Connection established.");
conn.createStatement().execute("USE " + DB_NAME);
return conn;
}
catch(Exception ex) {
log.warning(ex.getMessage());
}
return null;
/**
* Creates a new MSSQLTemplate with additional JDBC connection flags.
* <p>
* Each flag should be provided in the format {@code key=value}.
* Multiple flags will be joined using {@code ;}.
* </p>
*
* @param host The database host
* @param port The database port
* @param database The database name
* @param user The database user
* @param password The database password
* @param additionalFlags Optional JDBC connection flags
*/
public MSSQLTemplate(String host, int port, String database, String user, String password, String... additionalFlags) {
super(host, port, database, user, password);
this.additionalFlags = String.join(";", additionalFlags);
}

public void checkConnection() {
try {
if (conn == null || conn.isClosed()) connect();
} catch (SQLException ignored) {}
/**
* Returns the fully qualified Microsoft SQL Server JDBC driver class name.
*
* @return The SQL Server JDBC driver class
*/
@Override
protected String getDriverClass() {
return "com.microsoft.sqlserver.jdbc.SQLServerDriver";
}
public void disconnect() {
try {
conn.close();
log.info("SQL Connection destroyed.");
} catch (SQLException e) {
log.severe(e.getMessage());
}

/**
* Builds the Microsoft SQL Server JDBC connection URL.
* <p>
* The URL follows the format:
* {@code jdbc:sqlserver://host:port;databaseName=database}
* and optionally appends additional connection properties.
* </p>
*
* @return The JDBC connection URL template
*/
@Override
protected String getConnectionUrl() {
String url = "jdbc:sqlserver://%host%:%port%;databaseName=%database%";
return url + (hasAdditionalFlags() ? ";" + additionalFlags : "");
}

/**
* Checks whether any additional JDBC connection flags are defined.
*
* @return {@code true} if additional flags are present, otherwise {@code false}
*/
public boolean hasAdditionalFlags() {
return additionalFlags != null && !additionalFlags.isBlank();
}

}
Loading