diff --git a/pom.xml b/pom.xml index 9cc5baf..64e4e4a 100644 --- a/pom.xml +++ b/pom.xml @@ -68,5 +68,33 @@ 1.21.1-R0.1-SNAPSHOT provided + + + + org.hibernate + hibernate-core + 6.6.1.Final + + + + + mysql + mysql-connector-java + 8.0.33 + + + + + jakarta.persistence + jakarta.persistence-api + 3.0.0 + + + + + org.hibernate.common + hibernate-commons-annotations + 5.1.2.Final + diff --git a/src/main/java/xyz/soukup/mineconomiaCoreV2/MineconomiaCoreV2.java b/src/main/java/xyz/soukup/mineconomiaCoreV2/MineconomiaCoreV2.java index be4ffea..3b42113 100644 --- a/src/main/java/xyz/soukup/mineconomiaCoreV2/MineconomiaCoreV2.java +++ b/src/main/java/xyz/soukup/mineconomiaCoreV2/MineconomiaCoreV2.java @@ -2,17 +2,23 @@ package xyz.soukup.mineconomiaCoreV2; import org.bukkit.configuration.file.FileConfiguration; import org.bukkit.plugin.java.JavaPlugin; +import xyz.soukup.mineconomiaCoreV2.database.HibernateUtil; import xyz.soukup.mineconomiaCoreV2.tractor.giveTractorCommand; import java.util.Objects; +import static xyz.soukup.mineconomiaCoreV2.core.sharedValues.plugin; + public final class MineconomiaCoreV2 extends JavaPlugin { - MineconomiaCoreV2 plugin = getPlugin(this.getClass()); + private static MineconomiaCoreV2 instance; + + @Override public void onEnable() { // Plugin startup logic + instance = this; getLogger().info("STARTING MINECONOMIA CORE"); - plugin.saveConfig(); + plugin.saveDefaultConfig(); // Tractor registration Objects.requireNonNull(plugin.getCommand("tractor")).setExecutor(new giveTractorCommand()); @@ -25,6 +31,10 @@ public final class MineconomiaCoreV2 extends JavaPlugin { @Override public void onDisable() { // Plugin shutdown logic + HibernateUtil.shutdown(); } + public static MineconomiaCoreV2 getInstance() { + return instance; + } } diff --git a/src/main/java/xyz/soukup/mineconomiaCoreV2/core/database.java b/src/main/java/xyz/soukup/mineconomiaCoreV2/core/database.java deleted file mode 100644 index 7e572a1..0000000 --- a/src/main/java/xyz/soukup/mineconomiaCoreV2/core/database.java +++ /dev/null @@ -1,9 +0,0 @@ -package xyz.soukup.mineconomiaCoreV2.core; - -import static xyz.soukup.mineconomiaCoreV2.core.sharedValues.config; - -public class database { - private void createDefaultTables(){ - String database = config.getString(""); - } -} diff --git a/src/main/java/xyz/soukup/mineconomiaCoreV2/core/sharedValues.java b/src/main/java/xyz/soukup/mineconomiaCoreV2/core/sharedValues.java index 989729a..3178e29 100644 --- a/src/main/java/xyz/soukup/mineconomiaCoreV2/core/sharedValues.java +++ b/src/main/java/xyz/soukup/mineconomiaCoreV2/core/sharedValues.java @@ -1,12 +1,14 @@ package xyz.soukup.mineconomiaCoreV2.core; +import org.bukkit.Bukkit; import org.bukkit.configuration.file.FileConfiguration; +import org.bukkit.plugin.java.JavaPlugin; import xyz.soukup.mineconomiaCoreV2.MineconomiaCoreV2; import java.util.logging.Logger; public class sharedValues { - public static MineconomiaCoreV2 plugin = MineconomiaCoreV2.getPlugin(MineconomiaCoreV2.class); + public static MineconomiaCoreV2 plugin = MineconomiaCoreV2.getInstance(); public static FileConfiguration config = plugin.getConfig(); public static Logger logger = plugin.getLogger(); } diff --git a/src/main/java/xyz/soukup/mineconomiaCoreV2/database/HibernateUtil.java b/src/main/java/xyz/soukup/mineconomiaCoreV2/database/HibernateUtil.java new file mode 100644 index 0000000..ec56c4b --- /dev/null +++ b/src/main/java/xyz/soukup/mineconomiaCoreV2/database/HibernateUtil.java @@ -0,0 +1,132 @@ +package xyz.soukup.mineconomiaCoreV2.database; + +import jakarta.persistence.Query; +import jakarta.persistence.criteria.CriteriaBuilder; +import jakarta.persistence.criteria.CriteriaQuery; +import org.bukkit.scoreboard.Criteria; +import org.hibernate.Session; +import org.hibernate.SessionFactory; +import org.hibernate.Transaction; +import org.hibernate.boot.MetadataSources; +import org.hibernate.boot.model.internal.QueryBinder; +import org.hibernate.boot.registry.StandardServiceRegistry; +import org.hibernate.boot.registry.StandardServiceRegistryBuilder; +import xyz.soukup.mineconomiaCoreV2.core.sharedValues; +import xyz.soukup.mineconomiaCoreV2.variables.PlayerData; + +import java.util.List; +import java.util.Objects; +import java.util.Properties; + +import static xyz.soukup.mineconomiaCoreV2.core.sharedValues.config; +import static xyz.soukup.mineconomiaCoreV2.core.sharedValues.logger; + +public class HibernateUtil { + private static SessionFactory sessionFactory; + + static { + + try { + + StandardServiceRegistry registry = new StandardServiceRegistryBuilder() + .applySettings(getHibernateProperties()) + .build(); + + sessionFactory = new MetadataSources(registry) + .addAnnotatedClass(PlayerData.class) + .buildMetadata() + .buildSessionFactory(); + + } catch (Exception e) { + + sharedValues.logger.warning(e.toString()); + + if (sessionFactory != null) { + sessionFactory.close(); + } + + } + } + + + private static Properties getHibernateProperties() { + + String host = config.getString("database.host"); + String port = config.getString("database.port"); + String user = config.getString("database.user"); + String password = config.getString("database.password"); + String database = config.getString("database.database"); + + String jdbcString = "jdbc:mysql://" + host + ":" + port + "/" + database; + + Properties properties = new Properties(); + properties.put("hibernate.dialect", "org.hibernate.dialect.MySQLDialect"); + properties.put("hibernate.connection.driver_class", "com.mysql.cj.jdbc.Driver"); + properties.put("hibernate.connection.url", jdbcString); + properties.put("hibernate.connection.username", user); + properties.put("hibernate.connection.password", password); + properties.put("hibernate.hbm2ddl.auto", "update"); + properties.put("hibernate.show_sql", "true"); + return properties; + } + + + public static SessionFactory getSessionFactory() { + return sessionFactory; + } + + public static Session newSession(){ + return getSessionFactory().openSession(); + } + + public static void shutdown() { + if (sessionFactory != null) { + sessionFactory.close(); + } + } + + + public static void saveToDatabase(Object object){ + + Session session = HibernateUtil.newSession(); + Transaction transaction = null; + + try { + + transaction = session.beginTransaction(); + session.persist(object); + transaction.commit(); + session.close(); + + }catch (Exception e){ + + if (transaction != null) { + transaction.rollback(); // Rollback if something goes wrong + } + + logger.warning(e.toString()); + } + } + + /* NEFUNKČNÍ NECHAT ZATÍM + public static List executeQuery(Query query){ + Session session = HibernateUtil.newSession(); + Transaction transaction = null; + try { + + transaction = session.beginTransaction(); + List list = query.getResultList(); + session.close(); + return list; + + }catch (Exception e){ + + if (transaction != null) { + transaction.rollback(); // Rollback if something goes wrong + } + + logger.warning(e.toString()); + } + return null; + }*/ +} diff --git a/src/main/java/xyz/soukup/mineconomiaCoreV2/database/PlayerDataDatabase.java b/src/main/java/xyz/soukup/mineconomiaCoreV2/database/PlayerDataDatabase.java new file mode 100644 index 0000000..9ab500b --- /dev/null +++ b/src/main/java/xyz/soukup/mineconomiaCoreV2/database/PlayerDataDatabase.java @@ -0,0 +1,16 @@ +package xyz.soukup.mineconomiaCoreV2.database; + +import xyz.soukup.mineconomiaCoreV2.variables.PlayerData; + + +public class PlayerDataDatabase { + + public static void savePlayerDataToDatabase(PlayerData playerData){ + HibernateUtil.saveToDatabase(playerData); + } + + public static PlayerData getPlayerDataFromDatabase(String nickname){ + + } + +} diff --git a/src/main/java/xyz/soukup/mineconomiaCoreV2/database/PlayerInit.java b/src/main/java/xyz/soukup/mineconomiaCoreV2/database/PlayerInit.java new file mode 100644 index 0000000..3232d21 --- /dev/null +++ b/src/main/java/xyz/soukup/mineconomiaCoreV2/database/PlayerInit.java @@ -0,0 +1,5 @@ +package xyz.soukup.mineconomiaCoreV2.database; + +public class PlayerInit { + public static void onJoin(){} +} diff --git a/src/main/java/xyz/soukup/mineconomiaCoreV2/variables/PlayerData.java b/src/main/java/xyz/soukup/mineconomiaCoreV2/variables/PlayerData.java new file mode 100644 index 0000000..5d80eb3 --- /dev/null +++ b/src/main/java/xyz/soukup/mineconomiaCoreV2/variables/PlayerData.java @@ -0,0 +1,61 @@ +package xyz.soukup.mineconomiaCoreV2.variables; + +import jakarta.persistence.Entity; +import jakarta.persistence.GeneratedValue; +import jakarta.persistence.GenerationType; +import jakarta.persistence.Id; + +//Definování Member classy pro databázi a další manipulace + +@Entity +public class PlayerData { + + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) + private int id; + + private String nickname; + private String uuid; + private int online; + private float money; + + public int getId() { + return id; + } + + public void setId(int id) { + this.id = id; + } + + public String getNickname() { + return nickname; + } + + public void setNickname(String nickname) { + this.nickname = nickname; + } + + public String getUuid() { + return uuid; + } + + public void setUuid(String uuid) { + this.uuid = uuid; + } + + public int getOnline() { + return online; + } + + public void setOnline(int online) { + this.online = online; + } + + public float getMoney() { + return money; + } + + public void setMoney(float money) { + this.money = money; + } +}