Skip to content
Open
Show file tree
Hide file tree
Changes from all 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>
88 changes: 88 additions & 0 deletions src/main/java/de/codeblocksmc/codelib/database/MSSQLTemplate.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,88 @@
package de.codeblocksmc.codelib.database;

import lombok.Getter;

/**
* 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 {

/**
* Additional JDBC connection flags appended to the connection URL.
*/
@Getter
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 = "";
}

/**
* 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);
}

/**
* 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";
}

/**
* 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();
}

}
88 changes: 88 additions & 0 deletions src/main/java/de/codeblocksmc/codelib/database/MySQLTemplate.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,88 @@
package de.codeblocksmc.codelib.database;

import lombok.Getter;

/**
* Abstract MySQL-specific implementation of {@link SQLTemplate}.
*
* @author JustCody
* @author CrAfTs_ArMy
* @version 2.0
*/
public abstract non-sealed class MySQLTemplate extends SQLTemplate {

/**
* Additional JDBC connection flags appended to the connection URL.
*/
@Getter
private final String additionalFlags;

/**
* Creates a new MySQLTemplate 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 MySQLTemplate(String host, int port, String database, String user, String password) {
super(host, port, database, user, password);
this.additionalFlags = "";
}

/**
* Creates a new MySQLTemplate 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 MySQLTemplate(String host, int port, String database, String user, String password, String... additionalFlags) {
super(host, port, database, user, password);
this.additionalFlags = String.join("&", additionalFlags);
}

/**
* Returns the fully qualified MySQL JDBC driver class name.
*
* @return The MySQL JDBC driver class
*/
@Override
protected String getDriverClass() {
return "com.mysql.cj.jdbc.Driver";
}

/**
* Builds the MySQL JDBC connection URL.
* <p>
* The URL follows the format:
* {@code jdbc:mysql://host:port/database}
* and optionally appends query parameters if additional flags are present.
* </p>
*
* @return The JDBC connection URL template
*/
@Override
protected String getConnectionUrl() {
String url = "jdbc:mysql://%host%:%port%/%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
Loading