mirror of
https://github.com/songoda/EpicAnchors.git
synced 2024-10-31 23:59:35 +01:00
Revert "fix: A lot of issues introduced after migrating to the new database API"
This reverts commit 2eec844447
.
This commit is contained in:
parent
ab968ea984
commit
fadb84f2a9
@ -56,7 +56,6 @@
|
|||||||
<excludeDefaults>false</excludeDefaults>
|
<excludeDefaults>false</excludeDefaults>
|
||||||
<includes>
|
<includes>
|
||||||
<include>**/nms/v*/**</include>
|
<include>**/nms/v*/**</include>
|
||||||
<include>**/core/third_party/org/h2/**</include>
|
|
||||||
</includes>
|
</includes>
|
||||||
</filter>
|
</filter>
|
||||||
</filters>
|
</filters>
|
||||||
|
@ -66,7 +66,7 @@ public class AnchorManagerImpl implements AnchorManager {
|
|||||||
protected void saveAll() {
|
protected void saveAll() {
|
||||||
for (Set<Anchor> anchorSet : this.anchors.values()) {
|
for (Set<Anchor> anchorSet : this.anchors.values()) {
|
||||||
Collection<Data> asData = new ArrayList<>(anchorSet.size());
|
Collection<Data> asData = new ArrayList<>(anchorSet.size());
|
||||||
this.dataManager.saveBatchSync(asData);
|
this.dataManager.saveBatch(asData);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -121,7 +121,7 @@ public class AnchorManagerImpl implements AnchorManager {
|
|||||||
|
|
||||||
if (tmpAnchors != null) {
|
if (tmpAnchors != null) {
|
||||||
Collection<Data> asData = new ArrayList<>(tmpAnchors.size());
|
Collection<Data> asData = new ArrayList<>(tmpAnchors.size());
|
||||||
this.dataManager.saveBatchSync(asData);
|
this.dataManager.saveBatch(asData);
|
||||||
|
|
||||||
for (Anchor anchor : tmpAnchors) {
|
for (Anchor anchor : tmpAnchors) {
|
||||||
((AnchorImpl) anchor).deInit(this.plugin);
|
((AnchorImpl) anchor).deInit(this.plugin);
|
||||||
@ -236,7 +236,7 @@ public class AnchorManagerImpl implements AnchorManager {
|
|||||||
}
|
}
|
||||||
|
|
||||||
Anchor anchor = new AnchorImpl(dataManager.getNextId("anchors"), owner, loc, ticks);
|
Anchor anchor = new AnchorImpl(dataManager.getNextId("anchors"), owner, loc, ticks);
|
||||||
this.dataManager.saveSync(anchor);
|
this.dataManager.save(anchor);
|
||||||
Bukkit.getScheduler().runTask(this.plugin, () -> { //TODO: Do we need to run this sync, or we are already on the main thread?
|
Bukkit.getScheduler().runTask(this.plugin, () -> { //TODO: Do we need to run this sync, or we are already on the main thread?
|
||||||
Block block = loc.getBlock();
|
Block block = loc.getBlock();
|
||||||
block.setType(Settings.MATERIAL.getMaterial().parseMaterial());
|
block.setType(Settings.MATERIAL.getMaterial().parseMaterial());
|
||||||
@ -290,7 +290,7 @@ public class AnchorManagerImpl implements AnchorManager {
|
|||||||
anchor.getLocation().add(.5, .5, .5), 100, .5, .5, .5);
|
anchor.getLocation().add(.5, .5, .5), 100, .5, .5, .5);
|
||||||
|
|
||||||
((AnchorImpl) anchor).deInit(this.plugin);
|
((AnchorImpl) anchor).deInit(this.plugin);
|
||||||
this.dataManager.deleteSync(anchor);
|
this.dataManager.delete(anchor);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Anchor access */
|
/* Anchor access */
|
||||||
|
@ -4,6 +4,8 @@ import com.craftaro.core.SongodaCore;
|
|||||||
import com.craftaro.core.SongodaPlugin;
|
import com.craftaro.core.SongodaPlugin;
|
||||||
import com.craftaro.core.commands.CommandManager;
|
import com.craftaro.core.commands.CommandManager;
|
||||||
import com.craftaro.core.configuration.Config;
|
import com.craftaro.core.configuration.Config;
|
||||||
|
import com.craftaro.core.database.DatabaseConnector;
|
||||||
|
import com.craftaro.core.database.SQLiteConnector;
|
||||||
import com.craftaro.core.gui.GuiManager;
|
import com.craftaro.core.gui.GuiManager;
|
||||||
import com.craftaro.core.hooks.EconomyManager;
|
import com.craftaro.core.hooks.EconomyManager;
|
||||||
import com.craftaro.core.hooks.HologramManager;
|
import com.craftaro.core.hooks.HologramManager;
|
||||||
@ -14,8 +16,9 @@ import com.craftaro.epicanchors.commands.sub.GiveCommand;
|
|||||||
import com.craftaro.epicanchors.commands.sub.ReloadCommand;
|
import com.craftaro.epicanchors.commands.sub.ReloadCommand;
|
||||||
import com.craftaro.epicanchors.commands.sub.SettingsCommand;
|
import com.craftaro.epicanchors.commands.sub.SettingsCommand;
|
||||||
import com.craftaro.epicanchors.commands.sub.ShowCommand;
|
import com.craftaro.epicanchors.commands.sub.ShowCommand;
|
||||||
|
import com.craftaro.epicanchors.files.DataManager;
|
||||||
import com.craftaro.epicanchors.files.Settings;
|
import com.craftaro.epicanchors.files.Settings;
|
||||||
import com.craftaro.epicanchors.files.migration._2_AnchorMigration;
|
import com.craftaro.epicanchors.files.migration.AnchorMigration;
|
||||||
import com.craftaro.epicanchors.files.migration._1_InitialMigration;
|
import com.craftaro.epicanchors.files.migration._1_InitialMigration;
|
||||||
import com.craftaro.epicanchors.listener.AnchorListener;
|
import com.craftaro.epicanchors.listener.AnchorListener;
|
||||||
import com.craftaro.epicanchors.listener.BlockListener;
|
import com.craftaro.epicanchors.listener.BlockListener;
|
||||||
@ -44,7 +47,15 @@ public final class EpicAnchors extends SongodaPlugin {
|
|||||||
public void onPluginEnable() {
|
public void onPluginEnable() {
|
||||||
SongodaCore.registerPlugin(this, 31, XMaterial.END_PORTAL_FRAME);
|
SongodaCore.registerPlugin(this, 31, XMaterial.END_PORTAL_FRAME);
|
||||||
|
|
||||||
initDatabase(Arrays.asList(new _1_InitialMigration(), new _2_AnchorMigration()));
|
// Initialize database
|
||||||
|
// this.getLogger().info("Initializing SQLite...");
|
||||||
|
// DatabaseConnector dbCon = new SQLiteConnector(this);
|
||||||
|
// this.dataManager = new DataManager(dbCon, this);
|
||||||
|
// AnchorMigration anchorMigration = new AnchorMigration(dbCon, this.dataManager, new _1_InitialMigration());
|
||||||
|
// anchorMigration.runMigrations();
|
||||||
|
// anchorMigration.migrateLegacyData(this);
|
||||||
|
|
||||||
|
initDatabase(Arrays.asList(new _1_InitialMigration(), new AnchorMigration()));
|
||||||
|
|
||||||
this.anchorManager = new AnchorManagerImpl(this, this.dataManager);
|
this.anchorManager = new AnchorManagerImpl(this, this.dataManager);
|
||||||
EpicAnchorsApi.initApi(this.anchorManager);
|
EpicAnchorsApi.initApi(this.anchorManager);
|
||||||
|
@ -0,0 +1,97 @@
|
|||||||
|
package com.craftaro.epicanchors.files;
|
||||||
|
|
||||||
|
import com.craftaro.core.database.DatabaseConnector;
|
||||||
|
import com.craftaro.epicanchors.AnchorImpl;
|
||||||
|
import com.craftaro.epicanchors.api.Anchor;
|
||||||
|
import com.craftaro.epicanchors.files.migration.AnchorMigration;
|
||||||
|
import com.craftaro.epicanchors.utils.Callback;
|
||||||
|
import com.craftaro.epicanchors.utils.UpdateCallback;
|
||||||
|
import com.craftaro.epicanchors.utils.Utils;
|
||||||
|
import org.bukkit.Bukkit;
|
||||||
|
import org.bukkit.Location;
|
||||||
|
import org.bukkit.World;
|
||||||
|
import org.bukkit.plugin.Plugin;
|
||||||
|
import org.jetbrains.annotations.NotNull;
|
||||||
|
import org.jetbrains.annotations.Nullable;
|
||||||
|
|
||||||
|
import java.sql.PreparedStatement;
|
||||||
|
import java.sql.ResultSet;
|
||||||
|
import java.sql.SQLException;
|
||||||
|
import java.sql.Statement;
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.Collection;
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.Objects;
|
||||||
|
import java.util.UUID;
|
||||||
|
import java.util.concurrent.ExecutorService;
|
||||||
|
import java.util.concurrent.Executors;
|
||||||
|
import java.util.concurrent.TimeUnit;
|
||||||
|
|
||||||
|
public class DataManager {
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
// public void updateAnchors(Collection<Anchor> anchors, UpdateCallback callback) {
|
||||||
|
// this.databaseConnector.connect((con) -> {
|
||||||
|
// con.setAutoCommit(false);
|
||||||
|
//
|
||||||
|
// SQLException err = null;
|
||||||
|
//
|
||||||
|
// for (Anchor anchor : anchors) {
|
||||||
|
// try (PreparedStatement ps = con.prepareStatement("UPDATE " + this.anchorTable +
|
||||||
|
// " SET ticks_left =? WHERE id =?;")) {
|
||||||
|
// ps.setInt(1, anchor.getTicksLeft());
|
||||||
|
// ps.setInt(2, anchor.getDbId());
|
||||||
|
//
|
||||||
|
// ps.executeUpdate();
|
||||||
|
// } catch (SQLException ex) {
|
||||||
|
// err = ex;
|
||||||
|
// break;
|
||||||
|
// }
|
||||||
|
// }
|
||||||
|
//
|
||||||
|
// if (err == null) {
|
||||||
|
// con.commit();
|
||||||
|
//
|
||||||
|
// resolveUpdateCallback(callback, null);
|
||||||
|
// } else {
|
||||||
|
// con.rollback();
|
||||||
|
//
|
||||||
|
// resolveUpdateCallback(callback, err);
|
||||||
|
// }
|
||||||
|
//
|
||||||
|
// con.setAutoCommit(true);
|
||||||
|
// });
|
||||||
|
// }
|
||||||
|
//
|
||||||
|
// public void deleteAnchorAsync(Anchor anchor) {
|
||||||
|
// deleteAnchorAsync(anchor, null);
|
||||||
|
// }
|
||||||
|
//
|
||||||
|
// public void deleteAnchorAsync(Anchor anchor, UpdateCallback callback) {
|
||||||
|
// this.thread.execute(() ->
|
||||||
|
// this.databaseConnector.connect((con) -> {
|
||||||
|
// try (PreparedStatement ps = con.prepareStatement("DELETE FROM " + this.anchorTable +
|
||||||
|
// " WHERE id =?;")) {
|
||||||
|
// ps.setInt(1, anchor.getDbId());
|
||||||
|
//
|
||||||
|
// ps.executeUpdate();
|
||||||
|
//
|
||||||
|
// resolveUpdateCallback(callback, null);
|
||||||
|
// } catch (Exception ex) {
|
||||||
|
// resolveUpdateCallback(callback, ex);
|
||||||
|
// }
|
||||||
|
// })
|
||||||
|
// );
|
||||||
|
// }
|
||||||
|
//
|
||||||
|
// public static String getTableName(String prefix, String name) {
|
||||||
|
// String result = prefix + name;
|
||||||
|
//
|
||||||
|
// if (!result.matches("[a-z0-9_]+")) {
|
||||||
|
// throw new IllegalStateException("The generated table name '" + result + "' contains invalid characters");
|
||||||
|
// }
|
||||||
|
//
|
||||||
|
// return result;
|
||||||
|
// }
|
||||||
|
}
|
@ -18,8 +18,8 @@ import java.util.concurrent.TimeUnit;
|
|||||||
import java.util.concurrent.atomic.AtomicBoolean;
|
import java.util.concurrent.atomic.AtomicBoolean;
|
||||||
import java.util.logging.Level;
|
import java.util.logging.Level;
|
||||||
|
|
||||||
public class _2_AnchorMigration extends DataMigration {
|
public class AnchorMigration extends DataMigration {
|
||||||
public _2_AnchorMigration() {
|
public AnchorMigration() {
|
||||||
super(2);
|
super(2);
|
||||||
}
|
}
|
||||||
|
|
@ -1,6 +1,7 @@
|
|||||||
package com.craftaro.epicanchors.files.migration;
|
package com.craftaro.epicanchors.files.migration;
|
||||||
|
|
||||||
import com.craftaro.core.database.DataMigration;
|
import com.craftaro.core.database.DataMigration;
|
||||||
|
import com.craftaro.epicanchors.EpicAnchors;
|
||||||
|
|
||||||
import java.sql.Connection;
|
import java.sql.Connection;
|
||||||
import java.sql.SQLException;
|
import java.sql.SQLException;
|
||||||
@ -14,14 +15,15 @@ public class _1_InitialMigration extends DataMigration {
|
|||||||
@Override
|
@Override
|
||||||
public void migrate(Connection connection, String tablePrefix) throws SQLException {
|
public void migrate(Connection connection, String tablePrefix) throws SQLException {
|
||||||
try (Statement statement = connection.createStatement()) {
|
try (Statement statement = connection.createStatement()) {
|
||||||
statement.execute("CREATE TABLE " + tablePrefix + "anchors (" +
|
statement.execute("CREATE TABLE " + EpicAnchors.getPlugin(EpicAnchors.class).getDataManager().getTablePrefix() + "anchors (" +
|
||||||
"id INTEGER NOT NULL PRIMARY KEY auto_increment," +
|
"id INTEGER NOT NULL," +
|
||||||
"world_name TEXT NOT NULL," +
|
"world_name TEXT NOT NULL," +
|
||||||
"x INTEGER NOT NULL," +
|
"x INTEGER NOT NULL," +
|
||||||
"y INTEGER NOT NULL," +
|
"y INTEGER NOT NULL," +
|
||||||
"z INTEGER NOT NULL," +
|
"z INTEGER NOT NULL," +
|
||||||
"ticks_left INTEGER NOT NULL," +
|
"ticks_left INTEGER NOT NULL," +
|
||||||
"owner VARCHAR(36)" +
|
"owner VARCHAR(36)," +
|
||||||
|
"PRIMARY KEY(id AUTOINCREMENT)" +
|
||||||
");");
|
");");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1,6 +1,8 @@
|
|||||||
package com.craftaro.epicanchors.utils;
|
package com.craftaro.epicanchors.utils;
|
||||||
|
|
||||||
|
import com.craftaro.core.database.Data;
|
||||||
import com.craftaro.core.database.DataManager;
|
import com.craftaro.core.database.DataManager;
|
||||||
|
import com.craftaro.core.third_party.org.jooq.Queries;
|
||||||
import com.craftaro.core.third_party.org.jooq.Query;
|
import com.craftaro.core.third_party.org.jooq.Query;
|
||||||
import com.craftaro.core.third_party.org.jooq.Record1;
|
import com.craftaro.core.third_party.org.jooq.Record1;
|
||||||
import com.craftaro.core.third_party.org.jooq.Result;
|
import com.craftaro.core.third_party.org.jooq.Result;
|
||||||
@ -8,13 +10,17 @@ import com.craftaro.core.third_party.org.jooq.impl.DSL;
|
|||||||
import com.craftaro.epicanchors.AnchorImpl;
|
import com.craftaro.epicanchors.AnchorImpl;
|
||||||
import com.craftaro.epicanchors.EpicAnchors;
|
import com.craftaro.epicanchors.EpicAnchors;
|
||||||
import com.craftaro.epicanchors.api.Anchor;
|
import com.craftaro.epicanchors.api.Anchor;
|
||||||
import com.craftaro.epicanchors.files.migration._2_AnchorMigration;
|
import com.craftaro.epicanchors.files.migration.AnchorMigration;
|
||||||
import org.bukkit.World;
|
import org.bukkit.World;
|
||||||
import org.jetbrains.annotations.NotNull;
|
import org.jetbrains.annotations.NotNull;
|
||||||
import org.jetbrains.annotations.Nullable;
|
import org.jetbrains.annotations.Nullable;
|
||||||
|
|
||||||
import java.sql.Connection;
|
import java.sql.Connection;
|
||||||
|
import java.sql.PreparedStatement;
|
||||||
|
import java.sql.ResultSet;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
|
import java.util.Collection;
|
||||||
|
import java.util.Collections;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
public class DataHelper {
|
public class DataHelper {
|
||||||
@ -62,7 +68,7 @@ public class DataHelper {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
public static void migrateAnchor(List<_2_AnchorMigration.LegacyAnchorEntry> anchorQueue, UpdateCallback callback) {
|
public static void migrateAnchor(List<AnchorMigration.LegacyAnchorEntry> anchorQueue, UpdateCallback callback) {
|
||||||
DataManager dataManager = EpicAnchors.getPlugin(EpicAnchors.class).getDataManager();
|
DataManager dataManager = EpicAnchors.getPlugin(EpicAnchors.class).getDataManager();
|
||||||
|
|
||||||
//recreate it with Jooq
|
//recreate it with Jooq
|
||||||
@ -71,7 +77,7 @@ public class DataHelper {
|
|||||||
connection.setAutoCommit(false);
|
connection.setAutoCommit(false);
|
||||||
try {
|
try {
|
||||||
List<Query> queries = new ArrayList<>();
|
List<Query> queries = new ArrayList<>();
|
||||||
for (_2_AnchorMigration.LegacyAnchorEntry entry : anchorQueue) {
|
for (AnchorMigration.LegacyAnchorEntry entry : anchorQueue) {
|
||||||
queries.add(dslContext.insertInto(DSL.table(dataManager.getTablePrefix() + "anchors"))
|
queries.add(dslContext.insertInto(DSL.table(dataManager.getTablePrefix() + "anchors"))
|
||||||
.columns(
|
.columns(
|
||||||
DSL.field("world_name"),
|
DSL.field("world_name"),
|
||||||
|
Loading…
Reference in New Issue
Block a user