# Conflicts: # src/main/java/xyz/soukup/mineconomiaCoreV2/MineconomiaCoreV2.javapull/14/head
commit
c71ff3f6e8
12 changed files with 351 additions and 175 deletions
@ -0,0 +1,58 @@ |
||||
package xyz.soukup.mineconomiaCoreV2.database; |
||||
|
||||
import com.google.protobuf.TypeRegistry; |
||||
import com.j256.ormlite.dao.Dao; |
||||
import com.j256.ormlite.dao.DaoManager; |
||||
import com.j256.ormlite.jdbc.JdbcConnectionSource; |
||||
import com.j256.ormlite.support.ConnectionSource; |
||||
import com.j256.ormlite.table.TableUtils; |
||||
import xyz.soukup.mineconomiaCoreV2.variables.Island; |
||||
import xyz.soukup.mineconomiaCoreV2.variables.PlayerData; |
||||
import xyz.soukup.mineconomiaCoreV2.variables.Shop; |
||||
import xyz.soukup.mineconomiaCoreV2.variables.Transaction; |
||||
|
||||
import java.sql.SQLException; |
||||
|
||||
import static xyz.soukup.mineconomiaCoreV2.core.sharedValues.config; |
||||
import static xyz.soukup.mineconomiaCoreV2.core.sharedValues.logger; |
||||
|
||||
public class DatabaseUtil { |
||||
public static Dao<PlayerData, Integer> playerDataDao; |
||||
public static Dao<Island, Integer> islandDao; |
||||
public static Dao<Shop, Integer> shopDao; |
||||
public static Dao<Transaction, Integer> transactionDao; |
||||
|
||||
public static ConnectionSource getConnectionSource() throws SQLException { |
||||
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 url = "jdbc:mysql://" + host + ":" + port + "/" + database; |
||||
|
||||
return new JdbcConnectionSource(url, user, password); |
||||
} |
||||
|
||||
public static void createTables(ConnectionSource connectionSource) throws SQLException { |
||||
TableUtils.createTableIfNotExists(connectionSource, PlayerData.class); |
||||
TableUtils.createTableIfNotExists(connectionSource, Transaction.class); |
||||
TableUtils.createTableIfNotExists(connectionSource, Island.class); |
||||
TableUtils.createTableIfNotExists(connectionSource, Shop.class); |
||||
} |
||||
|
||||
public static void daoInit(ConnectionSource connectionSource) throws SQLException { |
||||
islandDao = DaoManager.createDao(connectionSource, Island.class); |
||||
playerDataDao = DaoManager.createDao(connectionSource, PlayerData.class); |
||||
shopDao = DaoManager.createDao(connectionSource, Shop.class); |
||||
transactionDao = DaoManager.createDao(connectionSource, Transaction.class); |
||||
} |
||||
|
||||
public static void databaseInit() throws SQLException { |
||||
ConnectionSource connectionSource = getConnectionSource(); |
||||
|
||||
createTables(connectionSource); |
||||
daoInit(connectionSource); |
||||
} |
||||
|
||||
} |
||||
@ -1,113 +0,0 @@ |
||||
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()); |
||||
} |
||||
} |
||||
|
||||
|
||||
|
||||
} |
||||
@ -1,18 +0,0 @@ |
||||
package xyz.soukup.mineconomiaCoreV2.database; |
||||
|
||||
import jakarta.persistence.criteria.CriteriaBuilder; |
||||
import xyz.soukup.mineconomiaCoreV2.variables.PlayerData; |
||||
|
||||
|
||||
public class PlayerDataDatabase { |
||||
|
||||
public static void savePlayerDataToDatabase(PlayerData playerData){ |
||||
HibernateUtil.saveToDatabase(playerData); |
||||
} |
||||
|
||||
public static PlayerData getPlayerDataFromDatabase(String nickname){ |
||||
CriteriaBuilder criteriaBuilder = HibernateUtil.newSession().getCriteriaBuilder(); |
||||
return null; |
||||
} |
||||
|
||||
} |
||||
@ -1,5 +0,0 @@ |
||||
package xyz.soukup.mineconomiaCoreV2.database; |
||||
|
||||
public class PlayerInit { |
||||
public static void onJoin(){} |
||||
} |
||||
@ -0,0 +1,54 @@ |
||||
package xyz.soukup.mineconomiaCoreV2.events; |
||||
|
||||
import com.j256.ormlite.stmt.QueryBuilder; |
||||
import org.bukkit.entity.Player; |
||||
import org.bukkit.event.EventHandler; |
||||
import org.bukkit.event.Listener; |
||||
import org.bukkit.event.player.PlayerJoinEvent; |
||||
import org.bukkit.event.player.PlayerQuitEvent; |
||||
import xyz.soukup.mineconomiaCoreV2.variables.PlayerData; |
||||
|
||||
import java.sql.SQLException; |
||||
|
||||
import static xyz.soukup.mineconomiaCoreV2.MineconomiaCoreV2.playersData; |
||||
import static xyz.soukup.mineconomiaCoreV2.core.sharedValues.logger; |
||||
import static xyz.soukup.mineconomiaCoreV2.database.DatabaseUtil.playerDataDao; |
||||
|
||||
public class PlayerInit implements Listener { |
||||
|
||||
@EventHandler |
||||
public static void onJoin(PlayerJoinEvent event) throws SQLException { |
||||
|
||||
Player player = event.getPlayer(); |
||||
String name = player.getDisplayName(); |
||||
PlayerData playerData = PlayerData.generateFromPlayer(player);; |
||||
|
||||
QueryBuilder<PlayerData, Integer> queryBuilder = playerDataDao.queryBuilder(); |
||||
queryBuilder.where().eq("nickname", name); |
||||
|
||||
if (queryBuilder.countOf() > 0){ |
||||
playerData = queryBuilder.queryForFirst(); |
||||
}else { |
||||
playerDataDao.create(playerData); |
||||
} |
||||
|
||||
playerData.setOnline(1); |
||||
playerDataDao.update(playerData); |
||||
|
||||
playersData.put(player, playerData); |
||||
|
||||
|
||||
} |
||||
|
||||
@EventHandler |
||||
public static void onLeave(PlayerQuitEvent event) throws SQLException { |
||||
|
||||
Player player = event.getPlayer(); |
||||
PlayerData playerData = playersData.get(player); |
||||
|
||||
playerData.setOnline(0); |
||||
playerDataDao.update(playerData); |
||||
|
||||
playersData.remove(player); |
||||
} |
||||
} |
||||
@ -0,0 +1,29 @@ |
||||
package xyz.soukup.mineconomiaCoreV2.variables; |
||||
|
||||
import com.j256.ormlite.field.DatabaseField; |
||||
import com.j256.ormlite.table.DatabaseTable; |
||||
|
||||
@DatabaseTable(tableName = "islands") |
||||
public class Island { |
||||
|
||||
@DatabaseField(generatedId = true) |
||||
private int id; |
||||
|
||||
@DatabaseField |
||||
private String server; |
||||
|
||||
@DatabaseField |
||||
private String name; |
||||
|
||||
@DatabaseField |
||||
private String owner; |
||||
|
||||
@DatabaseField |
||||
private String world; |
||||
|
||||
@DatabaseField(columnName = "size_x") |
||||
private int sizeX; |
||||
|
||||
@DatabaseField(columnName = "size_y") |
||||
private int sizeY; |
||||
} |
||||
@ -0,0 +1,51 @@ |
||||
package xyz.soukup.mineconomiaCoreV2.variables; |
||||
|
||||
import com.j256.ormlite.field.DatabaseField; |
||||
import com.j256.ormlite.table.DatabaseTable; |
||||
|
||||
@DatabaseTable(tableName = "shops") |
||||
public class Shop { |
||||
@DatabaseField(generatedId = true) |
||||
private int id; |
||||
|
||||
@DatabaseField |
||||
private String server; |
||||
|
||||
@DatabaseField |
||||
private String owner; |
||||
|
||||
@DatabaseField(columnName = "owner_type") |
||||
private String ownerType; |
||||
|
||||
@DatabaseField |
||||
private String type; |
||||
|
||||
@DatabaseField |
||||
private float price; |
||||
|
||||
@DatabaseField |
||||
private int stock; |
||||
|
||||
@DatabaseField |
||||
private int x; |
||||
|
||||
@DatabaseField |
||||
private int y; |
||||
|
||||
@DatabaseField |
||||
private int z; |
||||
|
||||
@DatabaseField |
||||
private int world; |
||||
|
||||
@DatabaseField(columnName = "storage_x") |
||||
private int storageX; |
||||
|
||||
@DatabaseField(columnName = "storage_y") |
||||
private int storageY; |
||||
|
||||
@DatabaseField(columnName = "storage_z") |
||||
private int storageZ; |
||||
|
||||
|
||||
} |
||||
@ -0,0 +1,100 @@ |
||||
package xyz.soukup.mineconomiaCoreV2.variables; |
||||
|
||||
import com.j256.ormlite.field.DatabaseField; |
||||
import com.j256.ormlite.table.DatabaseTable; |
||||
|
||||
import java.util.Date; |
||||
|
||||
@DatabaseTable(tableName = "transactions") |
||||
public class Transaction { |
||||
|
||||
@DatabaseField(generatedId = true) |
||||
private int id; |
||||
|
||||
@DatabaseField |
||||
private Date date; |
||||
|
||||
@DatabaseField |
||||
private String type; |
||||
|
||||
@DatabaseField |
||||
private float amount; |
||||
|
||||
@DatabaseField |
||||
private String sender; |
||||
|
||||
@DatabaseField(columnName = "sender_type") |
||||
private String senderType; |
||||
|
||||
@DatabaseField |
||||
private String receiver; |
||||
|
||||
@DatabaseField(columnName = "receiver_type") |
||||
private String receiverType; |
||||
|
||||
public int getId() { |
||||
return id; |
||||
} |
||||
|
||||
public void setId(int id) { |
||||
this.id = id; |
||||
} |
||||
|
||||
public Date getDate() { |
||||
return date; |
||||
} |
||||
|
||||
public void setDate(Date date) { |
||||
this.date = date; |
||||
} |
||||
|
||||
public String getType() { |
||||
return type; |
||||
} |
||||
|
||||
public void setType(String type) { |
||||
this.type = type; |
||||
} |
||||
|
||||
public float getAmount() { |
||||
return amount; |
||||
} |
||||
|
||||
public void setAmount(float amount) { |
||||
this.amount = amount; |
||||
} |
||||
|
||||
public String getSender() { |
||||
return sender; |
||||
} |
||||
|
||||
public void setSender(String sender) { |
||||
this.sender = sender; |
||||
} |
||||
|
||||
public String getSenderType() { |
||||
return senderType; |
||||
} |
||||
|
||||
public void setSenderType(String senderType) { |
||||
this.senderType = senderType; |
||||
} |
||||
|
||||
public String getReceiver() { |
||||
return receiver; |
||||
} |
||||
|
||||
public void setReceiver(String receiver) { |
||||
this.receiver = receiver; |
||||
} |
||||
|
||||
public String getReceiverType() { |
||||
return receiverType; |
||||
} |
||||
|
||||
public void setReceiverType(String receiverType) { |
||||
this.receiverType = receiverType; |
||||
} |
||||
|
||||
|
||||
} |
||||
@ -1,7 +1,7 @@ |
||||
version: 1.0 |
||||
language: "czech.yml" |
||||
database: |
||||
host: localhost |
||||
host: uceni.soukup.xyz |
||||
port: 3306 |
||||
user: mcore |
||||
password: mcore |
||||
|
||||
Loading…
Reference in new issue