From ea9a8b8812b2ad1c32d07baabf6d0f11a7bf1565 Mon Sep 17 00:00:00 2001 From: Rsl1122 Date: Sat, 29 Sep 2018 13:43:56 +0300 Subject: [PATCH] [Debt] Sorted up some Analysis refresh code Split AnalysisPage#getRefreshingHtml into new RefreshingAnalysisResponse class. Moved AnalysisPageResponse.refreshNow to ServerPageHandler. --- .../webserver/pages/ServerPageHandler.java | 19 +++++++++++-- .../webserver/response/ResponseFactory.java | 8 ++++++ .../errors/RefreshingAnalysisResponse.java | 21 ++++++++++++++ .../response/pages/AnalysisPageResponse.java | 28 ------------------- .../utilities/html/pages/AnalysisPage.java | 15 ---------- 5 files changed, 46 insertions(+), 45 deletions(-) create mode 100644 Plan/src/main/java/com/djrapitops/plan/system/webserver/response/errors/RefreshingAnalysisResponse.java diff --git a/Plan/src/main/java/com/djrapitops/plan/system/webserver/pages/ServerPageHandler.java b/Plan/src/main/java/com/djrapitops/plan/system/webserver/pages/ServerPageHandler.java index 6f9b1e655..d0ddc904e 100644 --- a/Plan/src/main/java/com/djrapitops/plan/system/webserver/pages/ServerPageHandler.java +++ b/Plan/src/main/java/com/djrapitops/plan/system/webserver/pages/ServerPageHandler.java @@ -5,6 +5,8 @@ package com.djrapitops.plan.system.webserver.pages; import com.djrapitops.plan.api.exceptions.WebUserAuthException; +import com.djrapitops.plan.api.exceptions.connection.ConnectionFailException; +import com.djrapitops.plan.api.exceptions.connection.NoServersException; import com.djrapitops.plan.api.exceptions.connection.WebException; import com.djrapitops.plan.system.database.databases.Database; import com.djrapitops.plan.system.info.InfoSystem; @@ -16,7 +18,6 @@ import com.djrapitops.plan.system.webserver.cache.PageId; import com.djrapitops.plan.system.webserver.cache.ResponseCache; import com.djrapitops.plan.system.webserver.response.Response; import com.djrapitops.plan.system.webserver.response.ResponseFactory; -import com.djrapitops.plan.system.webserver.response.pages.AnalysisPageResponse; import com.djrapitops.plugin.api.Check; import javax.inject.Inject; @@ -76,10 +77,24 @@ public class ServerPageHandler implements PageHandler { } return ResponseCache.loadResponse(PageId.SERVER.of(serverUUID)); } - return AnalysisPageResponse.refreshNow(serverUUID, processing, infoSystem); + return refreshNow(serverUUID); } } + // TODO Split responsibility so that this method does not call system to refresh and also render a refresh page. + private Response refreshNow(UUID serverUUID) { + processing.submitNonCritical(() -> { + try { + infoSystem.generateAnalysisPage(serverUUID); + } catch (NoServersException | ConnectionFailException e) { + ResponseCache.cacheResponse(PageId.SERVER.of(serverUUID), () -> responseFactory.notFound404(e.getMessage())); + } catch (WebException e) { + ResponseCache.cacheResponse(PageId.SERVER.of(serverUUID), () -> responseFactory.internalErrorResponse(e, "Failed to generate Analysis Page")); + } + }); + return responseFactory.refreshingAnalysisResponse(); + } + private UUID getServerUUID(List target) { // Default to current server's page UUID serverUUID = serverInfo.getServerUUID(); diff --git a/Plan/src/main/java/com/djrapitops/plan/system/webserver/response/ResponseFactory.java b/Plan/src/main/java/com/djrapitops/plan/system/webserver/response/ResponseFactory.java index 8966ca421..e9b43ed7b 100644 --- a/Plan/src/main/java/com/djrapitops/plan/system/webserver/response/ResponseFactory.java +++ b/Plan/src/main/java/com/djrapitops/plan/system/webserver/response/ResponseFactory.java @@ -183,4 +183,12 @@ public class ResponseFactory { return internalErrorResponse(e, "Failed to parse PromptAuthorizationResponse"); } } + + public ErrorResponse refreshingAnalysisResponse() { + try { + return new RefreshingAnalysisResponse(version, files); + } catch (IOException e) { + return internalErrorResponse(e, "Failed to parse RefreshingAnalysisResponse"); + } + } } \ No newline at end of file diff --git a/Plan/src/main/java/com/djrapitops/plan/system/webserver/response/errors/RefreshingAnalysisResponse.java b/Plan/src/main/java/com/djrapitops/plan/system/webserver/response/errors/RefreshingAnalysisResponse.java new file mode 100644 index 000000000..7a4450033 --- /dev/null +++ b/Plan/src/main/java/com/djrapitops/plan/system/webserver/response/errors/RefreshingAnalysisResponse.java @@ -0,0 +1,21 @@ +package com.djrapitops.plan.system.webserver.response.errors; + +import com.djrapitops.plan.system.file.PlanFiles; + +import java.io.IOException; + +/** + * This response is used when Analysis is being refreshed and the user needs some feedback. + * + * @author Rsl1122 + */ +public class RefreshingAnalysisResponse extends ErrorResponse { + + public RefreshingAnalysisResponse(String version, PlanFiles files) throws IOException { + super(version, files); + + setTitle("Analysis is being refreshed.."); + setParagraph(" Analysis is being run, refresh the page after a few seconds.. (F5)"); + replacePlaceholders(); + } +} \ No newline at end of file diff --git a/Plan/src/main/java/com/djrapitops/plan/system/webserver/response/pages/AnalysisPageResponse.java b/Plan/src/main/java/com/djrapitops/plan/system/webserver/response/pages/AnalysisPageResponse.java index 607042aa7..af97a5201 100644 --- a/Plan/src/main/java/com/djrapitops/plan/system/webserver/response/pages/AnalysisPageResponse.java +++ b/Plan/src/main/java/com/djrapitops/plan/system/webserver/response/pages/AnalysisPageResponse.java @@ -1,18 +1,6 @@ package com.djrapitops.plan.system.webserver.response.pages; -import com.djrapitops.plan.api.exceptions.connection.ConnectionFailException; -import com.djrapitops.plan.api.exceptions.connection.NoServersException; -import com.djrapitops.plan.api.exceptions.connection.WebException; -import com.djrapitops.plan.system.info.InfoSystem; -import com.djrapitops.plan.system.processing.Processing; -import com.djrapitops.plan.system.webserver.cache.PageId; -import com.djrapitops.plan.system.webserver.cache.ResponseCache; import com.djrapitops.plan.system.webserver.response.Response; -import com.djrapitops.plan.system.webserver.response.ResponseFactory; -import com.djrapitops.plan.utilities.html.pages.AnalysisPage; -import com.djrapitops.plugin.api.utility.log.Log; - -import java.util.UUID; /** * @author Rsl1122 @@ -20,22 +8,6 @@ import java.util.UUID; */ public class AnalysisPageResponse extends Response { - // TODO Split responsibility so that this method does not call system to refresh and also render a refresh page. - @Deprecated - public static AnalysisPageResponse refreshNow(UUID serverUUID, Processing processing, InfoSystem infoSystem) { - ResponseFactory responseFactory = null; // TODO - processing.submitNonCritical(() -> { - try { - infoSystem.generateAnalysisPage(serverUUID); - } catch (NoServersException | ConnectionFailException e) { - ResponseCache.cacheResponse(PageId.SERVER.of(serverUUID), () -> responseFactory.notFound404(e.getMessage())); - } catch (WebException e) { - Log.toLog(AnalysisPageResponse.class.getName(), e); - } - }); - return new AnalysisPageResponse(AnalysisPage.getRefreshingHtml()); - } - public AnalysisPageResponse(String html) { super.setHeader("HTTP/1.1 200 OK"); super.setContent(html); diff --git a/Plan/src/main/java/com/djrapitops/plan/utilities/html/pages/AnalysisPage.java b/Plan/src/main/java/com/djrapitops/plan/utilities/html/pages/AnalysisPage.java index ae00333de..6a58c7dc7 100644 --- a/Plan/src/main/java/com/djrapitops/plan/utilities/html/pages/AnalysisPage.java +++ b/Plan/src/main/java/com/djrapitops/plan/utilities/html/pages/AnalysisPage.java @@ -7,7 +7,6 @@ package com.djrapitops.plan.utilities.html.pages; import com.djrapitops.plan.api.exceptions.ParseException; import com.djrapitops.plan.data.store.containers.AnalysisContainer; import com.djrapitops.plan.system.file.PlanFiles; -import com.djrapitops.plan.system.webserver.response.errors.ErrorResponse; import com.djrapitops.plan.utilities.formatting.Formatter; import com.djrapitops.plan.utilities.formatting.PlaceholderReplacer; import com.djrapitops.plugin.api.Benchmark; @@ -41,20 +40,6 @@ public class AnalysisPage implements Page { this.decimalFormatter = decimalFormatter; } - public static String getRefreshingHtml() { - // TODO Work this out - ErrorResponse refreshPage = null; - try { - refreshPage = new ErrorResponse("", null); - } catch (IOException e) { - - } - refreshPage.setTitle("Analysis is being refreshed.."); - refreshPage.setParagraph(" Analysis is being run, refresh the page after a few seconds.. (F5)"); - refreshPage.replacePlaceholders(); - return refreshPage.getContent(); - } - @Override public String toHtml() throws ParseException { Benchmark.start(DEBUG);