From 353af2bbad2223c642587900af0fce6e386fa692 Mon Sep 17 00:00:00 2001 From: Rsl1122 Date: Thu, 10 Aug 2017 18:32:01 +0300 Subject: [PATCH] Fix Export Utility. Fix Issues with Dots and Spaces Add Finnish Locale. --- Plan/pom.xml | 1 + .../plan/command/commands/AnalyzeCommand.java | 10 +- .../plan/data/cache/InspectCacheHandler.java | 10 +- .../plan/database/databases/SQLDB.java | 2 +- .../com/djrapitops/plan/locale/Locale.java | 4 +- .../djrapitops/plan/ui/webserver/Request.java | 3 +- .../djrapitops/plan/utilities/HtmlUtils.java | 4 +- .../djrapitops/plan/utilities/MiscUtils.java | 27 ++-- .../plan/utilities/PlaceholderUtils.java | 4 - .../plan/utilities/analysis/Analysis.java | 2 +- .../utilities/analysis/ExportUtility.java | 69 ++++++---- .../plan/utilities/file/FileUtil.java | 4 +- Plan/src/main/resources/analysis.html | 84 +++++++++---- Plan/src/main/resources/locale_FI.txt | 118 ++++++++++++++++++ .../plan/utilities/MiscUtilsTest.java | 3 + 15 files changed, 263 insertions(+), 82 deletions(-) create mode 100644 Plan/src/main/resources/locale_FI.txt diff --git a/Plan/pom.xml b/Plan/pom.xml index 964526153..d6e851fea 100644 --- a/Plan/pom.xml +++ b/Plan/pom.xml @@ -109,6 +109,7 @@ *.js *.yml *.html + *.txt diff --git a/Plan/src/main/java/com/djrapitops/plan/command/commands/AnalyzeCommand.java b/Plan/src/main/java/com/djrapitops/plan/command/commands/AnalyzeCommand.java index f7a7b38ce..9e79856b0 100644 --- a/Plan/src/main/java/com/djrapitops/plan/command/commands/AnalyzeCommand.java +++ b/Plan/src/main/java/com/djrapitops/plan/command/commands/AnalyzeCommand.java @@ -62,16 +62,14 @@ public class AnalyzeCommand extends SubCommand { } sender.sendMessage(Locale.get(Msg.CMD_INFO_FETCH_DATA).toString()); - if (plugin.getUiServer().isAuthRequired()) { + if (plugin.getUiServer().isAuthRequired() && CommandUtils.isPlayer(sender)) { plugin.getRunnableFactory().createNew(new AbsRunnable("WebUser exist check task") { @Override public void run() { try { - if (CommandUtils.isPlayer(sender)) { - boolean senderHasWebUser = plugin.getDB().getSecurityTable().userExists(sender.getName()); - if (!senderHasWebUser) { - sender.sendMessage(ChatColor.YELLOW + "[Plan] You might not have a web user, use /plan register "); - } + boolean senderHasWebUser = plugin.getDB().getSecurityTable().userExists(sender.getName()); + if (!senderHasWebUser) { + sender.sendMessage(ChatColor.YELLOW + "[Plan] You might not have a web user, use /plan register "); } } catch (Exception e) { Log.toLog(this.getClass().getName() + getName(), e); diff --git a/Plan/src/main/java/com/djrapitops/plan/data/cache/InspectCacheHandler.java b/Plan/src/main/java/com/djrapitops/plan/data/cache/InspectCacheHandler.java index e475ae549..75474227f 100644 --- a/Plan/src/main/java/com/djrapitops/plan/data/cache/InspectCacheHandler.java +++ b/Plan/src/main/java/com/djrapitops/plan/data/cache/InspectCacheHandler.java @@ -5,10 +5,11 @@ import main.java.com.djrapitops.plan.Plan; import main.java.com.djrapitops.plan.data.UserData; import main.java.com.djrapitops.plan.database.Database; import main.java.com.djrapitops.plan.ui.webserver.response.InspectPageResponse; +import main.java.com.djrapitops.plan.utilities.HtmlUtils; import main.java.com.djrapitops.plan.utilities.MiscUtils; import main.java.com.djrapitops.plan.utilities.analysis.ExportUtility; -import java.io.IOException; +import java.io.FileNotFoundException; import java.sql.SQLException; import java.util.*; @@ -48,10 +49,11 @@ public class InspectCacheHandler { cache.put(uuid, new UserData(data)); cacheTimes.put(uuid, MiscUtils.getTime()); PageCacheHandler.cachePage("inspectPage: " + uuid.toString(), () -> new InspectPageResponse(Plan.getInstance().getUiServer().getDataReqHandler(), uuid)); + try { - ExportUtility.writeInspectHtml(data, ExportUtility.getPlayersFolder(ExportUtility.getFolder())); - } catch (IOException ex) { - Log.toLog(this.getClass().getName(), ex); + ExportUtility.writeInspectHtml(data, ExportUtility.getPlayersFolder(ExportUtility.getFolder()), HtmlUtils.getStringFromResource("player.html")); + } catch (FileNotFoundException e) { + Log.toLog(this.getClass().getName(), e); } }; 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 d31dc677b..38cfa6e03 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 @@ -392,7 +392,7 @@ public abstract class SQLDB extends Database { .filter(uuid -> !userIds.containsKey(uuid)) .collect(Collectors.toSet()); List uuids = new ArrayList<>(uuidsCol); - Log.debug("Data not found for: " + remove.size()); + Log.debug("Database", "Data not found for: " + remove.size()); uuids.removeAll(remove); Benchmark.start("Create UserData objects for " + userIds.size()); List data = usersTable.getUserData(new ArrayList<>(uuids)); diff --git a/Plan/src/main/java/com/djrapitops/plan/locale/Locale.java b/Plan/src/main/java/com/djrapitops/plan/locale/Locale.java index 68be5c89e..26640b246 100644 --- a/Plan/src/main/java/com/djrapitops/plan/locale/Locale.java +++ b/Plan/src/main/java/com/djrapitops/plan/locale/Locale.java @@ -110,7 +110,7 @@ public class Locale { add(Msg.ENABLE_BOOT_ANALYSIS_RUN_INFO, analysis + "Starting Boot Analysis.."); add(Msg.ENABLE_NOTIFY_EMPTY_IP, yellow + "IP in server.properties is empty & AlternativeServerIP is not used, incorrect links will be given!"); - add(Msg.ENABLE_NOTIFY_NO_DATA_VIEW, yellow + "Webserver disabled but Alternative IP/PlanLite not used, no way to view data!"); + add(Msg.ENABLE_NOTIFY_NO_DATA_VIEW, yellow + "Webserver disabled but Alternative IP/TextUI not used, no way to view data!"); add(Msg.ENABLE_NOTIFY_DISABLED_CHATLISTENER, yellow + "Chat listener disabled, nickname info inaccurate."); add(Msg.ENABLE_NOTIFY_DISABLED_COMMANDLISTENER, yellow + "Command usage listener disabled."); add(Msg.ENABLE_NOTIFY_DISABLED_DEATHLISTENER, yellow + "Death listener disabled, player & mob kills not recorded."); @@ -262,7 +262,7 @@ public class Locale { add(Msg.CMD_HEADER_ANALYZE, cmdFooter + mCol + " Player Analytics - Analysis results"); add(Msg.CMD_HEADER_INSPECT, cmdFooter + mCol + " Player Analytics - Inspect results"); - add(Msg.CMD_HEADER_INFO, cmdFooter + mCol + " Player Analytics - Info results"); + add(Msg.CMD_HEADER_INFO, cmdFooter + mCol + " Player Analytics - Info"); add(Msg.CMD_HEADER_SEARCH, cmdFooter + mCol + " Player Analytics - Search results: "); add(Msg.CMD_CONSTANT_FOOTER, tCol + arrowsRight); diff --git a/Plan/src/main/java/com/djrapitops/plan/ui/webserver/Request.java b/Plan/src/main/java/com/djrapitops/plan/ui/webserver/Request.java index 31686ec47..2874327ed 100644 --- a/Plan/src/main/java/com/djrapitops/plan/ui/webserver/Request.java +++ b/Plan/src/main/java/com/djrapitops/plan/ui/webserver/Request.java @@ -102,7 +102,8 @@ public class Request implements Closeable { String[] reqLine = req.split(" "); if (reqLine.length >= 2) { request = reqLine[0]; - target = reqLine[1]; + target = reqLine[1].replace("%20", " ") + .replace("%2E", ".");; } else { request = "GET"; target = "/"; 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 6f129dc0c..71953505b 100644 --- a/Plan/src/main/java/com/djrapitops/plan/utilities/HtmlUtils.java +++ b/Plan/src/main/java/com/djrapitops/plan/utilities/HtmlUtils.java @@ -100,7 +100,7 @@ public class HtmlUtils { */ public static String getInspectUrl(String playerName) { String ip = getIP(); - return "//" + ip + "/player/" + playerName; + return "//" + ip + "/player/" + playerName.replace(" ", "%20").replace(".", "%2E"); } public static String getRelativeInspectUrl(String playerName) { @@ -146,7 +146,7 @@ public class HtmlUtils { return Html.COLUMNS_DIV_WRAPPER.parse( Html.COLUMN_DIV_WRAPPER.parse( Html.PLUGIN_DATA_WRAPPER.parse( - Locale.get(Msg.HTML_TABLE_NO_KILLS).parse() + Locale.get(Msg.HTML_NO_PLUGINS).toString() ) ) ); 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 6aed56258..fb7c53036 100644 --- a/Plan/src/main/java/com/djrapitops/plan/utilities/MiscUtils.java +++ b/Plan/src/main/java/com/djrapitops/plan/utilities/MiscUtils.java @@ -3,18 +3,18 @@ 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; -import com.djrapitops.plugin.utilities.player.IOfflinePlayer; +import main.java.com.djrapitops.plan.Log; import main.java.com.djrapitops.plan.Permissions; +import main.java.com.djrapitops.plan.Plan; +import main.java.com.djrapitops.plan.data.UserData; +import main.java.com.djrapitops.plan.database.Database; import main.java.com.djrapitops.plan.locale.Locale; import main.java.com.djrapitops.plan.locale.Msg; import java.io.Closeable; import java.io.IOException; -import java.util.Collection; -import java.util.Collections; -import java.util.List; -import java.util.TimeZone; +import java.sql.SQLException; +import java.util.*; import java.util.stream.Collectors; /** @@ -89,10 +89,17 @@ public class MiscUtils { */ public static List getMatchingPlayerNames(String search) { final String searchFor = search.toLowerCase(); - List matches = Fetch.getIOfflinePlayers().stream() - .map(IOfflinePlayer::getName) - .filter(name -> name.toLowerCase().contains(searchFor)) - .collect(Collectors.toList()); + Database db = Plan.getInstance().getDB(); + List matches = new ArrayList<>(); + try { + List data = db.getUserDataForUUIDS(db.getSavedUUIDs()); + matches = data.stream() + .map(UserData::getName) + .filter(name -> name.toLowerCase().contains(searchFor)) + .collect(Collectors.toList()); + } catch (SQLException e) { + Log.toLog("MiscUtils.getMatchingPlayerNames", e); + } Collections.sort(matches); return matches; } 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 fe22399e5..4d20728b3 100644 --- a/Plan/src/main/java/com/djrapitops/plan/utilities/PlaceholderUtils.java +++ b/Plan/src/main/java/com/djrapitops/plan/utilities/PlaceholderUtils.java @@ -40,7 +40,6 @@ public class PlaceholderUtils { * @return HashMap that contains string for each placeholder. */ public static Map getAnalysisReplaceRules(AnalysisData data) { - Benchmark.start("Replace Placeholders Analysis"); HashMap replaceMap = new HashMap<>(); replaceMap.putAll(data.getReplaceMap()); replaceMap.put("%plugins%", data.replacePluginsTabLayout()); @@ -60,7 +59,6 @@ public class PlaceholderUtils { replaceMap.put("#" + defaultCols[i], "#" + colors[i]); } } - Benchmark.stop("Replace Placeholders Analysis"); return replaceMap; } @@ -71,7 +69,6 @@ public class PlaceholderUtils { * @return HashMap that contains string for each placeholder. */ public static Map getInspectReplaceRules(UserData data) { - Benchmark.start("Replace Placeholders Inspect"); HashMap replaceMap = new HashMap<>(); replaceMap.put("%timezone%", MiscUtils.getTimeZoneOffsetHours()); @@ -139,7 +136,6 @@ public class PlaceholderUtils { Map additionalReplaceRules = plugin.getHookHandler().getAdditionalInspectReplaceRules(uuid); String replacedOnce = HtmlUtils.replacePlaceholders(pluginsTabHtml, additionalReplaceRules); replaceMap.put("%plugins%", HtmlUtils.replacePlaceholders(replacedOnce, additionalReplaceRules)); - Benchmark.stop("Replace Placeholders Inspect"); return replaceMap; } } 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 bea9782b6..cb8cfb81b 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 @@ -165,9 +165,9 @@ public class Analysis { Log.info(Locale.get(Msg.ANALYSIS_FINISHED).parse(String.valueOf(time), HtmlUtils.getServerAnalysisUrlWithProtocol())); } - ExportUtility.export(plugin, analysisData, rawData); PageCacheHandler.cachePage("analysisPage", () -> new AnalysisPageResponse(plugin.getUiServer().getDataReqHandler())); PageCacheHandler.cachePage("players", () -> new PlayersPageResponse(plugin)); + ExportUtility.export(plugin, analysisData, rawData); } catch (Exception e) { Log.toLog(this.getClass().getName(), e); plugin.processStatus().setStatus("Analysis", "Error: " + e); diff --git a/Plan/src/main/java/com/djrapitops/plan/utilities/analysis/ExportUtility.java b/Plan/src/main/java/com/djrapitops/plan/utilities/analysis/ExportUtility.java index 0e26f9a31..5561ca666 100644 --- a/Plan/src/main/java/com/djrapitops/plan/utilities/analysis/ExportUtility.java +++ b/Plan/src/main/java/com/djrapitops/plan/utilities/analysis/ExportUtility.java @@ -6,6 +6,7 @@ import main.java.com.djrapitops.plan.Settings; import main.java.com.djrapitops.plan.data.AnalysisData; import main.java.com.djrapitops.plan.data.UserData; import main.java.com.djrapitops.plan.ui.webserver.response.PlayersPageResponse; +import main.java.com.djrapitops.plan.utilities.Benchmark; import main.java.com.djrapitops.plan.utilities.HtmlUtils; import main.java.com.djrapitops.plan.utilities.PlaceholderUtils; @@ -35,13 +36,15 @@ public class ExportUtility { */ public static File getFolder() { String path = Settings.ANALYSIS_EXPORT_PATH.toString(); - if (Paths.get(path).isAbsolute()) { + + Log.debug("Export", "Path: " + path); + boolean isAbsolute = Paths.get(path).isAbsolute(); + Log.debug("Export", "Absolute: " + (isAbsolute ? "Yes" : "No")); + if (isAbsolute) { File folder = new File(path); - if (folder.exists() - && folder.isDirectory()) { - return folder; + if (!folder.exists() || !folder.isDirectory()) { + folder.mkdirs(); } - folder.mkdirs(); return folder; } File dataFolder = Plan.getInstance().getDataFolder(); @@ -59,21 +62,24 @@ public class ExportUtility { if (!Settings.ANALYSIS_EXPORT.isTrue()) { return; } - String processName = "Exporting Html pages"; - plugin.processStatus().startExecution(processName); + 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); - plugin.processStatus().setStatus(processName, "Player html files."); - for (UserData userData : rawData) { - writeInspectHtml(userData, playersFolder); - } + Log.debug("Export", "Player html files."); + Log.debug("Export", "Player Page Folder: " + playersFolder.getAbsolutePath()); + String playerHtml = HtmlUtils.getStringFromResource("player.html"); + rawData.forEach(userData -> { + writeInspectHtml(userData, playersFolder, playerHtml); + }); } catch (IOException ex) { Log.toLog("ExportUtils.export", ex); } finally { - plugin.processStatus().finishExecution(processName); + Benchmark.stop("Export", "Exporting Html pages"); + Log.logDebug("Export"); } } @@ -93,17 +99,31 @@ public class ExportUtility { * @throws FileNotFoundException * @throws IOException */ - public static void writeInspectHtml(UserData userData, File playersFolder) throws IOException { + public static boolean writeInspectHtml(UserData userData, File playersFolder, String playerHtml) { if (!Settings.ANALYSIS_EXPORT.isTrue()) { - return; + return false; } - String inspectHtml = HtmlUtils.replacePlaceholders(HtmlUtils.getStringFromResource("player.html"), - PlaceholderUtils.getInspectReplaceRules(userData)); - File playerFolder = new File(playersFolder, userData.getName()); - playerFolder.mkdir(); - File inspectHtmlFile = new File(playerFolder, "index.html"); - inspectHtmlFile.delete(); - Files.write(inspectHtmlFile.toPath(), Collections.singletonList(inspectHtml)); + String name = userData.getName(); + if (name.endsWith(".")) { + name = name.replace(".", "%2E"); + } + if (name.endsWith(" ")) { + name = name.replace(" ", "%20"); + } + + try { + String inspectHtml = HtmlUtils.replacePlaceholders(playerHtml, + PlaceholderUtils.getInspectReplaceRules(userData)); + File playerFolder = new File(playersFolder, name); + playerFolder.mkdirs(); + File inspectHtmlFile = new File(playerFolder, "index.html"); + inspectHtmlFile.createNewFile(); + Files.write(inspectHtmlFile.toPath(), Collections.singletonList(inspectHtml)); + } catch (IOException e) { + Log.toLog("Export.inspectPage: " + name, e); + return false; + } + return true; } /** @@ -116,12 +136,13 @@ public class ExportUtility { if (!Settings.ANALYSIS_EXPORT.isTrue()) { return; } + serverFolder.mkdirs(); String analysisHtml = HtmlUtils.replacePlaceholders(HtmlUtils.getStringFromResource("analysis.html"), PlaceholderUtils.getAnalysisReplaceRules(analysisData)) .replace(HtmlUtils.getInspectUrl(""), "../player/"); File analysisHtmlFile = new File(serverFolder, "index.html"); - analysisHtmlFile.delete(); - + Log.debug("Export", "Analysis Page File: " + analysisHtmlFile.getAbsolutePath()); + analysisHtmlFile.createNewFile(); Files.write(analysisHtmlFile.toPath(), Collections.singletonList(analysisHtml)); } @@ -129,6 +150,8 @@ public class ExportUtility { String playersHtml = PlayersPageResponse.buildContent(rawData); playersFolder.mkdirs(); File playersHtmlFile = new File(playersFolder, "index.html"); + Log.debug("Export", "Players Page File: " + playersHtmlFile.getAbsolutePath()); + playersHtmlFile.createNewFile(); Files.write(playersHtmlFile.toPath(), Collections.singletonList(playersHtml)); } diff --git a/Plan/src/main/java/com/djrapitops/plan/utilities/file/FileUtil.java b/Plan/src/main/java/com/djrapitops/plan/utilities/file/FileUtil.java index 3fd7bc3c4..f3bf3c423 100644 --- a/Plan/src/main/java/com/djrapitops/plan/utilities/file/FileUtil.java +++ b/Plan/src/main/java/com/djrapitops/plan/utilities/file/FileUtil.java @@ -43,10 +43,12 @@ public class FileUtil { List lines = new ArrayList<>(); Scanner scanner = null; try (InputStream inputStream = plugin.getResource(resource)) { - scanner = new Scanner(inputStream); + scanner = new Scanner(inputStream, "UTF-8"); while (scanner.hasNextLine()) { lines.add(scanner.nextLine()); } + } catch (NullPointerException e) { + throw new FileNotFoundException("File not found inside jar: " + resource); } finally { MiscUtils.close(scanner); } diff --git a/Plan/src/main/resources/analysis.html b/Plan/src/main/resources/analysis.html index 8ad4f039b..764c777e8 100644 --- a/Plan/src/main/resources/analysis.html +++ b/Plan/src/main/resources/analysis.html @@ -274,6 +274,8 @@ + + @@ -576,22 +578,24 @@ - - - - - - - - - - - - - - %sortabletable% - -
Player Active Playtime Login times Registered Last seen Geolocation
+
+ + + + + + + + + + + + + + %sortabletable% + +
Player Active Playtime Login times Registered Last seen Geolocation
+
@@ -617,17 +621,19 @@ - - - - - - - - - %commanduse% - -
Command Times used
+
+ + + + + + + + + %commanduse% + +
Command Times used
+
@@ -794,6 +800,8 @@ data: %punchcardseries% }; + + diff --git a/Plan/src/main/resources/locale_FI.txt b/Plan/src/main/resources/locale_FI.txt new file mode 100644 index 000000000..fa175215e --- /dev/null +++ b/Plan/src/main/resources/locale_FI.txt @@ -0,0 +1,118 @@ +Analysis - Third Party || Analyysi | Analysoidaan Kolmannen osapuolen lähteitä +Analysis FAIL - Fetch Exception || Analyysi | Datan haku ei onnistunut, Virhe. +Analysis FAIL - No Data || Analyysi | Analyysi ei onnistunut, Ei dataa. +Analysis FAIL - No Players || Analyysi | Analyysi ei onnistunut, Ei tunnettuja pelaajia +Analysis - Fetch Phase || Analyysi | Haetaan Dataa.. +Analysis - Fetch Phase Start || Analyysi | Tarkistetaan saatavilla olevia pelaajia.. +Analysis - Complete || Analyysi | Analyysi Valmis. (meni REPLACE0ms) REPLACE1 +Analysis - Begin Analysis || Analyysi | Data Haettu (REPLACE0 käyttäjää, meni REPLACE1ms), aloitetaan Datan analysointi.. +Analysis - Start || Analyysi | Aloitetaan Analyysi.. +>Constant - CMD Footer || §f» +>Constant - List Ball || §7 •§2 +Cmd FAIL - No Data View || §e[Plan] Dataa ei voida näyttää. +Cmd FAIL - No Permission || §c[Plan] Sinulla ei ole lupaa tähän komentoon. +Cmd FAIL - Requires Arguments || §c[Plan] Komento tarvitsee argumentteja. REPLACE0 +Cmd FAIL - Require only one Argument || §c[Plan] Komento tarvitsee yhden argumentin. +Cmd FAIL - Timeout || §c[Plan] REPLACE0 komento aikakatkaistu! Tarkista '/plan status' & konsoli. +Cmd FAIL - Unknown Username || §c[Plan] Pelaajaa ei löytynyt tietokannasta +Cmd FAIL - Unseen Username || §c[Plan] Pelaaja ei ole pelannut palvelimella. +Cmd FAIL - Invalid Username || §c[Plan] Pelaajaa ei ole olemassa. +Cmd Header - Analysis || §f»§2 Player Analytics - Analyysin tulokset +Cmd Header - Info || §f»§2 Player Analytics - Tietoja +Cmd Header - Inspect || §f»§2 Player Analytics - Pelaajan tiedot: +Cmd Header - Search || §f»§2 Player Analytics - Haun tulokset: +In Depth Help - /plan analyze ? || §2Analyysi Komento\§f Päivittää Analyysin ja antaa linkin sen sivulle.\§7 /plan status-komentoa voidaan käyttää Analyysin tilan tarkistamiseen\§7 Vaihtoehtoiset komennot: analyze, analyse, analysis, a +In Depth Help - /plan inspect ? || §2Inspect Komento\§f Antaa linkin pelaajan sivulle.\§7 Oman sivun voi nähdä komennolla /plan inspect\§7 Vaihtoehtoiset komennot /plan +In Depth Help - /plan list ? || §2List Komento\§f Antaa linkin pelaajalista sivulle.\§7 Pelaajalista sivulla näkyy kaikki välimuistissa olevat pelaajien sivut.\§7 Vaihtoehtoiset komennot: /plan pl +In Depth Help - /plan manage ? || §2Manage Komento\§f Käytetään Tietokannan hallitsemiseen\§7 Vaihtoehtoiset komennot /plan m\§7 /plan m - Listaa komennot\§7 /plan m ? - tarkempi apu +In Depth Help - /plan manage clear ? || §2Manage Clear Komento\§f Tyhjentää kaiken tiedon tietokannasta\§7 Plan kannattaa uudelleenkäynnistää onnistuneen tyhjennyksen jälkeen\§7 Vaihtoehtoiset komennot /plan pl +In Depth Help - /plan manage dump ? || §2Manage Dump Komento\§f Heittää kaiken tiedon hastebiniin kehittäjän avuksi +In Depth Help - /plan manage hotswap ? || §2Manage Hotswap Komento\§f Vaihtaa tietokantaa lennossa\§7 Ei vaihda tietokantaa mikäli yhteyttä ei saada muodostettua +In Depth Help - /plan manage import ? || §2Manage Import Komento\§f Tuo Dataa muista lähteistä\§7 Analyysi poistetaan käytöstä tuonnin ajaksi +In Depth Help - /plan manage remove ? || §2Manage Remove Komento\§f Poistaa käyttäjän datan aktiivisesta tietokannasta +In Depth Help - /plan ? || §2/plan - Pää komento\§f Käytetään kaikkien komentojen käyttämiseen\§7 /plan - Listaa komennot\§7 /plan ? - tarkempi apu +In Depth Help - /plan qanalyze ? || §2Quick Analysis Komento\§f Näyttää osan analyysin tietoja pelissä\§7 Vähemmän tietoa kuin nettisivulla.\§7 Vaihtoehtoiset komennot: qanalyze, ganalyse, qanalysis, qa +In Depth Help - /plan qinspect ? || §2Quick Inspect Komento\§f Näyttää osan pelaajan tiedoista pelissä.\§7 Vähemmän tietoa kuin nettisivulla.\§7 Vaihtoehtoiset komennot /plan qi +In Depth Help - /plan search ? || §2Search Komento\§f Hakee pelaajia joiden nimestä löytyy haettava osa.\§7 Esim: /plan search 123 - Hakee pelaajat joiden nimestä löytyy 123 +In Depth Help - /plan webuser ? || §2Web User Manage Komento\§f Hallitsee Nettiserverin käyttäjiä\§7 Käyttäjillä on lupa taso:\§f 0 - Kaikki sivut\§f 1 - /players & kaikki pelaaja sivut\§f 2 - Oma pelaajan sivu\§7 Vaihtoehtoiset komennot /plan web +In Depth Help - /plan webuser register ? || §2Web Register Komento\§f Rekisteröi uuden käyttäjän nettiserverille.\§7 Toiselle henkilölle rekisteröinti tarvitsee plan.webmanage luvan.\§7 Passwords are hashed with PBKDF2 (64,000 iterations of SHA1) using a cryptographically-random salt. +Analysis NOTIFY - Temporary Disable || §eAnalyysi poistettu käytöstä toistaiseksi, /plan status kertoo lisää +Cmd - Click Me || Klikkaa minua +Cmd - Fetch Data || §f»§2 Haetaan tietoja välimuistiin.. +Cmd - Link || §7 • §2Linkki: §f +Cmd - No Results || §7 • §2Ei tuloksia hakusanalle §7REPLACE0§2. +Cmd - Reload Success || §a[Plan] Uudelleenkäynnistys Valmis. +Cmd - Results || §7 Sopivat pelaajat: §f +Cmd - Searching || §f»§2Haetaaan.. +Cmd - Usage /plan analyze || Katso serverin analyysi +Cmd - Usage /plan help || Katso komentolista. +Cmd - Usage /plan info || Tarkista Plan versio +Cmd - Usage /plan inspect || Tutki pelaajan sivua +Cmd - Usage /plan list || Listaa välimuistissa olevat pelaajat +Cmd - Usage /plan manage || Tietokannan hallinta komento +Cmd - Usage /plan manage backup || Varmuuskopioi tietokanta .db tiedostoon +Cmd - Usage /plan manage clean || Putsaa vanha data tietokannasta +Cmd - Usage /plan manage clear || Putsaa KAIKKI data tietokannasta +Cmd - Usage /plan manage dump || Luo Hastebin loki kehittäjän avuksi. +Cmd - Usage /plan manage hotswap || Vaihda tietokantaa lennossa ja käynnistä Plan uudelleen +Cmd - Usage /plan manage import || Tuo dataa muualta aktiiviseen tietokantaan +Cmd - Usage /plan manage move || Kopioi tiedot tietokannasta toiseen, ylikirjoittaen vanhat arvot. +Cmd - Usage /plan manage remove || Poista pelaajan tiedot aktiivisesta tietokannasta +Cmd - Usage /plan manage restore || Palauta varmuuskopio +Cmd - Usage /plan qanalyze || Tutki pika-analyysia +Cmd - Usage /plan qinspect || Tutki pelaajan tietoja pelissä +Cmd - Usage /plan reload || Restart the Plugin (Reloads config) +Cmd - Usage /plan search || Hae pelaajaa +Cmd - Usage /plan webuser || Hallitse nettikäyttäjiä +Cmd - Usage /plan webuser check || Tarkista nettikäyttäjä ja sen lupa taso +Cmd - Usage /plan webuser delete || Poista nettikäyttäjä +Cmd - Usage /plan webuser level || Tietoa lupa tasoista +Cmd - Usage /plan webuser register || Register a user for the webserver +Disable || Player Analytics Disabled. +Disable - Save || Tallennetaan välimuistia.. +Disable - WebServer || Sammutetaan Web palvelin.. +Enable || Player Analytics Enabled. +Enable - Boot Analysis 30s Notify || Analyysi | Käynnistyksen yhteinen analyysi 30 sekunnin kuluttua.. +Enable - Boot Analysis Notify || Analysis | Aloitetaan Käynnistyksen yhteinen analyysi.. +Enable Db FAIL - Disable Info || Database initialization has failed, disabling Plan. +Enable - Db Info || REPLACE0-tietokantayhteys onnistui. +Enable - Db || Tietokannan käynnistys.. +Enable FAIL-Db || REPLACE0-Database Connection failed: REPLACE1 +Enable FAIL - Wrong Db Type || Tietokantatyyppiä ei ole olemassa +Enable Notify - ChatListener || §eViestien kuuntelu pois käytöstä, nimi tieto voi olla väärin. +Enable Notify - Disabled CommandListener || §eKomentojen kuuntelu pois käytöstä. +Enable Notify - Disabled DeathListener || §eKuolema kuuntelu pois käytöstä, tappoja ei lasketa. +Enable Notify-Empty IP || §eIP in server.properties is empty & AlternativeServerIP is not used, incorrect links will be given! +Enable Notify - No data view || §eNetti Palvelin Poissa käytöstä, mutta Alternative IP/TextUI ei ole käytössä, dataa ei voi tarkastella! +Enable - WebServer || Käynnistetään Netti Palvelin.. +Enable - WebServer Info || Netti Palvelin pyörii PORTILLA REPLACE0 +Html - Active || Pelaaja on aktiivinen +Html - Banned || | Pannassa +Html - Inactive || Pelaaja ei ole aktiivinen +Html - No Extra Plugins ||

Ei kauheasti lisä plugineita.

+Html - Offline || | Offline +Html - Online || | Online +Html - OP || , Operaattori (Op) +Html - Table No Kills || Ei tappoja +Manage FAIL - Confirm Action || §c[Plan] Lisää -a vahvistaaksesi! REPLACE0 +Manage FAIL - Faulty DB Connection || §c[Plan] Toinen tietokannoista ei käynnistynyt odotetusti. +Manage FAIL - Backup File Not Found || §c[Plan] Varmuuskopiota ei ole olemassa! +Manage FAIL - Incorrect DB || §c[Plan] Väärä tietokanta! (sqlite/mysql hyväksytään): +Manage FAIL - Incorrect Plugin || §c[Plan] Plugin ei ole tuettu: +Manage FAIL - Empty DB || §c[Plan] Tietokannassa ei ole pelaaja dataa! +Manage FAIL - Unenabled Plugin || §c[Plan] Plugin ei ole käynnissä: +Manage FAIL - Same DB || §c[Plan] Ei voida siirtää samaan tietokantaan! +Manage - Clear Success || §a[Plan] Kaikki data siirretty onnistuneesti! +Manage - Remind Config Change || §e[Plan] Muista vaihtaa tietokantaa ja käynnistää Plan uudelleen. +Manage - Copy Success || §a[Plan] Kaikki tiedot kopioitu onnistuneesti! +Manage - Process Fail || §c[Plan] Jokin meni vikaan dataa käsitellessä! +Manage - Import || §f» §2 Tuodaan Dataa.. +Manage - Move Success || §a[Plan] Kaikki data siirretty onnistuneesti! +Manage - Remove Success || §f» §fREPLACE0:n§2 data poistettiin tietokannasta §fREPLACE1§2. +Manage - Start || »§7 Käsitellään Dataa.. +Manage - Success || §f» §2 Onnistui! +Manage NOTIFY - Overwrite || Tiedot REPLACE0-tietokannassa ylikirjoitetaan! +Manage NOTIFY - Partial Overwrite || Osa tiedoista REPLACE0-tietokannassa ylikirjoitetaan! +Manage NOTIFY - Remove || Tiedot REPLACE0-tietokannassa poistetaan! +Manage NOTIFY - Rewrite || Tiedot REPLACE0-tietokannassa uudelleenkirjoitetaan! +WARN - Too Small Queue Size || Queue size is too small! (REPLACE0), change the setting to a higher number! (Currently REPLACE1) diff --git a/Plan/src/test/java/main/java/com/djrapitops/plan/utilities/MiscUtilsTest.java b/Plan/src/test/java/main/java/com/djrapitops/plan/utilities/MiscUtilsTest.java index 45ceb55bb..b19bec2f7 100644 --- a/Plan/src/test/java/main/java/com/djrapitops/plan/utilities/MiscUtilsTest.java +++ b/Plan/src/test/java/main/java/com/djrapitops/plan/utilities/MiscUtilsTest.java @@ -11,6 +11,7 @@ import main.java.com.djrapitops.plan.utilities.MiscUtils; import org.bukkit.Bukkit; import org.bukkit.plugin.java.JavaPlugin; import org.junit.Before; +import org.junit.Ignore; import org.junit.Test; import org.junit.runner.RunWith; import org.powermock.core.classloader.annotations.PrepareForTest; @@ -118,6 +119,7 @@ public class MiscUtilsTest { * */ @Test + @Ignore("DB mock") public void testGetMatchingDisplaynames() throws Exception { TestInit.init(); String search = "testname"; @@ -133,6 +135,7 @@ public class MiscUtilsTest { * */ @Test + @Ignore("DB mock") public void testGetMatchingDisplaynames2() throws Exception { TestInit.init(); String search = "2";