mirror of
https://github.com/plan-player-analytics/Plan.git
synced 2024-12-24 10:11:53 +01:00
Fixed Patch Task causing issues on disable #695
This commit is contained in:
parent
8fb54ed905
commit
8ca16a1aa9
@ -0,0 +1,56 @@
|
|||||||
|
package com.djrapitops.plan.system.database.databases.sql;
|
||||||
|
|
||||||
|
import com.djrapitops.plan.PlanPlugin;
|
||||||
|
import com.djrapitops.plan.system.database.databases.sql.patches.Patch;
|
||||||
|
import com.djrapitops.plan.system.locale.Locale;
|
||||||
|
import com.djrapitops.plan.system.locale.lang.PluginLang;
|
||||||
|
import com.djrapitops.plugin.api.utility.log.Log;
|
||||||
|
import com.djrapitops.plugin.task.AbsRunnable;
|
||||||
|
|
||||||
|
import java.util.function.Supplier;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Task that is in charge on patching the database when the database enables.
|
||||||
|
*
|
||||||
|
* @author Rsl1122
|
||||||
|
*/
|
||||||
|
public class PatchTask extends AbsRunnable {
|
||||||
|
|
||||||
|
private final Patch[] patches;
|
||||||
|
private final Supplier<Locale> locale;
|
||||||
|
|
||||||
|
public PatchTask(Patch[] patches, Supplier<Locale> locale) {
|
||||||
|
this.patches = patches;
|
||||||
|
this.locale = locale;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void run() {
|
||||||
|
try {
|
||||||
|
boolean didApply = applyPatches();
|
||||||
|
Log.info(locale.get().getString(
|
||||||
|
didApply ? PluginLang.DB_APPLIED_PATCHES : PluginLang.DB_APPLIED_PATCHES_ALREADY
|
||||||
|
));
|
||||||
|
} catch (Exception e) {
|
||||||
|
Log.error("----------------------------------------------------");
|
||||||
|
Log.error(locale.get().getString(PluginLang.ENABLE_FAIL_DB_PATCH));
|
||||||
|
Log.error("----------------------------------------------------");
|
||||||
|
Log.toLog(this.getClass(), e);
|
||||||
|
PlanPlugin.getInstance().onDisable();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private boolean applyPatches() {
|
||||||
|
boolean didApply = false;
|
||||||
|
for (Patch patch : patches) {
|
||||||
|
if (!patch.hasBeenApplied()) {
|
||||||
|
String patchName = patch.getClass().getSimpleName();
|
||||||
|
Log.info(locale.get().getString(PluginLang.DB_APPLY_PATCH, patchName));
|
||||||
|
patch.apply();
|
||||||
|
didApply = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return didApply;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
@ -1,6 +1,5 @@
|
|||||||
package com.djrapitops.plan.system.database.databases.sql;
|
package com.djrapitops.plan.system.database.databases.sql;
|
||||||
|
|
||||||
import com.djrapitops.plan.PlanPlugin;
|
|
||||||
import com.djrapitops.plan.api.exceptions.database.DBInitException;
|
import com.djrapitops.plan.api.exceptions.database.DBInitException;
|
||||||
import com.djrapitops.plan.api.exceptions.database.DBOpException;
|
import com.djrapitops.plan.api.exceptions.database.DBOpException;
|
||||||
import com.djrapitops.plan.system.database.databases.Database;
|
import com.djrapitops.plan.system.database.databases.Database;
|
||||||
@ -157,31 +156,12 @@ public abstract class SQLDB extends Database {
|
|||||||
new VersionTableRemovalPatch(this)
|
new VersionTableRemovalPatch(this)
|
||||||
};
|
};
|
||||||
|
|
||||||
RunnableFactory.createNew("Database Patch", new AbsRunnable() {
|
|
||||||
@Override
|
|
||||||
public void run() {
|
|
||||||
try {
|
try {
|
||||||
boolean applied = false;
|
RunnableFactory.createNew("Database Patch", new PatchTask(patches, locale))
|
||||||
for (Patch patch : patches) {
|
.runTaskLaterAsynchronously(TimeAmount.SECOND.ticks() * 5L);
|
||||||
if (!patch.hasBeenApplied()) {
|
} catch (Exception ignore) {
|
||||||
String patchName = patch.getClass().getSimpleName();
|
// Task failed to register because plugin is being disabled
|
||||||
Log.info(locale.get().getString(PluginLang.DB_APPLY_PATCH, patchName));
|
|
||||||
patch.apply();
|
|
||||||
applied = true;
|
|
||||||
}
|
}
|
||||||
}
|
|
||||||
Log.info(locale.get().getString(
|
|
||||||
applied ? PluginLang.DB_APPLIED_PATCHES : PluginLang.DB_APPLIED_PATCHES_ALREADY
|
|
||||||
));
|
|
||||||
} catch (Exception e) {
|
|
||||||
Log.error("----------------------------------------------------");
|
|
||||||
Log.error(locale.get().getString(PluginLang.ENABLE_FAIL_DB_PATCH));
|
|
||||||
Log.error("----------------------------------------------------");
|
|
||||||
Log.toLog(this.getClass(), e);
|
|
||||||
PlanPlugin.getInstance().onDisable();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}).runTaskLaterAsynchronously(TimeAmount.SECOND.ticks() * 5L);
|
|
||||||
} catch (DBOpException e) {
|
} catch (DBOpException e) {
|
||||||
throw new DBInitException("Failed to set-up Database", e);
|
throw new DBInitException("Failed to set-up Database", e);
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user