Implemented backup operations

This commit is contained in:
Rsl1122 2018-05-25 11:16:03 +03:00
parent 751e0e6cb4
commit 4a2f18d9ee
3 changed files with 25 additions and 34 deletions

View File

@ -3,10 +3,12 @@ package com.djrapitops.plan.system.database.databases.operation;
import com.djrapitops.plan.api.exceptions.database.DBException; import com.djrapitops.plan.api.exceptions.database.DBException;
import com.djrapitops.plan.system.database.databases.Database; import com.djrapitops.plan.system.database.databases.Database;
import java.sql.SQLException;
public interface BackupOperations { public interface BackupOperations {
void backup(Database toDatabase) throws DBException; void backup(Database toDatabase) throws DBException, SQLException;
void restore(Database fromDatabase) throws DBException; void restore(Database fromDatabase) throws DBException, SQLException;
} }

View File

@ -1,8 +1,12 @@
package com.djrapitops.plan.system.database.databases.sql.operation; package com.djrapitops.plan.system.database.databases.sql.operation;
import com.djrapitops.plan.api.exceptions.database.DBException;
import com.djrapitops.plan.system.database.databases.Database; import com.djrapitops.plan.system.database.databases.Database;
import com.djrapitops.plan.system.database.databases.operation.BackupOperations; import com.djrapitops.plan.system.database.databases.operation.BackupOperations;
import com.djrapitops.plan.system.database.databases.sql.SQLDB; import com.djrapitops.plan.system.database.databases.sql.SQLDB;
import com.djrapitops.plan.system.database.databases.sql.tables.move.BatchOperationTable;
import java.sql.SQLException;
public class SQLBackupOps extends SQLOps implements BackupOperations { public class SQLBackupOps extends SQLOps implements BackupOperations {
@ -11,12 +15,16 @@ public class SQLBackupOps extends SQLOps implements BackupOperations {
} }
@Override @Override
public void backup(Database toDatabase) { public void backup(Database toDatabase) throws SQLException {
// TODO BatchOperationTable toDB = new BatchOperationTable((SQLDB) toDatabase);
BatchOperationTable fromDB = new BatchOperationTable(db);
toDB.removeAllData();
fromDB.copyEverything(toDB);
} }
@Override @Override
public void restore(Database fromDatabase) { public void restore(Database fromDatabase) throws DBException, SQLException {
// TODO fromDatabase.backup().backup(db);
} }
} }

View File

@ -1,15 +1,14 @@
package com.djrapitops.plan.utilities; package com.djrapitops.plan.utilities;
import com.djrapitops.plan.api.exceptions.database.DBException; import com.djrapitops.plan.api.exceptions.database.DBException;
import com.djrapitops.plan.api.exceptions.database.DBInitException;
import com.djrapitops.plan.system.database.databases.Database; import com.djrapitops.plan.system.database.databases.Database;
import com.djrapitops.plan.system.database.databases.sql.SQLDB;
import com.djrapitops.plan.system.database.databases.sql.SQLiteDB; import com.djrapitops.plan.system.database.databases.sql.SQLiteDB;
import com.djrapitops.plan.system.database.databases.sql.tables.move.BatchOperationTable;
import com.djrapitops.plugin.api.utility.log.Log; import com.djrapitops.plugin.api.utility.log.Log;
import java.sql.SQLException; import java.sql.SQLException;
import java.util.*; import java.util.Collection;
import java.util.Date;
import java.util.UUID;
/** /**
* @author Rsl1122 * @author Rsl1122
@ -29,18 +28,20 @@ public class ManageUtils {
* @param dbName Name of database (mysql/sqlite) * @param dbName Name of database (mysql/sqlite)
* @param copyFromDB Database you want to backup. * @param copyFromDB Database you want to backup.
*/ */
public static void backup(String dbName, Database copyFromDB) throws DBInitException, SQLException { public static void backup(String dbName, Database copyFromDB) throws SQLException {
SQLiteDB backupDB = null; SQLiteDB backupDB = null;
try { try {
String timeStamp = new Date().toString().substring(4, 10).replace(" ", "-"); String timeStamp = new Date().toString().substring(4, 10).replace(" ", "-");
String fileName = dbName + "-backup-" + timeStamp; String fileName = dbName + "-backup-" + timeStamp;
backupDB = new SQLiteDB(fileName); backupDB = new SQLiteDB(fileName);
Collection<UUID> uuids = ManageUtils.getUUIDS(copyFromDB); Collection<UUID> uuids = copyFromDB.fetch().getSavedUUIDs();
if (uuids.isEmpty()) { if (uuids.isEmpty()) {
return; return;
} }
backupDB.init(); backupDB.init();
clearAndCopy(backupDB, copyFromDB); clearAndCopy(backupDB, copyFromDB);
} catch (DBException e) {
Log.toLog(ManageUtils.class, e);
} finally { } finally {
if (backupDB != null) { if (backupDB != null) {
backupDB.close(); backupDB.close();
@ -48,22 +49,6 @@ public class ManageUtils {
} }
} }
/**
* Get the saved UUIDs in a hashset
*
* @param db Database to get UUIDs from
* @return uuids hashset as a Collection.
*/
public static Collection<UUID> getUUIDS(Database db) {
final Set<UUID> uuids = new HashSet<>();
try {
uuids.addAll(db.fetch().getSavedUUIDs());
} catch (DBException e) {
Log.toLog(ManageUtils.class, e);
}
return uuids;
}
/** /**
* Clears a database and copies data from other database to that database. * Clears a database and copies data from other database to that database.
* *
@ -71,11 +56,7 @@ public class ManageUtils {
* to. * to.
* @param copyFromDB Database where data will be copied from * @param copyFromDB Database where data will be copied from
*/ */
public static void clearAndCopy(Database clearAndCopyToDB, Database copyFromDB) throws SQLException { public static void clearAndCopy(Database clearAndCopyToDB, Database copyFromDB) throws SQLException, DBException {
BatchOperationTable toDB = new BatchOperationTable((SQLDB) clearAndCopyToDB); copyFromDB.backup().backup(clearAndCopyToDB);
BatchOperationTable fromDB = new BatchOperationTable((SQLDB) copyFromDB);
toDB.removeAllData();
fromDB.copyEverything(toDB);
} }
} }