mirror of
https://github.com/plan-player-analytics/Plan.git
synced 2025-03-13 17:38:03 +08:00
Improved performance of some PluginData objects
Fixed PluginConfigSectionHandler not creating new Enabled section properly for Factions & Towny
This commit is contained in:
parent
b897e3ac29
commit
17d15cfcd9
@ -43,4 +43,9 @@ public final class AnalysisContainer extends InspectContainer {
|
||||
public void addPlayerTableValues(String columnName, Map<UUID, ? extends Serializable> values) {
|
||||
playerTableValues.put(columnName, values);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isEmpty() {
|
||||
return playerTableValues.isEmpty() && super.isEmpty();
|
||||
}
|
||||
}
|
@ -49,14 +49,15 @@ public class InspectContainer {
|
||||
|
||||
public final String parseHtml() {
|
||||
StringBuilder html = new StringBuilder();
|
||||
html.append("<div class=\"body\">");
|
||||
|
||||
for (Map.Entry<String, String> entry : values.entrySet()) {
|
||||
html.append("<p>").append(entry.getKey()).append(": ").append(entry.getValue()).append("</p>");
|
||||
if (!values.isEmpty()) {
|
||||
html.append("<div class=\"body\">");
|
||||
for (Map.Entry<String, String> entry : values.entrySet()) {
|
||||
html.append("<p>").append(entry.getKey()).append(": ").append(entry.getValue()).append("</p>");
|
||||
}
|
||||
html.append("</div>");
|
||||
}
|
||||
|
||||
html.append("</div>");
|
||||
|
||||
for (Map.Entry<String, String> entry : this.html.entrySet()) {
|
||||
html.append(entry.getValue());
|
||||
}
|
||||
@ -72,7 +73,7 @@ public class InspectContainer {
|
||||
return html.isEmpty() && tables.isEmpty();
|
||||
}
|
||||
|
||||
public final boolean isEmpty() {
|
||||
public boolean isEmpty() {
|
||||
return values.isEmpty() && html.isEmpty() && tables.isEmpty();
|
||||
}
|
||||
}
|
@ -24,7 +24,10 @@ public class PluginConfigSectionHandler {
|
||||
public boolean hasSection(PluginData dataSource) {
|
||||
ConfigNode section = getPluginsSection();
|
||||
String pluginName = dataSource.getSourcePlugin();
|
||||
return section.getChildren().containsKey(pluginName);
|
||||
if (!section.getChildren().containsKey(pluginName)) {
|
||||
return false;
|
||||
}
|
||||
return section.getConfigNode(pluginName).getChildren().containsKey("Enabled");
|
||||
}
|
||||
|
||||
private ConfigNode getPluginsSection() {
|
||||
|
@ -74,11 +74,11 @@ public final class TableContainer {
|
||||
}
|
||||
|
||||
public String parseHeader() {
|
||||
StringBuilder header = new StringBuilder("<thead" + (color != null ? " bg-" + color : "") + "><tr>");
|
||||
StringBuilder header = new StringBuilder("<thead" + (color != null ? " class=\"bg-" + color + "\"" : "") + "><tr>");
|
||||
for (String title : this.header) {
|
||||
header.append("<th>").append(title).append("</th>");
|
||||
}
|
||||
header.append("</tr></thead>");
|
||||
return Html.TABLE_HEAD.parse(header.toString());
|
||||
return header.toString();
|
||||
}
|
||||
}
|
@ -25,6 +25,7 @@ public class DataCache extends SessionCache {
|
||||
private static final Map<UUID, Integer> firstSessionInformation = new HashMap<>();
|
||||
private final Database db;
|
||||
private final Map<UUID, String> playerNames;
|
||||
private final Map<String, UUID> uuids;
|
||||
private final Map<UUID, String> displayNames;
|
||||
|
||||
/**
|
||||
@ -38,6 +39,7 @@ public class DataCache extends SessionCache {
|
||||
|
||||
playerNames = new HashMap<>();
|
||||
displayNames = new HashMap<>();
|
||||
uuids = new HashMap<>();
|
||||
}
|
||||
|
||||
/**
|
||||
@ -48,13 +50,22 @@ public class DataCache extends SessionCache {
|
||||
* @param displayName DisplayName of the player.
|
||||
*/
|
||||
public void updateNames(UUID uuid, String playerName, String displayName) {
|
||||
playerNames.put(uuid, playerName);
|
||||
displayNames.put(uuid, displayName);
|
||||
if (playerName != null) {
|
||||
playerNames.put(uuid, playerName);
|
||||
uuids.put(playerName, uuid);
|
||||
}
|
||||
if (displayName != null) {
|
||||
displayNames.put(uuid, displayName);
|
||||
}
|
||||
}
|
||||
|
||||
public void cacheSavedNames() {
|
||||
try {
|
||||
playerNames.putAll(db.getUsersTable().getPlayerNames());
|
||||
Map<UUID, String> playerNames = db.getUsersTable().getPlayerNames();
|
||||
this.playerNames.putAll(playerNames);
|
||||
for (Map.Entry<UUID, String> entry : playerNames.entrySet()) {
|
||||
uuids.put(entry.getValue(), entry.getKey());
|
||||
}
|
||||
} catch (SQLException e) {
|
||||
Log.toLog(this.getClass().getName(), e);
|
||||
}
|
||||
@ -144,4 +155,8 @@ public class DataCache extends SessionCache {
|
||||
public Map<UUID, Integer> getFirstSessionMsgCounts() {
|
||||
return firstSessionInformation;
|
||||
}
|
||||
|
||||
public UUID getUUIDof(String playerName) {
|
||||
return uuids.get(playerName);
|
||||
}
|
||||
}
|
||||
|
@ -8,6 +8,7 @@ import com.djrapitops.plugin.task.RunnableFactory;
|
||||
import main.java.com.djrapitops.plan.Plan;
|
||||
import main.java.com.djrapitops.plan.Settings;
|
||||
import main.java.com.djrapitops.plan.data.AnalysisData;
|
||||
import main.java.com.djrapitops.plan.data.PlayerProfile;
|
||||
import main.java.com.djrapitops.plan.data.ServerProfile;
|
||||
import main.java.com.djrapitops.plan.data.additional.AnalysisContainer;
|
||||
import main.java.com.djrapitops.plan.data.additional.PluginData;
|
||||
@ -108,6 +109,11 @@ public class Analysis {
|
||||
Benchmark.start("Fetch Phase");
|
||||
ServerProfile profile = db.getServerProfile(Plan.getServerUUID());
|
||||
serverProfile = profile;
|
||||
|
||||
for (PlayerProfile player : profile.getPlayers()) {
|
||||
plugin.getDataCache().updateNames(player.getUuid(), player.getName(), null);
|
||||
}
|
||||
|
||||
long fetchPhaseLength = Benchmark.stop("Analysis", "Fetch Phase");
|
||||
|
||||
// TODO BanData (PluginData) effects
|
||||
|
@ -21,7 +21,7 @@ public class AnalysisPluginsTabContentCreator {
|
||||
|
||||
public static String[] createContent(Map<PluginData, AnalysisContainer> containers) {
|
||||
if (containers.isEmpty()) {
|
||||
return new String[]{"<li><a>No Compatible Plugins</a></li>", ""};
|
||||
return new String[]{"<li><a>No Data</a></li>", ""};
|
||||
}
|
||||
|
||||
List<PluginData> order = new ArrayList<>(containers.keySet());
|
||||
@ -77,9 +77,9 @@ public class AnalysisPluginsTabContentCreator {
|
||||
"<div class=\"header\">" +
|
||||
"<h2>")
|
||||
.append(pluginData.parsePluginIcon()).append(" ").append(pluginData.getSourcePlugin())
|
||||
.append("</h2></div>").append("<div class=\"body\">")
|
||||
.append("</h2></div>")
|
||||
.append(container.parseHtml())
|
||||
.append("</div></div></div>");
|
||||
.append("</div></div>");
|
||||
}
|
||||
|
||||
private static void appendTwoThirds(PluginData pluginData, AnalysisContainer container, StringBuilder generalTab) {
|
||||
@ -88,9 +88,9 @@ public class AnalysisPluginsTabContentCreator {
|
||||
"<div class=\"header\">" +
|
||||
"<h2>")
|
||||
.append(pluginData.parsePluginIcon()).append(" ").append(pluginData.getSourcePlugin())
|
||||
.append("</h2></div>").append("<div class=\"body\">")
|
||||
.append("</h2></div>")
|
||||
.append(container.parseHtml())
|
||||
.append("</div></div></div>");
|
||||
.append("</div></div>");
|
||||
}
|
||||
|
||||
private static void appendWhole(PluginData pluginData, AnalysisContainer container, StringBuilder generalTab) {
|
||||
|
@ -5,8 +5,10 @@
|
||||
*/
|
||||
package main.java.com.djrapitops.plan.utilities.uuid;
|
||||
|
||||
import com.djrapitops.plugin.api.Check;
|
||||
import com.djrapitops.plugin.api.utility.UUIDFetcher;
|
||||
import com.djrapitops.plugin.api.utility.log.Log;
|
||||
import main.java.com.djrapitops.plan.Plan;
|
||||
import main.java.com.djrapitops.plan.database.Database;
|
||||
import main.java.com.djrapitops.plan.utilities.MiscUtils;
|
||||
|
||||
@ -48,6 +50,12 @@ public class UUIDUtility {
|
||||
*/
|
||||
public static UUID getUUIDOf(String playerName, Database db) {
|
||||
UUID uuid = null;
|
||||
if (Check.isBukkitAvailable()) {
|
||||
UUID uuidOf = Plan.getInstance().getDataCache().getUUIDof(playerName);
|
||||
if (uuidOf != null) {
|
||||
return uuidOf;
|
||||
}
|
||||
}
|
||||
try {
|
||||
uuid = db.getUsersTable().getUuidOf(playerName);
|
||||
} catch (SQLException e) {
|
||||
|
@ -60,7 +60,7 @@ public class AdvancedAchievementsData extends PluginData {
|
||||
}
|
||||
|
||||
private long getTotal(Map<UUID, Integer> totalAchievements) {
|
||||
return MathUtils.sumLong(totalAchievements.values().stream().map(i -> i));
|
||||
return MathUtils.sumLong(totalAchievements.values().stream().map(i -> (long) i));
|
||||
}
|
||||
|
||||
private void refreshTotalAchievements() {
|
||||
|
@ -10,10 +10,7 @@ import main.java.com.djrapitops.plan.data.additional.ContainerSize;
|
||||
import main.java.com.djrapitops.plan.data.additional.InspectContainer;
|
||||
import main.java.com.djrapitops.plan.data.additional.PluginData;
|
||||
|
||||
import java.io.Serializable;
|
||||
import java.util.Collection;
|
||||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
import java.util.UUID;
|
||||
|
||||
/**
|
||||
@ -57,12 +54,6 @@ public class ASkyBlockData extends PluginData {
|
||||
analysisContainer.addValue(getWithIcon("Island World", "map-o", "green"), islandWorldName);
|
||||
analysisContainer.addValue(getWithIcon("Island Count", "street-view", "green"), islandCount);
|
||||
|
||||
Map<UUID, Serializable> islandLevels = new HashMap<>();
|
||||
for (UUID uuid : uuids) {
|
||||
islandLevels.put(uuid, api.hasIsland(uuid) ? api.getIslandLevel(uuid) : "-");
|
||||
}
|
||||
analysisContainer.addPlayerTableValues(getWithIcon("Island Level", "street-view"), islandLevels);
|
||||
|
||||
return analysisContainer;
|
||||
}
|
||||
}
|
@ -6,6 +6,7 @@ package com.djrapitops.pluginbridge.plan.factions;
|
||||
|
||||
import com.massivecraft.factions.entity.Faction;
|
||||
import com.massivecraft.factions.entity.MPlayer;
|
||||
import main.java.com.djrapitops.plan.Plan;
|
||||
import main.java.com.djrapitops.plan.data.PlayerProfile;
|
||||
import main.java.com.djrapitops.plan.data.ServerProfile;
|
||||
import main.java.com.djrapitops.plan.data.Session;
|
||||
@ -42,10 +43,15 @@ public class FactionAccordionCreator {
|
||||
int landCount = faction.getLandCount();
|
||||
|
||||
Set<UUID> members = new HashSet<>();
|
||||
for (MPlayer mPlayer : faction.getMPlayers()) {
|
||||
members.add(mPlayer.getUuid());
|
||||
List<MPlayer> mPlayers = faction.getMPlayers();
|
||||
int membersNum = mPlayers.size();
|
||||
for (MPlayer mPlayer : mPlayers) {
|
||||
UUID uuid = Plan.getInstance().getDataCache().getUUIDof(mPlayer.getName());
|
||||
if (uuid != null) {
|
||||
members.add(uuid);
|
||||
}
|
||||
}
|
||||
int membersNum = members.size();
|
||||
|
||||
|
||||
List<PlayerProfile> memberProfiles = players.stream().filter(p -> members.contains(p.getUniqueId())).collect(Collectors.toList());
|
||||
|
||||
|
@ -54,21 +54,23 @@ public class FactionsData extends PluginData {
|
||||
|
||||
analysisContainer.addValue(getWithIcon("Number of Factions", "flag", "deep-purple"), factions.size());
|
||||
|
||||
analysisContainer.addHtml("factionAccordion", FactionAccordionCreator.createAccordion(factions));
|
||||
if (!factions.isEmpty()) {
|
||||
analysisContainer.addHtml("factionAccordion", FactionAccordionCreator.createAccordion(factions));
|
||||
|
||||
Map<UUID, String> userFactions = new HashMap<>();
|
||||
for (UUID uuid : uuids) {
|
||||
MPlayer mPlayer = MPlayer.get(uuid);
|
||||
Map<UUID, String> userFactions = new HashMap<>();
|
||||
for (UUID uuid : uuids) {
|
||||
MPlayer mPlayer = MPlayer.get(uuid);
|
||||
|
||||
if (mPlayer.hasFaction()) {
|
||||
Faction faction = mPlayer.getFaction();
|
||||
String factionName = faction.isNone() ? "-" : faction.getName();
|
||||
if (mPlayer.hasFaction()) {
|
||||
Faction faction = mPlayer.getFaction();
|
||||
String factionName = faction.isNone() ? "-" : faction.getName();
|
||||
|
||||
userFactions.put(uuid, factionName);
|
||||
userFactions.put(uuid, factionName);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
analysisContainer.addPlayerTableValues(getWithIcon("Faction", "flag"), userFactions);
|
||||
analysisContainer.addPlayerTableValues(getWithIcon("Faction", "flag"), userFactions);
|
||||
}
|
||||
|
||||
return analysisContainer;
|
||||
}
|
||||
|
@ -45,7 +45,7 @@ public class GriefPreventionData extends PluginData {
|
||||
PlayerData data = dataStore.getPlayerData(uuid);
|
||||
int blocks = data.getAccruedClaimBlocks() + data.getBonusClaimBlocks() + dataStore.getGroupBonusBlocks(uuid);
|
||||
String softMuted = dataStore.isSoftMuted(uuid) ? "Yes" : "No";
|
||||
long totalArea = MathUtils.sumLong(claims.values().stream().map(i -> i));
|
||||
long totalArea = MathUtils.sumLong(claims.values().stream().map(i -> (long) i));
|
||||
|
||||
inspectContainer.addValue(getWithIcon("SoftMuted", "bell-slash-o", "deep-orange"), softMuted);
|
||||
inspectContainer.addValue(getWithIcon("Claims", "map-marker", "blue-grey"), claims.size());
|
||||
@ -68,7 +68,7 @@ public class GriefPreventionData extends PluginData {
|
||||
.filter(Objects::nonNull)
|
||||
.collect(Collectors.toMap(claim -> claim.ownerID, Claim::getArea));
|
||||
|
||||
long totalArea = MathUtils.sumLong(area.values().stream().map(i -> i));
|
||||
long totalArea = MathUtils.sumLong(area.values().stream().map(i -> (long) i));
|
||||
analysisContainer.addValue(getWithIcon("Total Claimed Area", "map-o", "blue-grey"), totalArea);
|
||||
|
||||
analysisContainer.addPlayerTableValues(getWithIcon("Claimed Area", "map-o"), area);
|
||||
|
@ -8,12 +8,12 @@ import com.palmergames.bukkit.towny.exceptions.TownyException;
|
||||
import com.palmergames.bukkit.towny.object.Coord;
|
||||
import com.palmergames.bukkit.towny.object.Resident;
|
||||
import com.palmergames.bukkit.towny.object.Town;
|
||||
import main.java.com.djrapitops.plan.Plan;
|
||||
import main.java.com.djrapitops.plan.data.PlayerProfile;
|
||||
import main.java.com.djrapitops.plan.data.ServerProfile;
|
||||
import main.java.com.djrapitops.plan.data.Session;
|
||||
import main.java.com.djrapitops.plan.utilities.analysis.Analysis;
|
||||
import main.java.com.djrapitops.plan.utilities.html.HtmlStructure;
|
||||
import main.java.com.djrapitops.plan.utilities.uuid.UUIDUtility;
|
||||
|
||||
import java.util.*;
|
||||
import java.util.stream.Collectors;
|
||||
@ -48,7 +48,10 @@ public class TownAccordionCreator {
|
||||
|
||||
Set<UUID> members = new HashSet<>();
|
||||
for (Resident resident : residents) {
|
||||
members.add(UUIDUtility.getUUIDOf(resident.getName()));
|
||||
UUID uuid = Plan.getInstance().getDataCache().getUUIDof(resident.getName());
|
||||
if (uuid != null) {
|
||||
members.add(uuid);
|
||||
}
|
||||
}
|
||||
|
||||
List<PlayerProfile> memberProfiles = players.stream().filter(p -> members.contains(p.getUniqueId())).collect(Collectors.toList());
|
||||
|
@ -4,6 +4,7 @@
|
||||
*/
|
||||
package com.djrapitops.pluginbridge.plan.towny;
|
||||
|
||||
import com.djrapitops.plugin.utilities.Verify;
|
||||
import com.palmergames.bukkit.towny.exceptions.TownyException;
|
||||
import com.palmergames.bukkit.towny.object.Coord;
|
||||
import com.palmergames.bukkit.towny.object.Resident;
|
||||
@ -16,7 +17,6 @@ import main.java.com.djrapitops.plan.data.additional.ContainerSize;
|
||||
import main.java.com.djrapitops.plan.data.additional.InspectContainer;
|
||||
import main.java.com.djrapitops.plan.data.additional.PluginData;
|
||||
import main.java.com.djrapitops.plan.utilities.html.Html;
|
||||
import main.java.com.djrapitops.plan.utilities.uuid.UUIDUtility;
|
||||
|
||||
import java.util.*;
|
||||
import java.util.stream.Collectors;
|
||||
@ -70,17 +70,21 @@ public class TownyData extends PluginData {
|
||||
public AnalysisContainer getServerData(Collection<UUID> collection, AnalysisContainer analysisContainer) throws Exception {
|
||||
List<Town> towns = getTopTowns();
|
||||
|
||||
Map<UUID, String> userTowns = new HashMap<>();
|
||||
for (Town town : towns) {
|
||||
String townName = town.getName();
|
||||
town.getResidents().stream()
|
||||
.map(Resident::getName)
|
||||
.map(UUIDUtility::getUUIDOf)
|
||||
.forEach(uuid -> userTowns.put(uuid, townName));
|
||||
}
|
||||
analysisContainer.addPlayerTableValues(getWithIcon("Town", "bank"), userTowns);
|
||||
if (!towns.isEmpty()) {
|
||||
analysisContainer.addValue(getWithIcon("Number of Towns", "bank", "brown"), towns.size());
|
||||
|
||||
analysisContainer.addHtml("townAccordion", TownAccordionCreator.createAccordion(towns));
|
||||
Map<UUID, String> userTowns = new HashMap<>();
|
||||
for (Town town : towns) {
|
||||
String townName = town.getName();
|
||||
town.getResidents().stream()
|
||||
.map(Resident::getName)
|
||||
.map(name -> Plan.getInstance().getDataCache().getUUIDof(name))
|
||||
.filter(Verify::notNull)
|
||||
.forEach(uuid -> userTowns.put(uuid, townName));
|
||||
}
|
||||
analysisContainer.addPlayerTableValues(getWithIcon("Town", "bank"), userTowns);
|
||||
analysisContainer.addHtml("townAccordion", TownAccordionCreator.createAccordion(towns));
|
||||
}
|
||||
|
||||
return analysisContainer;
|
||||
}
|
||||
|
@ -4,7 +4,6 @@ import com.djrapitops.pluginbridge.plan.Hook;
|
||||
import main.java.com.djrapitops.plan.api.API;
|
||||
import main.java.com.djrapitops.plan.data.additional.HookHandler;
|
||||
import net.milkbowl.vault.economy.Economy;
|
||||
import net.milkbowl.vault.permission.Permission;
|
||||
|
||||
import static org.bukkit.Bukkit.getServer;
|
||||
|
||||
@ -34,11 +33,11 @@ public class VaultHook extends Hook {
|
||||
return;
|
||||
}
|
||||
|
||||
try {
|
||||
Permission permSys = getServer().getServicesManager().getRegistration(Permission.class).getProvider();
|
||||
addPluginDataSource(new VaultPermData(permSys));
|
||||
} catch (NoSuchFieldError | NoSuchMethodError | Exception e) {
|
||||
}
|
||||
// try {
|
||||
// Permission permSys = getServer().getServicesManager().getRegistration(Permission.class).getProvider();
|
||||
// addPluginDataSource(new VaultPermData(permSys));
|
||||
// } catch (NoSuchFieldError | NoSuchMethodError | Exception e) {
|
||||
// }
|
||||
|
||||
try {
|
||||
Economy econ = getServer().getServicesManager().getRegistration(Economy.class).getProvider();
|
||||
|
Loading…
Reference in New Issue
Block a user