mirror of
https://github.com/plan-player-analytics/Plan.git
synced 2024-10-05 01:47:49 +02:00
Export of server JSON
This commit is contained in:
parent
dd57dff4ae
commit
693e270a94
@ -18,6 +18,7 @@ package com.djrapitops.plan.commands.subcommands.manage;
|
|||||||
|
|
||||||
import com.djrapitops.plan.delivery.export.Exporter;
|
import com.djrapitops.plan.delivery.export.Exporter;
|
||||||
import com.djrapitops.plan.exceptions.ExportException;
|
import com.djrapitops.plan.exceptions.ExportException;
|
||||||
|
import com.djrapitops.plan.identification.ServerInfo;
|
||||||
import com.djrapitops.plan.processing.Processing;
|
import com.djrapitops.plan.processing.Processing;
|
||||||
import com.djrapitops.plan.settings.Permissions;
|
import com.djrapitops.plan.settings.Permissions;
|
||||||
import com.djrapitops.plan.settings.config.PlanConfig;
|
import com.djrapitops.plan.settings.config.PlanConfig;
|
||||||
@ -55,6 +56,7 @@ public class ManageExportCommand extends CommandNode {
|
|||||||
private final ColorScheme colorScheme;
|
private final ColorScheme colorScheme;
|
||||||
private final PlanConfig config;
|
private final PlanConfig config;
|
||||||
private final DBSystem dbSystem;
|
private final DBSystem dbSystem;
|
||||||
|
private final ServerInfo serverInfo;
|
||||||
private final Exporter exporter;
|
private final Exporter exporter;
|
||||||
private final Processing processing;
|
private final Processing processing;
|
||||||
|
|
||||||
@ -64,6 +66,7 @@ public class ManageExportCommand extends CommandNode {
|
|||||||
ColorScheme colorScheme,
|
ColorScheme colorScheme,
|
||||||
PlanConfig config,
|
PlanConfig config,
|
||||||
DBSystem dbSystem,
|
DBSystem dbSystem,
|
||||||
|
ServerInfo serverInfo,
|
||||||
Exporter exporter,
|
Exporter exporter,
|
||||||
Processing processing
|
Processing processing
|
||||||
) {
|
) {
|
||||||
@ -73,6 +76,7 @@ public class ManageExportCommand extends CommandNode {
|
|||||||
this.colorScheme = colorScheme;
|
this.colorScheme = colorScheme;
|
||||||
this.config = config;
|
this.config = config;
|
||||||
this.dbSystem = dbSystem;
|
this.dbSystem = dbSystem;
|
||||||
|
this.serverInfo = serverInfo;
|
||||||
this.exporter = exporter;
|
this.exporter = exporter;
|
||||||
this.processing = processing;
|
this.processing = processing;
|
||||||
|
|
||||||
@ -89,7 +93,7 @@ public class ManageExportCommand extends CommandNode {
|
|||||||
String exportArg = args[0];
|
String exportArg = args[0];
|
||||||
|
|
||||||
if ("list".equals(exportArg)) {
|
if ("list".equals(exportArg)) {
|
||||||
sender.sendMessage("> " + colorScheme.getMainColor() + "players");
|
sender.sendMessage("> " + colorScheme.getMainColor() + "players, server_json");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -105,15 +109,30 @@ public class ManageExportCommand extends CommandNode {
|
|||||||
private Consumer<Sender> getExportFunction(String exportArg) {
|
private Consumer<Sender> getExportFunction(String exportArg) {
|
||||||
if ("players".equals(exportArg)) {
|
if ("players".equals(exportArg)) {
|
||||||
return this::exportPlayers;
|
return this::exportPlayers;
|
||||||
|
} else if ("server_json".endsWith(exportArg)) {
|
||||||
|
return this::exportServerJSON;
|
||||||
}
|
}
|
||||||
return sender -> sender.sendMessage(locale.getString(ManageLang.FAIL_EXPORTER_NOT_FOUND, exportArg));
|
return sender -> sender.sendMessage(locale.getString(ManageLang.FAIL_EXPORTER_NOT_FOUND, exportArg));
|
||||||
}
|
}
|
||||||
|
|
||||||
private void exportPlayers(Sender sender) {
|
private void exportServerJSON(Sender sender) {
|
||||||
sender.sendMessage(locale.getString(ManageLang.PROGRESS_START));
|
if (!config.get(ExportSettings.SERVER_JSON)) {
|
||||||
if (config.get(ExportSettings.PLAYERS_PAGE)) {
|
sender.sendMessage("§c'" + ExportSettings.SERVER_JSON.getPath() + "': false");
|
||||||
processing.submitNonCritical(exporter::exportPlayersPage);
|
return;
|
||||||
}
|
}
|
||||||
|
processing.submitNonCritical(() -> {
|
||||||
|
try {
|
||||||
|
sender.sendMessage(locale.getString(ManageLang.PROGRESS_START));
|
||||||
|
exporter.exportServerJSON(serverInfo.getServer());
|
||||||
|
sender.sendMessage(locale.getString(ManageLang.PROGRESS_SUCCESS));
|
||||||
|
} catch (ExportException e) {
|
||||||
|
sender.sendMessage(locale.getString(ManageLang.PROGRESS_FAIL));
|
||||||
|
sender.sendMessage("§c" + e.toString());
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
private void exportPlayers(Sender sender) {
|
||||||
Boolean exportPlayerJSON = config.get(ExportSettings.PLAYER_JSON);
|
Boolean exportPlayerJSON = config.get(ExportSettings.PLAYER_JSON);
|
||||||
Boolean exportPlayerHTML = config.get(ExportSettings.PLAYER_PAGES);
|
Boolean exportPlayerHTML = config.get(ExportSettings.PLAYER_PAGES);
|
||||||
if (!exportPlayerJSON && !exportPlayerHTML) {
|
if (!exportPlayerJSON && !exportPlayerHTML) {
|
||||||
@ -123,6 +142,11 @@ public class ManageExportCommand extends CommandNode {
|
|||||||
}
|
}
|
||||||
|
|
||||||
processing.submitNonCritical(() -> {
|
processing.submitNonCritical(() -> {
|
||||||
|
sender.sendMessage(locale.getString(ManageLang.PROGRESS_START));
|
||||||
|
if (config.get(ExportSettings.PLAYERS_PAGE)) {
|
||||||
|
processing.submitNonCritical(exporter::exportPlayersPage);
|
||||||
|
}
|
||||||
|
|
||||||
Map<UUID, String> players = dbSystem.getDatabase().query(UserIdentifierQueries.fetchAllPlayerNames());
|
Map<UUID, String> players = dbSystem.getDatabase().query(UserIdentifierQueries.fetchAllPlayerNames());
|
||||||
int size = players.size();
|
int size = players.size();
|
||||||
int failed = 0;
|
int failed = 0;
|
||||||
|
@ -96,7 +96,10 @@ public class ExportScheduler {
|
|||||||
int offsetMultiplier = proxy.isPresent() ? 1 : 0; // Delay first server export if on a network.
|
int offsetMultiplier = proxy.isPresent() ? 1 : 0; // Delay first server export if on a network.
|
||||||
for (Server server : servers) {
|
for (Server server : servers) {
|
||||||
taskSystem.registerTask("Server export",
|
taskSystem.registerTask("Server export",
|
||||||
new ExportTask(exporter, exporter -> exporter.exportServerPage(server), logger, errorHandler))
|
new ExportTask(exporter, exporter -> {
|
||||||
|
exporter.exportServerPage(server);
|
||||||
|
exporter.exportServerJSON(server);
|
||||||
|
}, logger, errorHandler))
|
||||||
.runTaskTimerAsynchronously(offset * offsetMultiplier, period);
|
.runTaskTimerAsynchronously(offset * offsetMultiplier, period);
|
||||||
offsetMultiplier++;
|
offsetMultiplier++;
|
||||||
}
|
}
|
||||||
|
@ -39,7 +39,7 @@ import java.util.UUID;
|
|||||||
* @author Rsl1122
|
* @author Rsl1122
|
||||||
*/
|
*/
|
||||||
@Singleton
|
@Singleton
|
||||||
public class Exporter {
|
public class Exporter extends FileExporter {
|
||||||
|
|
||||||
private final PlanFiles files;
|
private final PlanFiles files;
|
||||||
private final PlanConfig config;
|
private final PlanConfig config;
|
||||||
@ -111,6 +111,24 @@ public class Exporter {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public boolean exportServerJSON(Server server) throws ExportException {
|
||||||
|
UUID serverUUID = server.getUuid();
|
||||||
|
if (failedServers.contains(serverUUID) || !config.get(ExportSettings.SERVER_JSON)) return false;
|
||||||
|
|
||||||
|
try {
|
||||||
|
Path toDirectory = getJSONExportDirectory().resolve(toFileName(server.getName()));
|
||||||
|
if (server.isProxy()) {
|
||||||
|
networkPageExporter.exportJSON(toDirectory, server);
|
||||||
|
} else {
|
||||||
|
serverPageExporter.exportJSON(toDirectory, server);
|
||||||
|
}
|
||||||
|
return true;
|
||||||
|
} catch (IOException | NotFoundException e) {
|
||||||
|
failedServers.add(serverUUID);
|
||||||
|
throw new ExportException("Failed to export server: " + server.getIdentifiableName() + " (Attempts disabled until next reload), " + e.toString(), e);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Export page of a player.
|
* Export page of a player.
|
||||||
*
|
*
|
||||||
|
@ -86,7 +86,7 @@ public class NetworkPageExporter extends FileExporter {
|
|||||||
export(to, exportPaths.resolveExportPaths(locale.replaceMatchingLanguage(page.toHtml())));
|
export(to, exportPaths.resolveExportPaths(locale.replaceMatchingLanguage(page.toHtml())));
|
||||||
}
|
}
|
||||||
|
|
||||||
private void exportJSON(Path toDirectory, Server server) throws IOException, NotFoundException {
|
public void exportJSON(Path toDirectory, Server server) throws IOException, NotFoundException {
|
||||||
String serverUUID = server.getUuid().toString();
|
String serverUUID = server.getUuid().toString();
|
||||||
|
|
||||||
exportJSON(toDirectory,
|
exportJSON(toDirectory,
|
||||||
|
@ -92,7 +92,7 @@ public class ServerPageExporter extends FileExporter {
|
|||||||
export(to, exportPaths.resolveExportPaths(locale.replaceMatchingLanguage(page.toHtml())));
|
export(to, exportPaths.resolveExportPaths(locale.replaceMatchingLanguage(page.toHtml())));
|
||||||
}
|
}
|
||||||
|
|
||||||
private void exportJSON(Path toDirectory, Server server) throws IOException, NotFoundException {
|
public void exportJSON(Path toDirectory, Server server) throws IOException, NotFoundException {
|
||||||
String serverName = server.getName();
|
String serverName = server.getName();
|
||||||
|
|
||||||
exportJSON(toDirectory,
|
exportJSON(toDirectory,
|
||||||
|
Loading…
Reference in New Issue
Block a user