From 21437369788629c9b12c5465d80e81ed9c849fef Mon Sep 17 00:00:00 2001 From: Rsl1122 Date: Wed, 9 Aug 2017 18:33:57 +0300 Subject: [PATCH] Implement #215 Changes HtmlUtils replace to use Serializable --- .../djrapitops/plan/data/AnalysisData.java | 7 +++-- .../plan/data/additional/HookHandler.java | 5 +-- .../plan/data/cache/DataCacheHandler.java | 2 ++ .../plan/database/databases/SQLDB.java | 19 ++++++------ .../djrapitops/plan/utilities/HtmlUtils.java | 7 +++-- .../djrapitops/plan/utilities/MiscUtils.java | 6 ++++ .../plan/utilities/PlaceholderUtils.java | 31 +++++++++++-------- .../plan/utilities/analysis/Analysis.java | 4 +-- Plan/src/main/resources/analysis.html | 5 +++ Plan/src/main/resources/player.html | 5 +++ .../plan/utilities/HtmlUtilsTest.java | 6 ++-- 11 files changed, 63 insertions(+), 34 deletions(-) diff --git a/Plan/src/main/java/com/djrapitops/plan/data/AnalysisData.java b/Plan/src/main/java/com/djrapitops/plan/data/AnalysisData.java index 235efa784..c7c9227c0 100644 --- a/Plan/src/main/java/com/djrapitops/plan/data/AnalysisData.java +++ b/Plan/src/main/java/com/djrapitops/plan/data/AnalysisData.java @@ -7,6 +7,7 @@ import main.java.com.djrapitops.plan.utilities.Benchmark; import main.java.com.djrapitops.plan.utilities.HtmlUtils; import main.java.com.djrapitops.plan.utilities.MiscUtils; +import java.io.Serializable; import java.util.Arrays; import java.util.List; import java.util.Map; @@ -40,7 +41,7 @@ public class AnalysisData extends RawData { private long refreshDate; private String planVersion; private String pluginsTabLayout; - private Map additionalDataReplaceMap; + private Map additionalDataReplaceMap; private String playersTable; public AnalysisData(Map commandUsage, List tpsData) { @@ -118,11 +119,11 @@ public class AnalysisData extends RawData { this.pluginsTabLayout = pluginsTabLayout; } - public Map getAdditionalDataReplaceMap() { + public Map getAdditionalDataReplaceMap() { return additionalDataReplaceMap; } - public void setAdditionalDataReplaceMap(Map additionalDataReplaceMap) { + public void setAdditionalDataReplaceMap(Map additionalDataReplaceMap) { this.additionalDataReplaceMap = additionalDataReplaceMap; } diff --git a/Plan/src/main/java/com/djrapitops/plan/data/additional/HookHandler.java b/Plan/src/main/java/com/djrapitops/plan/data/additional/HookHandler.java index 84961d4de..6522987ef 100644 --- a/Plan/src/main/java/com/djrapitops/plan/data/additional/HookHandler.java +++ b/Plan/src/main/java/com/djrapitops/plan/data/additional/HookHandler.java @@ -5,6 +5,7 @@ import main.java.com.djrapitops.plan.Log; import main.java.com.djrapitops.plan.Plan; import main.java.com.djrapitops.plan.utilities.HtmlUtils; +import java.io.Serializable; import java.util.*; import java.util.stream.Collectors; @@ -155,8 +156,8 @@ public class HookHandler { * @param uuid UUID of the player whose page is being inspected. * @return Map: key|value - %placeholder%|value */ - public Map getAdditionalInspectReplaceRules(UUID uuid) { - Map addReplace = new HashMap<>(); + public Map getAdditionalInspectReplaceRules(UUID uuid) { + Map addReplace = new HashMap<>(); for (PluginData source : additionalDataSources) { if (source.analysisOnly()) { continue; diff --git a/Plan/src/main/java/com/djrapitops/plan/data/cache/DataCacheHandler.java b/Plan/src/main/java/com/djrapitops/plan/data/cache/DataCacheHandler.java index 4c30f2d3c..715b75ad8 100644 --- a/Plan/src/main/java/com/djrapitops/plan/data/cache/DataCacheHandler.java +++ b/Plan/src/main/java/com/djrapitops/plan/data/cache/DataCacheHandler.java @@ -144,6 +144,7 @@ public class DataCacheHandler extends SessionCache { } try { periodicTaskIsSaving = true; + Log.debug("Database", "Periodic Cache Save"); handler.saveHandlerDataToCache(); handler.saveCachedUserData(); if (timesSaved % clearAfterXsaves == 0) { @@ -340,6 +341,7 @@ public class DataCacheHandler extends SessionCache { return; } try { + Log.debug("Database", "Periodic TPS Save"); db.getTpsTable().saveTPSData(averages); } catch (SQLException ex) { Log.toLog(this.getClass().getName(), ex); diff --git a/Plan/src/main/java/com/djrapitops/plan/database/databases/SQLDB.java b/Plan/src/main/java/com/djrapitops/plan/database/databases/SQLDB.java index 5dd28814b..915ef5492 100644 --- a/Plan/src/main/java/com/djrapitops/plan/database/databases/SQLDB.java +++ b/Plan/src/main/java/com/djrapitops/plan/database/databases/SQLDB.java @@ -180,6 +180,7 @@ public abstract class SQLDB extends Database { public void run() { try { Benchmark.start("Convert BukkitData to DB data"); + Log.debug("Database", "Bukkit Data Conversion"); Set uuids = usersTable.getSavedUUIDs(); uuids.removeAll(usersTable.getContainsBukkitData(uuids)); if (uuids.isEmpty()) { @@ -410,15 +411,15 @@ public abstract class SQLDB extends Database { Map> worldTimes = worldTimesTable.getWorldTimes(ids); Log.debug("Database", "Data found for:"); - Log.debug("Database", "UUIDs: " + uuids.size()); - Log.debug("Database", "IDs: " + userIds.size()); - Log.debug("Database", "UserData: " + data.size()); - Log.debug("Database", " Nicknames: " + nicknames.size()); - Log.debug("Database", " IPs: " + ipList.size()); - Log.debug("Database", " Kills: " + playerKills.size()); - Log.debug("Database", " Sessions: " + sessionData.size()); - Log.debug("Database", " GM Times: " + gmTimes.size()); - Log.debug("Database", " World Times: " + worldTimes.size()); + Log.debug("Database", " UUIDs: " + uuids.size()); + Log.debug("Database", " IDs: " + userIds.size()); + Log.debug("Database", " UserData: " + data.size()); + Log.debug("Database", " Nicknames: " + nicknames.size()); + Log.debug("Database", " IPs: " + ipList.size()); + Log.debug("Database", " Kills: " + playerKills.size()); + Log.debug("Database", " Sessions: " + sessionData.size()); + Log.debug("Database", " GM Times: " + gmTimes.size()); + Log.debug("Database", " World Times: " + worldTimes.size()); for (UserData uData : data) { UUID uuid = uData.getUuid(); diff --git a/Plan/src/main/java/com/djrapitops/plan/utilities/HtmlUtils.java b/Plan/src/main/java/com/djrapitops/plan/utilities/HtmlUtils.java index 7ffbcb80f..f7686c402 100644 --- a/Plan/src/main/java/com/djrapitops/plan/utilities/HtmlUtils.java +++ b/Plan/src/main/java/com/djrapitops/plan/utilities/HtmlUtils.java @@ -8,6 +8,7 @@ import main.java.com.djrapitops.plan.ui.webserver.WebServer; import java.io.File; import java.io.FileNotFoundException; import java.io.InputStream; +import java.io.Serializable; import java.util.List; import java.util.Map; import java.util.Scanner; @@ -59,10 +60,10 @@ public class HtmlUtils { * @param replaceMap * @return */ - public static String replacePlaceholders(String html, Map replaceMap) { - for (Map.Entry entrySet : replaceMap.entrySet()) { + public static String replacePlaceholders(String html, Map replaceMap) { + for (Map.Entry entrySet : replaceMap.entrySet()) { String placeholder = entrySet.getKey(); - String replacer = entrySet.getValue(); + String replacer = entrySet.getValue().toString(); html = html.replace(placeholder, replacer); } diff --git a/Plan/src/main/java/com/djrapitops/plan/utilities/MiscUtils.java b/Plan/src/main/java/com/djrapitops/plan/utilities/MiscUtils.java index 52e917aa1..9ba64238f 100644 --- a/Plan/src/main/java/com/djrapitops/plan/utilities/MiscUtils.java +++ b/Plan/src/main/java/com/djrapitops/plan/utilities/MiscUtils.java @@ -1,5 +1,6 @@ package main.java.com.djrapitops.plan.utilities; +import com.djrapitops.plugin.api.TimeAmount; import com.djrapitops.plugin.command.CommandUtils; import com.djrapitops.plugin.command.ISender; import com.djrapitops.plugin.utilities.player.Fetch; @@ -12,6 +13,7 @@ import java.io.IOException; import java.util.Collection; import java.util.Collections; import java.util.List; +import java.util.TimeZone; import java.util.stream.Collectors; /** @@ -38,6 +40,10 @@ public class MiscUtils { return System.currentTimeMillis(); } + public static int getTimeZoneOffsetHours() { + return TimeZone.getDefault().getOffset(MiscUtils.getTime()) / (int) TimeAmount.HOUR.ms(); + } + /** * @param args * @param sender diff --git a/Plan/src/main/java/com/djrapitops/plan/utilities/PlaceholderUtils.java b/Plan/src/main/java/com/djrapitops/plan/utilities/PlaceholderUtils.java index e74b4ca11..4a5db06eb 100644 --- a/Plan/src/main/java/com/djrapitops/plan/utilities/PlaceholderUtils.java +++ b/Plan/src/main/java/com/djrapitops/plan/utilities/PlaceholderUtils.java @@ -17,6 +17,7 @@ import main.java.com.djrapitops.plan.ui.html.tables.KillsTableCreator; import main.java.com.djrapitops.plan.utilities.analysis.AnalysisUtils; import main.java.com.djrapitops.plan.utilities.analysis.MathUtils; +import java.io.Serializable; import java.util.*; /** @@ -32,14 +33,14 @@ public class PlaceholderUtils { } /** - * Gets the HashMap that is used to replace placeholders in Analysis. + * Gets the Map that is used to replace placeholders in Analysis. * * @param data AnalysisData used to replace the placeholders with * @return HashMap that contains string for each placeholder. */ - public static Map getAnalysisReplaceRules(AnalysisData data) { + public static Map getAnalysisReplaceRules(AnalysisData data) { Benchmark.start("Replace Placeholders Analysis"); - HashMap replaceMap = new HashMap<>(); + HashMap replaceMap = new HashMap<>(); replaceMap.putAll(data.getReplaceMap()); replaceMap.put("%plugins%", data.replacePluginsTabLayout()); @@ -48,6 +49,8 @@ public class PlaceholderUtils { replaceMap.put("%servername%", Settings.SERVER_NAME.toString()); + replaceMap.put("%timezone%", MiscUtils.getTimeZoneOffsetHours()); + // Html Theme colors String[] colors = new String[]{Settings.HCOLOR_MAIN.toString(), Settings.HCOLOR_MAIN_DARK.toString(), Settings.HCOLOR_SEC.toString(), Settings.HCOLOR_TER.toString(), Settings.HCOLOR_TER_DARK.toString()}; String[] defaultCols = new String[]{"348e0f", "267F00", "5cb239", "89c471", "5da341"}; @@ -61,20 +64,22 @@ public class PlaceholderUtils { } /** - * Gets the HashMap that is used to replace placeholders. + * Gets the Map that is used to replace placeholders. * * @param data UserData used to replace the placeholders with * @return HashMap that contains string for each placeholder. */ - public static Map getInspectReplaceRules(UserData data) { + public static Map getInspectReplaceRules(UserData data) { Benchmark.start("Replace Placeholders Inspect"); - HashMap replaceMap = new HashMap<>(); + HashMap replaceMap = new HashMap<>(); + replaceMap.put("%timezone%", MiscUtils.getTimeZoneOffsetHours()); + boolean showIPandUUID = Settings.SECURITY_IP_UUID.isTrue(); UUID uuid = data.getUuid(); - replaceMap.put("%uuid%", (showIPandUUID ? String.valueOf(uuid) : Html.HIDDEN.parse())); + replaceMap.put("%uuid%", (showIPandUUID ? uuid.toString() : Html.HIDDEN.parse())); replaceMap.put("%lastseen%", FormatUtils.formatTimeStampYear(data.getLastPlayed())); - replaceMap.put("%logintimes%", String.valueOf(data.getLoginTimes())); + replaceMap.put("%logintimes%", data.getLoginTimes()); replaceMap.put("%geoloc%", data.getGeolocation()); long now = MiscUtils.getTime(); boolean isActive = AnalysisUtils.isActive(now, data.getLastPlayed(), data.getPlayTime(), data.getLoginTimes()); @@ -100,9 +105,9 @@ public class PlaceholderUtils { replaceMap.put("%banned%", data.isBanned() ? Html.BANNED.parse() : ""); replaceMap.put("%op%", data.isOp() ? Html.OPERATOR.parse() : ""); replaceMap.put("%isonline%", (data.isOnline()) ? Html.ONLINE.parse() : Html.OFFLINE.parse()); - replaceMap.put("%deaths%", String.valueOf(data.getDeaths())); - replaceMap.put("%playerkills%", String.valueOf(data.getPlayerKills().size())); - replaceMap.put("%mobkills%", String.valueOf(data.getMobKills())); + replaceMap.put("%deaths%", data.getDeaths()); + replaceMap.put("%playerkills%", data.getPlayerKills().size()); + replaceMap.put("%mobkills%", data.getMobKills()); replaceMap.put("%sessionaverage%", FormatUtils.formatTimeAmount(MathUtils.averageLong(AnalysisUtils.transformSessionDataToLengths(data.getSessions())))); replaceMap.put("%killstable%", KillsTableCreator.createKillsTable(data.getPlayerKills())); Plan plugin = Plan.getInstance(); @@ -127,10 +132,10 @@ public class PlaceholderUtils { } long cacheTime = plugin.getInspectCache().getCacheTime(uuid); replaceMap.put("%refresh%", FormatUtils.formatTimeAmountDifference(cacheTime, now)); - replaceMap.put("%refreshlong%", String.valueOf(cacheTime)); + replaceMap.put("%refreshlong%", cacheTime); replaceMap.put("%servername%", Settings.SERVER_NAME.toString()); String pluginsTabHtml = plugin.getHookHandler().getPluginsTabLayoutForInspect(); - Map additionalReplaceRules = plugin.getHookHandler().getAdditionalInspectReplaceRules(uuid); + Map additionalReplaceRules = plugin.getHookHandler().getAdditionalInspectReplaceRules(uuid); String replacedOnce = HtmlUtils.replacePlaceholders(pluginsTabHtml, additionalReplaceRules); replaceMap.put("%plugins%", HtmlUtils.replacePlaceholders(replacedOnce, additionalReplaceRules)); Benchmark.stop("Replace Placeholders Inspect"); diff --git a/Plan/src/main/java/com/djrapitops/plan/utilities/analysis/Analysis.java b/Plan/src/main/java/com/djrapitops/plan/utilities/analysis/Analysis.java index 6e8b4cb16..59d4b5bbb 100644 --- a/Plan/src/main/java/com/djrapitops/plan/utilities/analysis/Analysis.java +++ b/Plan/src/main/java/com/djrapitops/plan/utilities/analysis/Analysis.java @@ -181,9 +181,9 @@ public class Analysis { } } - private Map analyzeAdditionalPluginData(List uuids) { + private Map analyzeAdditionalPluginData(List uuids) { Benchmark.start("3rd party"); - final Map replaceMap = new HashMap<>(); + final Map replaceMap = new HashMap<>(); final HookHandler hookHandler = plugin.getHookHandler(); final List sources = hookHandler.getAdditionalDataSources().stream() .filter(p -> !p.isBanData()) diff --git a/Plan/src/main/resources/analysis.html b/Plan/src/main/resources/analysis.html index 62d10ced7..f0ca3484d 100644 --- a/Plan/src/main/resources/analysis.html +++ b/Plan/src/main/resources/analysis.html @@ -674,6 +674,11 @@