Export of server JSON

This commit is contained in:
Rsl1122 2019-09-01 19:22:05 +03:00
parent dd57dff4ae
commit 693e270a94
5 changed files with 54 additions and 9 deletions

View File

@ -18,6 +18,7 @@ package com.djrapitops.plan.commands.subcommands.manage;
import com.djrapitops.plan.delivery.export.Exporter;
import com.djrapitops.plan.exceptions.ExportException;
import com.djrapitops.plan.identification.ServerInfo;
import com.djrapitops.plan.processing.Processing;
import com.djrapitops.plan.settings.Permissions;
import com.djrapitops.plan.settings.config.PlanConfig;
@ -55,6 +56,7 @@ public class ManageExportCommand extends CommandNode {
private final ColorScheme colorScheme;
private final PlanConfig config;
private final DBSystem dbSystem;
private final ServerInfo serverInfo;
private final Exporter exporter;
private final Processing processing;
@ -64,6 +66,7 @@ public class ManageExportCommand extends CommandNode {
ColorScheme colorScheme,
PlanConfig config,
DBSystem dbSystem,
ServerInfo serverInfo,
Exporter exporter,
Processing processing
) {
@ -73,6 +76,7 @@ public class ManageExportCommand extends CommandNode {
this.colorScheme = colorScheme;
this.config = config;
this.dbSystem = dbSystem;
this.serverInfo = serverInfo;
this.exporter = exporter;
this.processing = processing;
@ -89,7 +93,7 @@ public class ManageExportCommand extends CommandNode {
String exportArg = args[0];
if ("list".equals(exportArg)) {
sender.sendMessage("> " + colorScheme.getMainColor() + "players");
sender.sendMessage("> " + colorScheme.getMainColor() + "players, server_json");
return;
}
@ -105,15 +109,30 @@ public class ManageExportCommand extends CommandNode {
private Consumer<Sender> getExportFunction(String exportArg) {
if ("players".equals(exportArg)) {
return this::exportPlayers;
} else if ("server_json".endsWith(exportArg)) {
return this::exportServerJSON;
}
return sender -> sender.sendMessage(locale.getString(ManageLang.FAIL_EXPORTER_NOT_FOUND, exportArg));
}
private void exportPlayers(Sender sender) {
sender.sendMessage(locale.getString(ManageLang.PROGRESS_START));
if (config.get(ExportSettings.PLAYERS_PAGE)) {
processing.submitNonCritical(exporter::exportPlayersPage);
private void exportServerJSON(Sender sender) {
if (!config.get(ExportSettings.SERVER_JSON)) {
sender.sendMessage("§c'" + ExportSettings.SERVER_JSON.getPath() + "': false");
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 exportPlayerHTML = config.get(ExportSettings.PLAYER_PAGES);
if (!exportPlayerJSON && !exportPlayerHTML) {
@ -123,6 +142,11 @@ public class ManageExportCommand extends CommandNode {
}
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());
int size = players.size();
int failed = 0;

View File

@ -96,7 +96,10 @@ public class ExportScheduler {
int offsetMultiplier = proxy.isPresent() ? 1 : 0; // Delay first server export if on a network.
for (Server server : servers) {
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);
offsetMultiplier++;
}

View File

@ -39,7 +39,7 @@ import java.util.UUID;
* @author Rsl1122
*/
@Singleton
public class Exporter {
public class Exporter extends FileExporter {
private final PlanFiles files;
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.
*

View File

@ -86,7 +86,7 @@ public class NetworkPageExporter extends FileExporter {
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();
exportJSON(toDirectory,

View File

@ -92,7 +92,7 @@ public class ServerPageExporter extends FileExporter {
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();
exportJSON(toDirectory,