mirror of
https://github.com/plan-player-analytics/Plan.git
synced 2025-02-05 16:30:24 +08:00
Restored Backup and Restore functionality
This commit is contained in:
parent
a91338dab8
commit
62e3aa9988
@ -73,11 +73,8 @@ public class ManageBackupCommand extends SubCommand {
|
||||
public void run() {
|
||||
try {
|
||||
sender.sendMessage(Locale.get(Msg.MANAGE_INFO_START).parse());
|
||||
if (ManageUtils.backup(args[0], database)) {
|
||||
sender.sendMessage(Locale.get(Msg.MANAGE_INFO_COPY_SUCCESS).toString());
|
||||
} else {
|
||||
sender.sendMessage(Locale.get(Msg.MANAGE_INFO_FAIL).toString());
|
||||
}
|
||||
ManageUtils.backup(args[0], database);
|
||||
sender.sendMessage(Locale.get(Msg.MANAGE_INFO_COPY_SUCCESS).toString());
|
||||
} catch (Exception e) {
|
||||
Log.toLog(this.getClass().getName() + " " + getTaskName(), e);
|
||||
sender.sendMessage(Locale.get(Msg.MANAGE_INFO_FAIL).toString());
|
||||
|
@ -14,9 +14,6 @@ import main.java.com.djrapitops.plan.locale.Msg;
|
||||
import main.java.com.djrapitops.plan.utilities.Check;
|
||||
import main.java.com.djrapitops.plan.utilities.ManageUtils;
|
||||
|
||||
import java.util.Collection;
|
||||
import java.util.UUID;
|
||||
|
||||
/**
|
||||
* This manage subcommand is used to move all data from one database to another.
|
||||
* <p>
|
||||
@ -72,22 +69,14 @@ public class ManageMoveCommand extends SubCommand {
|
||||
return true;
|
||||
}
|
||||
|
||||
// TODO Move command.
|
||||
// final Database fromDatabase = ManageUtils.getDB(plugin, fromDB);
|
||||
try {
|
||||
final Database fromDatabase = ManageUtils.getDB(plugin, fromDB);
|
||||
final Database toDatabase = ManageUtils.getDB(plugin, toDB);
|
||||
|
||||
// if (!Check.isTrue(Verify.notNull(fromDatabase), Locale.get(Msg.MANAGE_FAIL_FAULTY_DB).toString(), sender)) {
|
||||
// Log.error(fromDB + " was null!");
|
||||
// return true;
|
||||
// }
|
||||
|
||||
// final Database toDatabase = ManageUtils.getDB(plugin, toDB);
|
||||
|
||||
// if (!Check.isTrue(Verify.notNull(toDatabase), Locale.get(Msg.MANAGE_FAIL_FAULTY_DB).toString(), sender)) {
|
||||
// Log.error(toDB + " was null!");
|
||||
// return true;
|
||||
// }
|
||||
|
||||
// runMoveTask(fromDatabase, toDatabase, sender);
|
||||
runMoveTask(fromDatabase, toDatabase, sender);
|
||||
} catch (Exception e) {
|
||||
sender.sendMessage(Locale.get(Msg.MANAGE_FAIL_FAULTY_DB).toString());
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
@ -96,21 +85,12 @@ public class ManageMoveCommand extends SubCommand {
|
||||
@Override
|
||||
public void run() {
|
||||
try {
|
||||
final Collection<UUID> uuids = ManageUtils.getUUIDS(fromDatabase);
|
||||
if (Check.isTrue(Verify.isEmpty(uuids), Locale.get(Msg.MANAGE_FAIL_NO_PLAYERS) + " (" + fromDatabase.getName() + ")", sender)) {
|
||||
return;
|
||||
}
|
||||
|
||||
sender.sendMessage(Locale.get(Msg.MANAGE_INFO_START).parse());
|
||||
|
||||
if (ManageUtils.clearAndCopy(toDatabase, fromDatabase)) {
|
||||
sender.sendMessage(Locale.get(Msg.MANAGE_INFO_MOVE_SUCCESS).toString());
|
||||
boolean movedToCurrentDatabase = Verify.equalsIgnoreCase(toDatabase.getConfigName(), plugin.getDB().getConfigName());
|
||||
|
||||
Check.isTrue(!movedToCurrentDatabase, Locale.get(Msg.MANAGE_INFO_CONFIG_REMINDER).toString(), sender);
|
||||
} else {
|
||||
sender.sendMessage(Locale.get(Msg.MANAGE_INFO_FAIL).toString());
|
||||
}
|
||||
ManageUtils.clearAndCopy(toDatabase, fromDatabase);
|
||||
sender.sendMessage(Locale.get(Msg.MANAGE_INFO_MOVE_SUCCESS).toString());
|
||||
boolean movedToCurrentDatabase = Verify.equalsIgnoreCase(toDatabase.getConfigName(), plugin.getDB().getConfigName());
|
||||
Check.isTrue(!movedToCurrentDatabase, Locale.get(Msg.MANAGE_INFO_CONFIG_REMINDER).toString(), sender);
|
||||
} catch (Exception e) {
|
||||
Log.toLog(this.getClass().getName() + " " + getTaskName(), e);
|
||||
sender.sendMessage(Locale.get(Msg.MANAGE_INFO_FAIL).toString());
|
||||
|
@ -16,8 +16,6 @@ import main.java.com.djrapitops.plan.utilities.Check;
|
||||
import main.java.com.djrapitops.plan.utilities.ManageUtils;
|
||||
|
||||
import java.io.File;
|
||||
import java.util.Collection;
|
||||
import java.util.UUID;
|
||||
|
||||
/**
|
||||
* This manage subcommand is used to restore a backup.db file in the
|
||||
@ -61,15 +59,13 @@ public class ManageRestoreCommand extends SubCommand {
|
||||
return true;
|
||||
}
|
||||
|
||||
// TODO Restore command
|
||||
// final Database database = ManageUtils.getDB(plugin, db);
|
||||
//
|
||||
// if (!Check.isTrue(Verify.notNull(database), Locale.get(Msg.MANAGE_FAIL_FAULTY_DB).toString(), sender)) {
|
||||
// Log.error(db + " was null!");
|
||||
// return true;
|
||||
// }
|
||||
//
|
||||
// runRestoreTask(args, sender, database);
|
||||
try {
|
||||
final Database database = ManageUtils.getDB(plugin, db);
|
||||
|
||||
runRestoreTask(args, sender, database);
|
||||
} catch (Exception e) {
|
||||
sender.sendMessage(Locale.get(Msg.MANAGE_FAIL_FAULTY_DB).toString());
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
@ -95,20 +91,12 @@ public class ManageRestoreCommand extends SubCommand {
|
||||
|
||||
sender.sendMessage(Locale.get(Msg.MANAGE_INFO_START).parse());
|
||||
|
||||
final Collection<UUID> uuids = ManageUtils.getUUIDS(backupDB);
|
||||
if (!Check.isTrue(!Verify.isEmpty(uuids), Locale.get(Msg.MANAGE_FAIL_NO_PLAYERS) + " (" + backupDBName + ")", sender)) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (ManageUtils.clearAndCopy(database, backupDB)) {
|
||||
if (database.getConfigName().equals(plugin.getDB().getConfigName())) {
|
||||
ManageUtils.clearAndCopy(database, backupDB);
|
||||
if (database.getConfigName().equals(plugin.getDB().getConfigName())) {
|
||||
// plugin.getDataCache().getCommandUseFromDb();
|
||||
}
|
||||
|
||||
sender.sendMessage(Locale.get(Msg.MANAGE_INFO_COPY_SUCCESS).toString());
|
||||
} else {
|
||||
sender.sendMessage(Locale.get(Msg.MANAGE_INFO_FAIL).toString());
|
||||
}
|
||||
|
||||
sender.sendMessage(Locale.get(Msg.MANAGE_INFO_COPY_SUCCESS).toString());
|
||||
} catch (Exception e) {
|
||||
Log.toLog(this.getClass().getName() + " " + getTaskName(), e);
|
||||
sender.sendMessage(Locale.get(Msg.MANAGE_INFO_FAIL).toString());
|
||||
|
@ -325,4 +325,8 @@ public abstract class Database {
|
||||
}
|
||||
|
||||
public abstract void commit(Connection connection) throws SQLException;
|
||||
|
||||
public boolean isUsingMySQL() {
|
||||
return "mysql".equals(getConfigName());
|
||||
}
|
||||
}
|
||||
|
@ -5,6 +5,7 @@
|
||||
package main.java.com.djrapitops.plan.database.tables.move;
|
||||
|
||||
import main.java.com.djrapitops.plan.api.exceptions.DBCreateTableException;
|
||||
import main.java.com.djrapitops.plan.database.Database;
|
||||
import main.java.com.djrapitops.plan.database.databases.SQLDB;
|
||||
import main.java.com.djrapitops.plan.database.tables.ServerTable;
|
||||
import main.java.com.djrapitops.plan.database.tables.Table;
|
||||
@ -37,12 +38,12 @@ public class BatchOperationTable extends Table {
|
||||
/**
|
||||
* Constructor, call to access copy functionality.
|
||||
*
|
||||
* @param db
|
||||
* @param usingMySQL
|
||||
* @throws IllegalStateException if db.init has not been called.
|
||||
* @param database
|
||||
* @throws IllegalStateException if database.init has not been called.
|
||||
* @throws ClassCastException if database is not SQLDB.
|
||||
*/
|
||||
public BatchOperationTable(SQLDB db, boolean usingMySQL) {
|
||||
super("", db, usingMySQL);
|
||||
public BatchOperationTable(Database database) {
|
||||
super("", (SQLDB) database, false);
|
||||
if (!db.isOpen()) {
|
||||
throw new IllegalStateException("Given Database had not been initialized.");
|
||||
}
|
||||
@ -57,6 +58,11 @@ public class BatchOperationTable extends Table {
|
||||
table.removeAllData();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void removeAllData() throws SQLException {
|
||||
db.removeAllData();
|
||||
}
|
||||
|
||||
public void copyEverything(BatchOperationTable toDB) throws SQLException {
|
||||
if (toDB.equals(this)) {
|
||||
return;
|
||||
|
@ -6,6 +6,7 @@ import main.java.com.djrapitops.plan.Plan;
|
||||
import main.java.com.djrapitops.plan.api.exceptions.DatabaseInitException;
|
||||
import main.java.com.djrapitops.plan.database.Database;
|
||||
import main.java.com.djrapitops.plan.database.databases.SQLiteDB;
|
||||
import main.java.com.djrapitops.plan.database.tables.move.BatchOperationTable;
|
||||
|
||||
import java.sql.SQLException;
|
||||
import java.util.*;
|
||||
@ -29,17 +30,17 @@ public class ManageUtils {
|
||||
* @param copyFromDB Database you want to backup.
|
||||
* @return success?
|
||||
*/
|
||||
public static boolean backup(String dbName, Database copyFromDB) throws DatabaseInitException {
|
||||
public static void backup(String dbName, Database copyFromDB) throws DatabaseInitException, SQLException {
|
||||
Plan plugin = Plan.getInstance();
|
||||
String timeStamp = new Date().toString().substring(4, 10).replace(" ", "-");
|
||||
String fileName = dbName + "-backup-" + timeStamp;
|
||||
SQLiteDB backupDB = new SQLiteDB(plugin, fileName);
|
||||
Collection<UUID> uuids = ManageUtils.getUUIDS(copyFromDB);
|
||||
if (uuids.isEmpty()) {
|
||||
return false;
|
||||
return;
|
||||
}
|
||||
backupDB.init();
|
||||
return clearAndCopy(backupDB, copyFromDB);
|
||||
clearAndCopy(backupDB, copyFromDB);
|
||||
}
|
||||
|
||||
/**
|
||||
@ -66,18 +67,12 @@ public class ManageUtils {
|
||||
* @param copyFromDB Database where data will be copied from
|
||||
* @return success?
|
||||
*/
|
||||
public static boolean clearAndCopy(Database clearAndCopyToDB, Database copyFromDB) {
|
||||
// try {
|
||||
//clearAndCopyToDB.removeAllData();
|
||||
//TODO List<UserInfo> allUserData = copyFromDB.getUserDataForUUIDS(copyFromDB.getSavedUUIDs());
|
||||
// clearAndCopyToDB.saveMultipleUserData(allUserData);
|
||||
// TODO clearAndCopyToDB.getCommandUseTable().saveCommandUse(copyFromDB.getCommandUseTable().getCommandUse());
|
||||
//TODO clearAndCopyToDB.getTpsTable().saveTPSData(copyFromDB.getTpsTable().getTPSData());
|
||||
// } catch (SQLException | NullPointerException e) {
|
||||
// Log.toLog("ManageUtils.move", e);
|
||||
// return false;
|
||||
// }
|
||||
return true;
|
||||
public static void clearAndCopy(Database clearAndCopyToDB, Database copyFromDB) throws SQLException {
|
||||
BatchOperationTable toDB = new BatchOperationTable(clearAndCopyToDB);
|
||||
BatchOperationTable fromDB = new BatchOperationTable(copyFromDB);
|
||||
|
||||
toDB.removeAllData();
|
||||
fromDB.copyEverything(toDB);
|
||||
}
|
||||
|
||||
public static Database getDB(Plan plugin, String dbName) throws DatabaseInitException {
|
||||
|
Loading…
Reference in New Issue
Block a user