mirror of
https://github.com/plan-player-analytics/Plan.git
synced 2025-03-12 06:41:50 +01:00
Fixed some bugs with backups
This commit is contained in:
parent
a236c1e98b
commit
66a2169141
@ -35,13 +35,12 @@ public class ManageCommand extends TreeCommand<Plan> {
|
||||
|
||||
@Override
|
||||
public void addCommands() {
|
||||
// commands.add(new ManageMoveCommand(plugin));
|
||||
commands.add(new ManageMoveCommand(plugin));
|
||||
commands.add(new ManageHotswapCommand(plugin));
|
||||
// commands.add(new ManageBackupCommand(plugin));
|
||||
// commands.add(new ManageRestoreCommand(plugin));
|
||||
commands.add(new ManageBackupCommand(plugin));
|
||||
commands.add(new ManageRestoreCommand(plugin));
|
||||
commands.add(new ManageImportCommand(plugin));
|
||||
commands.add(new ManageRemoveCommand(plugin));
|
||||
// commands.add(new ManageCleanCommand(plugin));
|
||||
commands.add(new ManageClearCommand(plugin));
|
||||
commands.add(new ManageDumpCommand(plugin));
|
||||
}
|
||||
|
@ -43,12 +43,13 @@ public class ManageBackupCommand extends SubCommand {
|
||||
@Override
|
||||
public boolean onCommand(ISender sender, String commandLabel, String[] args) {
|
||||
try {
|
||||
|
||||
if (!Check.isTrue(args.length >= 1, Locale.get(Msg.CMD_FAIL_REQ_ARGS).parse(this.getArguments()), sender)) {
|
||||
return true;
|
||||
}
|
||||
String dbName = args[0].toLowerCase();
|
||||
boolean isCorrectDB = "sqlite".equals(dbName) || "mysql".equals(dbName);
|
||||
if (Check.isTrue(isCorrectDB, Locale.get(Msg.MANAGE_FAIL_INCORRECT_DB) + dbName, sender)) {
|
||||
if (!Check.isTrue(isCorrectDB, Locale.get(Msg.MANAGE_FAIL_INCORRECT_DB) + dbName, sender)) {
|
||||
return true;
|
||||
}
|
||||
|
||||
@ -59,10 +60,12 @@ public class ManageBackupCommand extends SubCommand {
|
||||
Log.error(dbName + " was null!");
|
||||
return true;
|
||||
}
|
||||
|
||||
Log.debug("Backup", "Start");
|
||||
runBackupTask(sender, args, database);
|
||||
} catch (DatabaseInitException | NullPointerException e) {
|
||||
sender.sendMessage(Locale.get(Msg.MANAGE_FAIL_FAULTY_DB).toString());
|
||||
} finally {
|
||||
Log.logDebug("Backup");
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
@ -112,6 +112,7 @@ public abstract class SQLDB extends Database {
|
||||
|
||||
if (newDatabase) {
|
||||
Log.info("New Database created.");
|
||||
setVersion(10);
|
||||
}
|
||||
|
||||
int version = getVersion();
|
||||
@ -127,16 +128,8 @@ public abstract class SQLDB extends Database {
|
||||
Log.toLog(this.getClass().getName(), e);
|
||||
}
|
||||
}
|
||||
}).runTaskLaterAsynchronously(TimeAmount.SECOND.ticks()*5L);
|
||||
return;
|
||||
}).runTaskLaterAsynchronously(TimeAmount.SECOND.ticks() * 5L);
|
||||
}
|
||||
|
||||
boolean newVersion = version < 10;
|
||||
|
||||
if (newDatabase || newVersion) {
|
||||
setVersion(10);
|
||||
}
|
||||
|
||||
} catch (SQLException e) {
|
||||
throw new DatabaseInitException("Failed to set-up Database", e);
|
||||
}
|
||||
|
@ -172,6 +172,7 @@ public class WebServer {
|
||||
|
||||
private void internalErrorResponse(HttpExchange exchange, Headers responseHeaders, String target, Exception e) {
|
||||
try {
|
||||
Log.toLog(target, e);
|
||||
sendData(responseHeaders, exchange, new InternalErrorResponse(e, target));
|
||||
} catch (IOException e1) {
|
||||
Log.toLog(this.getClass().getName(), e1);
|
||||
|
@ -1,11 +1,17 @@
|
||||
package main.java.com.djrapitops.plan.systems.webserver.response;
|
||||
|
||||
import main.java.com.djrapitops.plan.data.UserInfo;
|
||||
import main.java.com.djrapitops.plan.utilities.comparators.UserDataNameComparator;
|
||||
import main.java.com.djrapitops.plan.Log;
|
||||
import main.java.com.djrapitops.plan.api.IPlan;
|
||||
import main.java.com.djrapitops.plan.systems.webserver.theme.Theme;
|
||||
import main.java.com.djrapitops.plan.utilities.MiscUtils;
|
||||
import main.java.com.djrapitops.plan.utilities.file.FileUtil;
|
||||
import main.java.com.djrapitops.plan.utilities.html.Html;
|
||||
import main.java.com.djrapitops.plan.utilities.html.HtmlUtils;
|
||||
import org.apache.commons.lang3.text.StrSubstitutor;
|
||||
|
||||
import java.util.List;
|
||||
import java.io.FileNotFoundException;
|
||||
import java.sql.SQLException;
|
||||
import java.util.*;
|
||||
|
||||
/**
|
||||
* @author Rsl1122
|
||||
@ -15,21 +21,29 @@ public class PlayersPageResponse extends Response {
|
||||
|
||||
public PlayersPageResponse() {
|
||||
super.setHeader("HTTP/1.1 200 OK");
|
||||
// super.setContent(buildContent(plugin.getInspectCache().getCachedUserData()));
|
||||
List<String> names = null;
|
||||
try {
|
||||
IPlan plugin = MiscUtils.getIPlan();
|
||||
names = new ArrayList<>(plugin.getDB().getUsersTable().getPlayerNames().values());
|
||||
Collections.sort(names);
|
||||
Map<String, String> replace = new HashMap<>();
|
||||
replace.put("content", buildContent(names));
|
||||
replace.put("version", plugin.getVersion());
|
||||
super.setContent(Theme.replaceColors(StrSubstitutor.replace(FileUtil.getStringFromResource("players.html"), replace)));
|
||||
} catch (SQLException | FileNotFoundException e) {
|
||||
Log.toLog(this.getClass().getName(), e);
|
||||
setContent(new InternalErrorResponse(e, "/players").getContent());
|
||||
}
|
||||
}
|
||||
|
||||
public static String buildContent(List<UserInfo> cached) {
|
||||
StringBuilder html = new StringBuilder("<!DOCTYPE html><html><body><h1>Cached Players</h1><p>");
|
||||
int size = cached.size();
|
||||
public static String buildContent(List<String> names) {
|
||||
StringBuilder html = new StringBuilder("<p>");
|
||||
int size = names.size();
|
||||
|
||||
html.append(size)
|
||||
.append(" players. Use browser's Search to find players by name. (Chrome Ctrl+F)</p><table><tr>");
|
||||
|
||||
cached.sort(new UserDataNameComparator());
|
||||
html.append(size).append(" players. Use browser's Search to find players by name. (Ctrl+F)</p><table><tr>");
|
||||
|
||||
int i = 1;
|
||||
for (UserInfo userInfo : cached) {
|
||||
String name = userInfo.getName();
|
||||
for (String name : names) {
|
||||
String link = Html.LINK.parse(HtmlUtils.getRelativeInspectUrl(name), name);
|
||||
|
||||
html.append("<td>").append(link).append("</td>");
|
||||
@ -40,7 +54,7 @@ public class PlayersPageResponse extends Response {
|
||||
i++;
|
||||
}
|
||||
|
||||
html.append("</tr></table></body></html>");
|
||||
html.append("</tr></table>");
|
||||
return html.toString();
|
||||
}
|
||||
}
|
||||
|
@ -41,6 +41,7 @@ public class ManageUtils {
|
||||
}
|
||||
backupDB.init();
|
||||
clearAndCopy(backupDB, copyFromDB);
|
||||
backupDB.close();
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -6,8 +6,6 @@ import main.java.com.djrapitops.plan.Settings;
|
||||
import main.java.com.djrapitops.plan.data.AnalysisData;
|
||||
import main.java.com.djrapitops.plan.data.UserInfo;
|
||||
import main.java.com.djrapitops.plan.systems.webserver.response.PlayersPageResponse;
|
||||
import main.java.com.djrapitops.plan.utilities.Benchmark;
|
||||
import main.java.com.djrapitops.plan.utilities.file.FileUtil;
|
||||
|
||||
import java.io.File;
|
||||
import java.io.FileNotFoundException;
|
||||
@ -54,36 +52,36 @@ public class ExportUtility {
|
||||
|
||||
/**
|
||||
* @param analysisData
|
||||
* @param rawData
|
||||
* @param playerNames
|
||||
*/
|
||||
public static void export(AnalysisData analysisData, List<UserInfo> rawData) {
|
||||
public static void export(AnalysisData analysisData, List<String> playerNames) {
|
||||
if (!Settings.ANALYSIS_EXPORT.isTrue()) {
|
||||
return;
|
||||
}
|
||||
|
||||
Benchmark.start("Exporting Html pages");
|
||||
try {
|
||||
File folder = getFolder();
|
||||
Log.debug("Export", "Folder: " + folder.getAbsolutePath());
|
||||
|
||||
writePlayersPageHtml(rawData, new File(folder, "players"));
|
||||
writeAnalysisHtml(analysisData, new File(folder, "server"));
|
||||
|
||||
File playersFolder = getPlayersFolder(folder);
|
||||
Log.debug("Export", "Player html files.");
|
||||
Log.debug("Export", "Player Page Folder: " + playersFolder.getAbsolutePath());
|
||||
|
||||
String playerHtml = FileUtil.getStringFromResource("player.html");
|
||||
|
||||
Benchmark.start("Exporting Player pages");
|
||||
rawData.forEach(userData -> writeInspectHtml(userData, playersFolder, playerHtml));
|
||||
Benchmark.stop("Export", "Exporting Player pages");
|
||||
} catch (IOException ex) {
|
||||
Log.toLog("ExportUtils.export", ex);
|
||||
} finally {
|
||||
Benchmark.stop("Export", "Exporting Html pages");
|
||||
Log.logDebug("Export");
|
||||
}
|
||||
// Benchmark.start("Exporting Html pages");
|
||||
// try {
|
||||
// File folder = getFolder();
|
||||
// Log.debug("Export", "Folder: " + folder.getAbsolutePath());
|
||||
//
|
||||
// writePlayersPageHtml(playerNames, new File(folder, "players"));
|
||||
// writeAnalysisHtml(analysisData, new File(folder, "server"));
|
||||
//
|
||||
// File playersFolder = getPlayersFolder(folder);
|
||||
// Log.debug("Export", "Player html files.");
|
||||
// Log.debug("Export", "Player Page Folder: " + playersFolder.getAbsolutePath());
|
||||
//
|
||||
// String playerHtml = FileUtil.getStringFromResource("player.html");
|
||||
//
|
||||
// Benchmark.start("Exporting Player pages");
|
||||
// playerNames.forEach(userData -> writeInspectHtml(userData, playersFolder, playerHtml));
|
||||
// Benchmark.stop("Export", "Exporting Player pages");
|
||||
// } catch (IOException ex) {
|
||||
// Log.toLog("ExportUtils.export", ex);
|
||||
// } finally {
|
||||
// Benchmark.stop("Export", "Exporting Html pages");
|
||||
// Log.logDebug("Export");
|
||||
// }
|
||||
}
|
||||
|
||||
/**
|
||||
@ -148,8 +146,8 @@ public class ExportUtility {
|
||||
// Files.write(analysisHtmlFile.toPath(), Collections.singletonList(analysisHtml));
|
||||
}
|
||||
|
||||
private static void writePlayersPageHtml(List<UserInfo> rawData, File playersFolder) throws IOException {
|
||||
String playersHtml = PlayersPageResponse.buildContent(rawData);
|
||||
private static void writePlayersPageHtml(List<String> names, File playersFolder) throws IOException {
|
||||
String playersHtml = PlayersPageResponse.buildContent(names);
|
||||
playersFolder.mkdirs();
|
||||
File playersHtmlFile = new File(playersFolder, "index.html");
|
||||
Log.debug("Export", "Players Page File: " + playersHtmlFile.getAbsolutePath());
|
||||
|
@ -48,7 +48,7 @@ public class KillsTableCreator {
|
||||
String name = Plan.getInstance().getDataCache().getName(kill.getVictim());
|
||||
html.append(Html.TABLELINE_3_CUSTOMKEY_1.parse(
|
||||
String.valueOf(date), FormatUtils.formatTimeStamp(date),
|
||||
Html.LINK.parse(HtmlUtils.getInspectUrl(name), name),
|
||||
Html.LINK.parse(HtmlUtils.getRelativeInspectUrl(name), name),
|
||||
kill.getWeapon()
|
||||
));
|
||||
|
||||
|
43
Plan/src/main/resources/html/players.html
Normal file
43
Plan/src/main/resources/html/players.html
Normal file
@ -0,0 +1,43 @@
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<title>Plan | Players</title>
|
||||
<meta name="description" content="Player Analysis window">
|
||||
<meta name="author" content="Rsl1122">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||
<link rel="icon" href="https://puu.sh/tK0KL/6aa2ba141b.ico" type="image/x-icon">
|
||||
<link rel="stylesheet" href="./main.css">
|
||||
<link href="https://fonts.googleapis.com/css?family=Quicksand:300,400" rel="stylesheet">
|
||||
<script src="https://use.fontawesome.com/df48eb908b.js"></script>
|
||||
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script>
|
||||
</head>
|
||||
<body>
|
||||
<header>
|
||||
<div>
|
||||
<div class="right fa-stack fa-lg" style="padding: 23px; margin:8px">
|
||||
<i style="padding: 0; color: #fff; font-size: 100px;" class="fa fa-square fa-stack-1x"></i>
|
||||
<i style="padding: 0; color: #348e0f; font-size: 95px;" class="fa fa-square fa-stack-1x"></i>
|
||||
<i style="padding: 0; color: #fff; font-size: 60px;" class="fa fa-circle fa-stack-1x"></i>
|
||||
<div style="margin: 0px; padding: 0px; width: 100%; height: 100%; position: relative; overflow: hidden; top: -6px;">
|
||||
<i style="position: absolute; left: -4px; top: 8px; color: #348e0f; font-size: 40px;"
|
||||
class="fa fa-bar-chart fa-stack-1x"></i>
|
||||
</div>
|
||||
</div>
|
||||
<p class="right">Player Analytics v.${version}</p>
|
||||
<h1>Plan | Players</h1>
|
||||
</div>
|
||||
</header>
|
||||
<div class="content-server">
|
||||
<div class="row">
|
||||
<div class="column">
|
||||
<div class="box-header">
|
||||
<h2><i class="fa fa-users" aria-hidden="true"></i> Players</h2>
|
||||
</div>
|
||||
<div class="box" style="margin-bottom: 5px;">
|
||||
${content}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
Loading…
Reference in New Issue
Block a user