From f1c858bf5fdf9869bb0b9d373756f74702b161f5 Mon Sep 17 00:00:00 2001 From: Laura Date: Sun, 18 Jan 2026 15:02:41 +0100 Subject: [PATCH] inital commit --- .gitignore | 38 ++++++++ .gitlab-ci.yml | 80 +++++++++++++++ .idea/encodings.xml | 7 ++ .idea/inspectionProfiles/Project_Default.xml | 8 ++ .idea/misc.xml | 13 +++ .idea/vcs.xml | 6 ++ .idea/workspace.xml | 97 +++++++++++++++++++ README.md | 43 ++++++++ ci_settings.xml | 15 +++ pom.xml | 45 +++++++++ settings.xml | 15 +++ src/main/java/com/softwarerat/Main.java | 16 +++ .../com/softwarerat/SQL/AsyncSQLHandler.java | 36 +++++++ src/main/java/com/softwarerat/SQL/Homes.java | 70 +++++++++++++ .../java/com/softwarerat/SQL/PlayerHome.java | 17 ++++ 15 files changed, 506 insertions(+) create mode 100644 .gitignore create mode 100644 .gitlab-ci.yml create mode 100644 .idea/encodings.xml create mode 100644 .idea/inspectionProfiles/Project_Default.xml create mode 100644 .idea/misc.xml create mode 100644 .idea/vcs.xml create mode 100644 .idea/workspace.xml create mode 100644 README.md create mode 100644 ci_settings.xml create mode 100644 pom.xml create mode 100644 settings.xml create mode 100644 src/main/java/com/softwarerat/Main.java create mode 100644 src/main/java/com/softwarerat/SQL/AsyncSQLHandler.java create mode 100644 src/main/java/com/softwarerat/SQL/Homes.java create mode 100644 src/main/java/com/softwarerat/SQL/PlayerHome.java diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..5ff6309 --- /dev/null +++ b/.gitignore @@ -0,0 +1,38 @@ +target/ +!.mvn/wrapper/maven-wrapper.jar +!**/src/main/**/target/ +!**/src/test/**/target/ + +### IntelliJ IDEA ### +.idea/modules.xml +.idea/jarRepositories.xml +.idea/compiler.xml +.idea/libraries/ +*.iws +*.iml +*.ipr + +### Eclipse ### +.apt_generated +.classpath +.factorypath +.project +.settings +.springBeans +.sts4-cache + +### NetBeans ### +/nbproject/private/ +/nbbuild/ +/dist/ +/nbdist/ +/.nb-gradle/ +build/ +!**/src/main/**/build/ +!**/src/test/**/build/ + +### VS Code ### +.vscode/ + +### Mac OS ### +.DS_Store \ No newline at end of file diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml new file mode 100644 index 0000000..05a350b --- /dev/null +++ b/.gitlab-ci.yml @@ -0,0 +1,80 @@ + # To contribute improvements to CI/CD templates, please follow the Development guide at: +# https://docs.gitlab.com/ee/development/cicd/templates.html +# This specific template is located at: +# https://gitlab.com/gitlab-org/gitlab/-/blob/master/lib/gitlab/ci/templates/Maven.gitlab-ci.yml + +# Build JAVA applications using Apache Maven (http://maven.apache.org) +# For docker image tags see https://hub.docker.com/_/maven/ +# +# For general lifecycle information see https://maven.apache.org/guides/introduction/introduction-to-the-lifecycle.html + +# This template will build and test your projects +# * Caches downloaded dependencies and plugins between invocation. +# * Verify but don't deploy merge requests. +# * Deploy built artifacts from master branch only. + +variables: + # `showDateTime` will show the passed time in milliseconds. You need to specify `--batch-mode` to make this work. + MAVEN_OPTS: >- + -Dhttps.protocols=TLSv1.2 + -Dmaven.repo.local=$CI_PROJECT_DIR/.m2/repository + -Dorg.slf4j.simpleLogger.showDateTime=true + -Djava.awt.headless=true + + # As of Maven 3.3.0 instead of this you MAY define these options in `.mvn/maven.config` so the same config is used + # when running from the command line. + # As of Maven 3.6.1, the use of `--no-tranfer-progress` (or `-ntp`) suppresses download and upload messages. The use + # of the `Slf4jMavenTransferListener` is no longer necessary. + # `installAtEnd` and `deployAtEnd` are only effective with recent version of the corresponding plugins. + MAVEN_CLI_OPTS: >- + --batch-mode + --errors + --fail-at-end + --show-version + --no-transfer-progress + -DinstallAtEnd=true + -DdeployAtEnd=true + +# This template uses the latest Maven 3 release, e.g., 3.8.6, and OpenJDK 8 (LTS) +# for verifying and deploying images +# Maven 3.8.x REQUIRES HTTPS repositories. +# See https://maven.apache.org/docs/3.8.1/release-notes.html#how-to-fix-when-i-get-a-http-repository-blocked for more. +image: maven:3-openjdk-20 + +# Cache downloaded dependencies and plugins between builds. +# To keep cache across branches add 'key: "$CI_JOB_NAME"' +# Be aware that `mvn deploy` will install the built jar into this repository. If you notice your cache size +# increasing, consider adding `-Dmaven.install.skip=true` to `MAVEN_OPTS` or in `.mvn/maven.config` +cache: + paths: + - .m2/repository + +# For merge requests do not `deploy` but only run `verify`. +# See https://maven.apache.org/guides/introduction/introduction-to-the-lifecycle.html +.verify: + stage: test + script: + - 'mvn $MAVEN_CLI_OPTS verify' + except: + variables: + - $CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH + +# Verify merge requests using JDK8 +verify:jdk20: + extends: + - .verify + +# To deploy packages from CI, create a `ci_settings.xml` file +# For deploying packages to GitLab's Maven Repository: See https://docs.gitlab.com/ee/user/packages/maven_repository/index.html#create-maven-packages-with-gitlab-cicd for more details. +# Please note: The GitLab Maven Repository is currently only available in GitLab Premium / Ultimate. +# For `master` or `main` branch run `mvn deploy` automatically. +deploy:jdk20: + stage: deploy + script: + - if [ ! -f ci_settings.xml ]; then + echo "CI settings missing\! If deploying to GitLab Maven Repository, please see https://docs.gitlab.com/ee/user/packages/maven_repository/index.html#create-maven-packages-with-gitlab-cicd for instructions."; + fi + - 'mvn $MAVEN_CLI_OPTS deploy --settings ci_settings.xml' + only: + variables: + - $CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH diff --git a/.idea/encodings.xml b/.idea/encodings.xml new file mode 100644 index 0000000..aa00ffa --- /dev/null +++ b/.idea/encodings.xml @@ -0,0 +1,7 @@ + + + + + + + \ No newline at end of file diff --git a/.idea/inspectionProfiles/Project_Default.xml b/.idea/inspectionProfiles/Project_Default.xml new file mode 100644 index 0000000..d602b1c --- /dev/null +++ b/.idea/inspectionProfiles/Project_Default.xml @@ -0,0 +1,8 @@ + + + + \ No newline at end of file diff --git a/.idea/misc.xml b/.idea/misc.xml new file mode 100644 index 0000000..53d19a6 --- /dev/null +++ b/.idea/misc.xml @@ -0,0 +1,13 @@ + + + + + + + + + \ No newline at end of file diff --git a/.idea/vcs.xml b/.idea/vcs.xml new file mode 100644 index 0000000..94a25f7 --- /dev/null +++ b/.idea/vcs.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/.idea/workspace.xml b/.idea/workspace.xml new file mode 100644 index 0000000..c93d709 --- /dev/null +++ b/.idea/workspace.xml @@ -0,0 +1,97 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 1699031531702 + + + + + + + + + + + + + + \ No newline at end of file diff --git a/README.md b/README.md new file mode 100644 index 0000000..febf6ec --- /dev/null +++ b/README.md @@ -0,0 +1,43 @@ +# HomesAPI +### initialisierung des Basis API Codes + +```java + public void onEnable(){ + Bansystem bansystem = new Bansystem(); + bansystem.enableAPI("Benutzer","Passwort","Host","Datenbank"); + ban = bansystem.getBan(); + } + ``` + +## Verwendung des Home Systems: +### erstellen eines Homes +````java +Homes home; +public void addHome(PlayerHome p){ + //erstellt anhand der PlayerHome informationen ein Home + home.createNewHome(p); +} + +```` + +### alle Homes eines Spielers holen + +````java +Homes home; +public ArrayList getHomes{ + ArrayList homes = new ArrayList<>(); + //erstellt eine ArrayList mit den HomeNames + home.getPlayerHome.forEach(h -> {homes.add(h.getName)}); + return homes; +} +```` + +### ein Home eines Spielers anhand des Namens holen + +````java +Homes home; +public String getHomeWorld(String name){ + home.getHomeByName(name); + return home.getWorld; +} +```` diff --git a/ci_settings.xml b/ci_settings.xml new file mode 100644 index 0000000..82c1ab3 --- /dev/null +++ b/ci_settings.xml @@ -0,0 +1,15 @@ + + + + gitlab-maven + + + + Job-Token + ${CI_JOB_TOKEN} + + + + + + \ No newline at end of file diff --git a/pom.xml b/pom.xml new file mode 100644 index 0000000..d9fea75 --- /dev/null +++ b/pom.xml @@ -0,0 +1,45 @@ + + + 4.0.0 + + com.softwarerat + HomesAPI + 1.1-SNAPSHOT + + + gitlab-maven + https://gitlab.softwarerat.com/api/v4/projects/14/packages/maven + + + gitlab-maven + https://gitlab.softwarerat.com/api/v4/projects/14/packages/maven + + + + 18 + 18 + UTF-8 + + + + org.projectlombok + lombok + 1.18.28 + compile + + + + de.mint + AsyncMySQLPoolHandler + 1.0.5 + + + + + gitlab-zyonic + https://gitlab.zyonicsoftware.com/api/v4/projects/119/packages/maven + + + diff --git a/settings.xml b/settings.xml new file mode 100644 index 0000000..82c1ab3 --- /dev/null +++ b/settings.xml @@ -0,0 +1,15 @@ + + + + gitlab-maven + + + + Job-Token + ${CI_JOB_TOKEN} + + + + + + \ No newline at end of file diff --git a/src/main/java/com/softwarerat/Main.java b/src/main/java/com/softwarerat/Main.java new file mode 100644 index 0000000..ce2edc0 --- /dev/null +++ b/src/main/java/com/softwarerat/Main.java @@ -0,0 +1,16 @@ +package com.softwarerat; + +import com.softwarerat.SQL.AsyncSQLHandler; +import com.softwarerat.SQL.Homes; +import lombok.Getter; + +@Getter +public class Main { + AsyncSQLHandler asyncSQLHandler; + Homes homes; + public void enableAPI(String user, String pw, String Database, String host){ + asyncSQLHandler = new AsyncSQLHandler(host,user,pw,Database); + homes = new Homes(asyncSQLHandler); + } + +} \ No newline at end of file diff --git a/src/main/java/com/softwarerat/SQL/AsyncSQLHandler.java b/src/main/java/com/softwarerat/SQL/AsyncSQLHandler.java new file mode 100644 index 0000000..c69657b --- /dev/null +++ b/src/main/java/com/softwarerat/SQL/AsyncSQLHandler.java @@ -0,0 +1,36 @@ +package com.softwarerat.SQL; + +import java.sql.ResultSet; + +import de.mint.asyncmysqlpoolhandler.configservice.ConfigBuilder; +import de.mint.asyncmysqlpoolhandler.configservice.ConfigPoolFramework; +import de.mint.asyncmysqlpoolhandler.enumservice.EnumPoolFramework; +import de.mint.asyncmysqlpoolhandler.mainservice.AsyncMySQLPoolHandler; + +import java.sql.ResultSet; +import java.util.concurrent.ExecutionException; + +public class AsyncSQLHandler { + + private final AsyncMySQLPoolHandler MySQLPoolHandler; + private final ConfigPoolFramework configPoolFramework = ConfigBuilder.getConfigBuilder().build(); + + public AsyncSQLHandler(String hostname, String user, String pw, String DB) { + this.MySQLPoolHandler = new AsyncMySQLPoolHandler(hostname, user, pw, DB, EnumPoolFramework.HIKARICP, configPoolFramework); + this.openConnection(); + } + + private void openConnection() { + this.MySQLPoolHandler.openPool(); + } + + // Basic SQL Things + protected ResultSet executeQuery(String sql) throws ExecutionException, InterruptedException { + return this.MySQLPoolHandler.executeQueryAsync(sql).get(); + } + + protected void executeUpdate(String sql) throws ExecutionException, InterruptedException { + this.MySQLPoolHandler.executeUpdateAsync(sql).get(); + } + +} diff --git a/src/main/java/com/softwarerat/SQL/Homes.java b/src/main/java/com/softwarerat/SQL/Homes.java new file mode 100644 index 0000000..dd0ab4c --- /dev/null +++ b/src/main/java/com/softwarerat/SQL/Homes.java @@ -0,0 +1,70 @@ +package com.softwarerat.SQL; + +import java.sql.ResultSet; +import java.sql.SQLException; +import java.util.ArrayList; +import java.util.List; +import java.util.concurrent.ExecutionException; + +public class Homes { + AsyncSQLHandler sqlHandler; + + public Homes(AsyncSQLHandler sqlHandler) { + this.sqlHandler = sqlHandler; + } + + public PlayerHome getHomeByName(String name){ + + ResultSet resultSet = null; + try { + resultSet = sqlHandler.executeQuery("SELECT * FROM homes WHERE Name = '" + name + "';"); + } catch (ExecutionException | InterruptedException e) { + throw new RuntimeException(e); + } + if (resultSet != null) { + try { + resultSet.next(); + return new PlayerHome(resultSet.getString("Name"),resultSet.getString("UUID"),resultSet.getString("World"),resultSet.getInt("x"),resultSet.getInt("y"), resultSet.getInt("z")); + } catch (SQLException e) { + + throw new RuntimeException(e); + } + } + System.out.println("Loaded home"); + return null; + } + + public void createNewHome(PlayerHome playerHome){ + try { + sqlHandler.executeUpdate("INSERT INTO homes (Name, UUID, World, x, y, z) VALUES ('"+playerHome.getName()+"','"+playerHome.getUUID()+"','"+playerHome.getWorld()+"','"+playerHome.getX()+"','"+playerHome.getY()+"','"+playerHome.getZ()+"');"); + } catch (ExecutionException | InterruptedException e) { + throw new RuntimeException(e); + } + } + + //ToDo: DeleteHome method + public ArrayList getPlayerHomes(String UUID) { + ArrayList homes = new ArrayList<>(); + ResultSet resultSet = null; + try { + resultSet = sqlHandler.executeQuery("SELECT * FROM homes WHERE uuid = '" + UUID + "';"); + } catch (ExecutionException | InterruptedException e) { + throw new RuntimeException(e); + } + if (resultSet != null) { + try { + while (true){ + resultSet.next(); + homes.add(new PlayerHome(resultSet.getString("Name"),resultSet.getString("UUID"),resultSet.getString("World"),resultSet.getInt("x"),resultSet.getInt("y"), resultSet.getInt("z"))); + + } + + } catch (SQLException e) { + + throw new RuntimeException(e); + } + } + System.out.println("Loaded Homes from player "); + return null; + } +} diff --git a/src/main/java/com/softwarerat/SQL/PlayerHome.java b/src/main/java/com/softwarerat/SQL/PlayerHome.java new file mode 100644 index 0000000..6420bc5 --- /dev/null +++ b/src/main/java/com/softwarerat/SQL/PlayerHome.java @@ -0,0 +1,17 @@ +package com.softwarerat.SQL; + +import lombok.AllArgsConstructor; +import lombok.Getter; + +@AllArgsConstructor +@Getter + +public class PlayerHome { +String Name; +String UUID; +String World; + private double x; + private double y; + private double z; + +}