Name Cache & Fixed PluginBridge

This commit is contained in:
Rsl1122 2017-09-07 18:43:09 +03:00
parent 8fbb3679dd
commit 389a87a306
38 changed files with 192 additions and 322 deletions

View File

@ -1,5 +1,6 @@
package main.java.com.djrapitops.plan.data.additional;
import main.java.com.djrapitops.plan.Plan;
import main.java.com.djrapitops.plan.utilities.html.Html;
import org.apache.commons.lang3.builder.ToStringBuilder;
@ -321,4 +322,12 @@ public abstract class PluginData {
.append("suffix", suffix)
.toString();
}
protected Set<UUID> getUUIDsBeingAnalyzed() {
return Plan.getInstance().getDataCache().getUuids();
}
protected String getNameOf(UUID uuid) {
return Plan.getInstance().getDataCache().getName(uuid);
}
}

View File

@ -345,7 +345,7 @@ public class UsersTable extends UserIDTable {
try {
statement = prepareStatement(Select.all(tableName)
.toString());
statement.setFetchSize(5000);
statement.setFetchSize(20000);
set = statement.executeQuery();
Map<UUID, UserInfo> users = new HashMap<>();
while (set.next()) {
@ -392,7 +392,7 @@ public class UsersTable extends UserIDTable {
try {
statement = prepareStatement(Select.from(tableName, columnUUID, columnTimesKicked)
.toString());
statement.setFetchSize(5000);
statement.setFetchSize(20000);
set = statement.executeQuery();
Map<UUID, Integer> timesKicked = new HashMap<>();
while (set.next()) {
@ -407,4 +407,26 @@ public class UsersTable extends UserIDTable {
close(set, statement);
}
}
public Map<UUID, String> getPlayerNames() throws SQLException {
PreparedStatement statement = null;
ResultSet set = null;
try {
statement = prepareStatement(Select.from(tableName, columnUUID, columnName)
.toString());
statement.setFetchSize(20000);
set = statement.executeQuery();
Map<UUID, String> names = new HashMap<>();
while (set.next()) {
UUID uuid = UUID.fromString(set.getString(columnUUID));
String name = set.getString(columnName);
names.put(uuid, name);
}
return names;
} finally {
endTransaction(statement);
close(set, statement);
}
}
}

View File

@ -5,10 +5,7 @@ import main.java.com.djrapitops.plan.Plan;
import main.java.com.djrapitops.plan.database.Database;
import java.sql.SQLException;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.UUID;
import java.util.*;
/**
* This Class contains the Cache.
@ -55,6 +52,14 @@ public class DataCache extends SessionCache {
displayNames.put(uuid, displayName);
}
public void cacheSavedNames() {
try {
playerNames.putAll(db.getUsersTable().getPlayerNames());
} catch (SQLException e) {
Log.toLog(this.getClass().getName(), e);
}
}
/**
* Used to get the player name in the cache.
*
@ -119,4 +124,8 @@ public class DataCache extends SessionCache {
public int getFirstSessionMsgCount(UUID uuid) {
return firstSessionInformation.getOrDefault(uuid, 0);
}
public Set<UUID> getUuids() {
return playerNames.keySet();
}
}

View File

@ -86,6 +86,7 @@ public class InformationManager {
}
public void refreshAnalysis() {
plugin.getDataCache().cacheSavedNames();
analysis.runAnalysis(this);
}

View File

@ -3,11 +3,13 @@ package main.java.com.djrapitops.plan.utilities.html;
import main.java.com.djrapitops.plan.Plan;
import main.java.com.djrapitops.plan.Settings;
import main.java.com.djrapitops.plan.systems.webserver.WebServer;
import main.java.com.djrapitops.plan.utilities.MiscUtils;
import org.apache.commons.lang3.StringUtils;
import org.apache.commons.lang3.text.StrSubstitutor;
import java.io.Serializable;
import java.util.Map;
import java.util.UUID;
/**
* @author Rsl1122
@ -79,7 +81,9 @@ public class HtmlUtils {
/**
* @param playerName
* @return
* @deprecated Use getRelativeInspectUrl instead.
*/
@Deprecated
public static String getInspectUrl(String playerName) {
String ip = getIP();
return "//" + ip + "/player/" + playerName.replace(" ", "%20").replace(".", "%2E");
@ -89,12 +93,16 @@ public class HtmlUtils {
return "../player/" + playerName;
}
public static String getRelativeInspectUrl(UUID uuid) {
return getRelativeInspectUrl(Plan.getInstance().getDataCache().getName(uuid));
}
/**
* @param string
* @return
*/
public static String removeXSS(String string) {
return StringUtils.removeAll(string,"(<!--)|(-->)|(</?script>)");
return StringUtils.removeAll(string, "(<!--)|(-->)|(</?script>)");
}
/**

View File

@ -52,7 +52,7 @@ public class WorldPieCreator {
Map<String, GMTimes> gmTimesMap = worldTimes.getWorldTimes();
if (gmTimesMap.isEmpty()) {
return "[{[]}]";
return "[]";
}
int size = gmTimesMap.size();
drilldownBuilder.append("[");

View File

@ -1,13 +0,0 @@
<component name="libraryTable">
<library name="Maven: com.djrapitops:Plan:3.7.0">
<CLASSES>
<root url="jar://$PROJECT_DIR$/../Plan/target/Plan.jar!/" />
</CLASSES>
<JAVADOC>
<root url="jar://$MAVEN_REPOSITORY$/com/djrapitops/Plan/3.7.0/Plan-3.7.0-javadoc.jar!/" />
</JAVADOC>
<SOURCES>
<root url="jar://$MAVEN_REPOSITORY$/com/djrapitops/Plan/3.7.0/Plan-3.7.0-sources.jar!/" />
</SOURCES>
</library>
</component>

View File

@ -4,17 +4,9 @@
<modelVersion>4.0.0</modelVersion>
<groupId>com.djrapitops</groupId>
<artifactId>PlanPluginBridge</artifactId>
<version>3.7.0</version>
<version>4.0.0</version>
<packaging>jar</packaging>
<repositories>
<repository>
<id>plan-repo</id>
<url>http://repo.fuzzlemann.de/artifactory/libs-release/</url>
</repository>
<repository>
<id>plan-snapshot-repo</id>
<url>http://repo.fuzzlemann.de/artifactory/libs-snapshot/</url>
</repository>
<repository>
<id>vault-repo</id>
<url>http://nexus.hc.to/content/repositories/pub_releases</url>
@ -32,7 +24,7 @@
<dependency>
<groupId>com.djrapitops</groupId>
<artifactId>Plan</artifactId>
<version>3.7.0</version>
<version>4.0.0</version>
<scope>provided</scope>
</dependency>
<dependency>

View File

@ -1,7 +1,6 @@
package com.djrapitops.pluginbridge.plan;
import main.java.com.djrapitops.plan.data.additional.HookHandler;
import main.java.com.djrapitops.plan.data.cache.DataCacheHandler;
/**
* @author Rsl1122
@ -23,7 +22,7 @@ public class Bridge {
try {
String className = "com.djrapitops.pluginbridge.plan." + pluginName + "Hook";
Class<Hook> clazz = (Class<Hook>) Hook.class.forName(className);
clazz.getConstructor(DataCacheHandler.class).newInstance(handler);
clazz.getConstructor(HookHandler.class).newInstance(handler);
} catch (Exception | NoClassDefFoundError ignore) {
}
}

View File

@ -5,7 +5,6 @@
*/
package com.djrapitops.pluginbridge.plan;
import main.java.com.djrapitops.plan.data.UserData;
import org.bukkit.Location;
import org.bukkit.OfflinePlayer;
import org.bukkit.entity.Player;
@ -19,34 +18,32 @@ import java.util.UUID;
*/
public class FakeOfflinePlayer implements OfflinePlayer {
private final UserData data;
private final UUID uuid;
private final String name;
public FakeOfflinePlayer(UserData data) {
this.data = data;
public FakeOfflinePlayer(UUID uuid, String name) {
this.uuid = uuid;
this.name = name;
}
@Override
public boolean isOnline() {
return data.isOnline();
return false;
}
@Override
public String getName() {
String name = data.getName();
if (name == null) {
name = "null";
}
return name;
}
@Override
public UUID getUniqueId() {
return data.getUuid();
return uuid;
}
@Override
public boolean isBanned() {
return data.isBanned();
return false;
}
@Override
@ -66,12 +63,12 @@ public class FakeOfflinePlayer implements OfflinePlayer {
@Override
public long getFirstPlayed() {
return data.getRegistered();
return 0L;
}
@Override
public long getLastPlayed() {
return data.getLastPlayed();
return 0L;
}
@Override
@ -86,7 +83,7 @@ public class FakeOfflinePlayer implements OfflinePlayer {
@Override
public boolean isOp() {
return data.isOp();
return false;
}
@Override

View File

@ -2,14 +2,14 @@ package com.djrapitops.pluginbridge.plan.advancedachievements;
import com.hm.achievement.api.AdvancedAchievementsAPI;
import main.java.com.djrapitops.plan.Plan;
import main.java.com.djrapitops.plan.data.UserData;
import main.java.com.djrapitops.plan.data.additional.AnalysisType;
import main.java.com.djrapitops.plan.data.additional.PluginData;
import main.java.com.djrapitops.plan.ui.html.Html;
import main.java.com.djrapitops.plan.utilities.HtmlUtils;
import main.java.com.djrapitops.plan.utilities.html.Html;
import main.java.com.djrapitops.plan.utilities.html.HtmlUtils;
import java.io.Serializable;
import java.util.Map;
import java.util.Set;
import java.util.UUID;
/**
@ -48,38 +48,34 @@ public class AdvancedAchievementsTable extends PluginData {
@Override
public String getHtmlReplaceValue(String modifierPrefix, UUID uuidUnused) {
StringBuilder html = new StringBuilder();
Map<UUID, UserData> cachedUserData = Plan.getPlanAPI().getInspectCachedUserDataMap();
if (cachedUserData.isEmpty()) {
Set<UUID> users = Plan.getInstance().getDataCache().getUuids();
if (users.isEmpty()) {
html.append(Html.TABLELINE_2.parse("No Players.", ""));
} else if (aaAPI.getAdvancedAchievementsVersionCode() >= 520) {
appendTableLinesForV520Plus(cachedUserData, html);
appendTableLinesForV520Plus(users, html);
} else {
appendTableLinesForLessThanV520(cachedUserData, html);
appendTableLinesForLessThanV520(users, html);
}
return parseContainer("", html.toString());
}
private void appendTableLinesForLessThanV520(Map<UUID, UserData> cachedUserData, StringBuilder html) {
cachedUserData.values().forEach(uData -> {
String inspectUrl = HtmlUtils.getRelativeInspectUrl(uData.getName());
int achievements = aaAPI.getPlayerTotalAchievements(uData.getUuid());
html.append(Html.TABLELINE_2.parse(Html.LINK.parse(inspectUrl, uData.getName()), achievements));
private void appendTableLinesForLessThanV520(Set<UUID> users, StringBuilder html) {
users.forEach(uuid -> {
String name = super.getNameOf(uuid);
String inspectUrl = HtmlUtils.getRelativeInspectUrl(name);
int achievements = aaAPI.getPlayerTotalAchievements(uuid);
html.append(Html.TABLELINE_2.parse(Html.LINK.parse(inspectUrl, name), achievements));
});
}
private void appendTableLinesForV520Plus(Map<UUID, UserData> cachedUserData, StringBuilder html) {
private void appendTableLinesForV520Plus(Set<UUID> users, StringBuilder html) {
Map<UUID, Integer> achievementsMap = aaAPI.getPlayersTotalAchievements();
for (Map.Entry<UUID, Integer> entry : achievementsMap.entrySet()) {
UUID uuid = entry.getKey();
int achievements = entry.getValue();
UserData uData = cachedUserData.get(uuid);
if (uData == null) {
continue;
}
String inspectUrl = HtmlUtils.getInspectUrl(uData.getName());
html.append(Html.TABLELINE_2.parse(Html.LINK.parse(inspectUrl, uData.getName()), achievements));
String name = getNameOf(uuid);
String inspectUrl = HtmlUtils.getRelativeInspectUrl(name);
html.append(Html.TABLELINE_2.parse(Html.LINK.parse(inspectUrl, name), achievements));
}
}

View File

@ -4,7 +4,7 @@ import com.earth2me.essentials.Essentials;
import com.earth2me.essentials.Warps;
import main.java.com.djrapitops.plan.data.additional.AnalysisType;
import main.java.com.djrapitops.plan.data.additional.PluginData;
import main.java.com.djrapitops.plan.ui.html.Html;
import main.java.com.djrapitops.plan.utilities.html.Html;
import java.io.Serializable;
import java.util.*;

View File

@ -6,9 +6,9 @@ import com.massivecraft.factions.entity.MPlayer;
import main.java.com.djrapitops.plan.Settings;
import main.java.com.djrapitops.plan.data.additional.AnalysisType;
import main.java.com.djrapitops.plan.data.additional.PluginData;
import main.java.com.djrapitops.plan.ui.html.Html;
import main.java.com.djrapitops.plan.utilities.FormatUtils;
import main.java.com.djrapitops.plan.utilities.HtmlUtils;
import main.java.com.djrapitops.plan.utilities.html.Html;
import main.java.com.djrapitops.plan.utilities.html.HtmlUtils;
import java.io.Serializable;
import java.util.ArrayList;
@ -73,7 +73,7 @@ public class FactionsTable extends PluginData {
if (f != null) {
MPlayer fLeader = f.getLeader();
String leader = fLeader != null ? fLeader.getNameAndSomething("", "") : "No Leader";
String leaderPage = Html.LINK.parse(HtmlUtils.getInspectUrl(leader), leader);
String leaderPage = Html.LINK.parse(HtmlUtils.getRelativeInspectUrl(leader), leader);
html.append(Html.TABLELINE_4.parse(
f.getName(),
FormatUtils.cutDecimals(f.getPower()),

View File

@ -3,7 +3,7 @@ package com.djrapitops.pluginbridge.plan.griefprevention;
import com.djrapitops.plugin.utilities.FormattingUtils;
import com.djrapitops.plugin.utilities.Verify;
import main.java.com.djrapitops.plan.data.additional.PluginData;
import main.java.com.djrapitops.plan.ui.html.Html;
import main.java.com.djrapitops.plan.utilities.html.Html;
import me.ryanhamshire.GriefPrevention.DataStore;
import java.io.Serializable;

View File

@ -1,58 +0,0 @@
package com.djrapitops.pluginbridge.plan.importing;
import main.java.com.djrapitops.plan.data.UserData;
import main.java.com.djrapitops.plan.data.handling.importing.Importer;
import main.java.com.djrapitops.plan.data.handling.info.HandlingInfo;
import main.java.com.djrapitops.plan.data.handling.info.InfoType;
import me.edge209.OnTime.OnTimeAPI;
import org.bukkit.OfflinePlayer;
import java.util.UUID;
import static org.bukkit.Bukkit.getOfflinePlayer;
/**
* Class responsible for importing data from OnTime plugin.
*
* Imports playtime
*
* @author Rsl1122
* @since 3.2.0
*/
public class OnTimeImporter extends Importer {
/**
* Constructor.
*/
public OnTimeImporter() {
super.setInfo("Imports playtime from OnTime & resets GMTimes to survival");
}
/**
* Imports playtime from Ontime.
*
* Resets GameMode times to survival because it is playtime dependent.
*
* @param uuid UUID of the player
* @return HandlingInfo object
*/
@Override
public HandlingInfo importData(UUID uuid, String... args) {
OfflinePlayer p = getOfflinePlayer(uuid);
Long playTime = OnTimeAPI.getPlayerTimeData(p.getName(), OnTimeAPI.data.TOTALPLAY);
return new HandlingInfo(uuid, InfoType.OTHER, 0L) {
@Override
public boolean process(UserData uData) {
if (uuid != uData.getUuid()) {
return false;
}
if (playTime > uData.getPlayTime()) {
uData.setPlayTime(playTime);
uData.getGmTimes().resetTimes(playTime);
}
return true;
}
};
}
}

View File

@ -4,9 +4,9 @@ import com.gamingmesh.jobs.Jobs;
import com.gamingmesh.jobs.dao.JobsDAOData;
import main.java.com.djrapitops.plan.data.additional.AnalysisType;
import main.java.com.djrapitops.plan.data.additional.PluginData;
import main.java.com.djrapitops.plan.ui.html.Html;
import main.java.com.djrapitops.plan.utilities.FormatUtils;
import main.java.com.djrapitops.plan.utilities.analysis.MathUtils;
import main.java.com.djrapitops.plan.utilities.html.Html;
import java.io.Serializable;
import java.util.*;

View File

@ -3,7 +3,7 @@ package com.djrapitops.pluginbridge.plan.jobs;
import com.gamingmesh.jobs.Jobs;
import com.gamingmesh.jobs.dao.JobsDAOData;
import main.java.com.djrapitops.plan.data.additional.PluginData;
import main.java.com.djrapitops.plan.ui.html.Html;
import main.java.com.djrapitops.plan.utilities.html.Html;
import java.io.Serializable;
import java.util.List;

View File

@ -1,17 +1,14 @@
package com.djrapitops.pluginbridge.plan.litebans;
import main.java.com.djrapitops.plan.Plan;
import main.java.com.djrapitops.plan.data.UserData;
import main.java.com.djrapitops.plan.data.additional.AnalysisType;
import main.java.com.djrapitops.plan.data.additional.PluginData;
import main.java.com.djrapitops.plan.ui.html.Html;
import main.java.com.djrapitops.plan.utilities.FormatUtils;
import main.java.com.djrapitops.plan.utilities.HtmlUtils;
import main.java.com.djrapitops.plan.utilities.html.Html;
import main.java.com.djrapitops.plan.utilities.html.HtmlUtils;
import java.io.Serializable;
import java.sql.SQLException;
import java.util.List;
import java.util.Map;
import java.util.UUID;
/**
@ -54,20 +51,15 @@ public class LiteBansBansTable extends PluginData {
StringBuilder html = new StringBuilder();
try {
List<BanObject> bans = db.getBans();
Map<UUID, UserData> users = Plan.getPlanAPI().getInspectCachedUserDataMap();
for (BanObject ban : bans) {
UUID uuid = ban.getUuid();
UserData userData = users.get(uuid);
if (userData == null) {
continue;
}
String name = userData.getName();
String name = getNameOf(uuid);
String tableLine = "<tr><td>REPLACE0</td><td>REPLACE1</td><td>REPLACE2</td><td sorttable_customkey=\"REPLACE3\">REPLACE4</td></tr>";
long expiry = ban.getExpiry();
String expires = expiry <= 0 ? "Never" : FormatUtils.formatTimeStampSecond(expiry);
html.append(tableLine
.replace("REPLACE0", Html.LINK.parse(HtmlUtils.getInspectUrl(name), name))
.replace("REPLACE1", Html.LINK.parse(HtmlUtils.getInspectUrl(ban.getBannedBy()), ban.getBannedBy()))
.replace("REPLACE0", Html.LINK.parse(HtmlUtils.getRelativeInspectUrl(name), name))
.replace("REPLACE1", Html.LINK.parse(HtmlUtils.getRelativeInspectUrl(ban.getBannedBy()), ban.getBannedBy()))
.replace("REPLACE2", ban.getReason())
.replace("REPLACE3", expiry <= 0 ? "0" : Long.toString(expiry))
.replace("REPLACE4", expires

View File

@ -1,6 +1,7 @@
package com.djrapitops.pluginbridge.plan.litebans;
import litebans.api.Database;
import main.java.com.djrapitops.plan.api.exceptions.DBCreateTableException;
import main.java.com.djrapitops.plan.database.tables.Table;
import java.sql.PreparedStatement;
@ -66,13 +67,8 @@ public class LiteBansDatabaseQueries extends Table {
}
}
/**
* @return false
* @deprecated Not in use.
*/
@Override
@Deprecated
public boolean createTable() {
return false;
public void createTable() throws DBCreateTableException {
throw new IllegalStateException("Not Supposed to be called.");
}
}

View File

@ -1,9 +1,9 @@
package com.djrapitops.pluginbridge.plan.litebans;
import main.java.com.djrapitops.plan.data.additional.PluginData;
import main.java.com.djrapitops.plan.ui.html.Html;
import main.java.com.djrapitops.plan.utilities.FormatUtils;
import main.java.com.djrapitops.plan.utilities.HtmlUtils;
import main.java.com.djrapitops.plan.utilities.html.Html;
import main.java.com.djrapitops.plan.utilities.html.HtmlUtils;
import java.io.Serializable;
import java.sql.SQLException;
@ -58,7 +58,7 @@ public class LiteBansInspectBansTable extends PluginData {
html.append(Html.TABLELINE_3_CUSTOMKEY_1.parse(
expiry <= 0 ? "0" : Long.toString(expiry),
expires,
Html.LINK.parse(HtmlUtils.getInspectUrl(ban.getBannedBy()), ban.getBannedBy()),
Html.LINK.parse("." + HtmlUtils.getRelativeInspectUrl(ban.getBannedBy()), ban.getBannedBy()),
ban.getReason())
);
}

View File

@ -6,9 +6,9 @@ import com.gmail.nossr50.datatypes.skills.SkillType;
import com.gmail.nossr50.util.player.UserManager;
import main.java.com.djrapitops.plan.data.additional.AnalysisType;
import main.java.com.djrapitops.plan.data.additional.PluginData;
import main.java.com.djrapitops.plan.ui.html.Html;
import main.java.com.djrapitops.plan.utilities.FormatUtils;
import main.java.com.djrapitops.plan.utilities.analysis.MathUtils;
import main.java.com.djrapitops.plan.utilities.html.Html;
import org.apache.commons.lang.StringUtils;
import java.io.Serializable;

View File

@ -9,9 +9,8 @@ import com.gmail.nossr50.datatypes.player.McMMOPlayer;
import com.gmail.nossr50.datatypes.player.PlayerProfile;
import com.gmail.nossr50.datatypes.skills.SkillType;
import com.gmail.nossr50.util.player.UserManager;
import main.java.com.djrapitops.plan.Plan;
import main.java.com.djrapitops.plan.data.additional.PluginData;
import main.java.com.djrapitops.plan.ui.html.Html;
import main.java.com.djrapitops.plan.utilities.html.Html;
import org.apache.commons.lang.StringUtils;
import java.io.Serializable;
@ -25,12 +24,12 @@ import static org.bukkit.Bukkit.getOfflinePlayer;
/**
* PluginData class for McMMO-plugin.
*
* <p>
* Registered to the plugin by McmmoHook
*
* @author Rsl1122
* @since 3.2.1
* @see McmmoHook
* @since 3.2.1
*/
public class McmmoInspectSkillTable extends PluginData {
@ -49,9 +48,6 @@ public class McmmoInspectSkillTable extends PluginData {
@Override
public String getHtmlReplaceValue(String modifierPrefix, UUID uuid) {
if (!Plan.getInstance().getHandler().getDataCache().containsKey(uuid)) {
return parseContainer("", Html.TABLELINE_2.parse("User not known/online", ""));
}
McMMOPlayer user = UserManager.getOfflinePlayer(getOfflinePlayer(uuid));
if (user == null) {
return parseContainer("", Html.TABLELINE_2.parse("User not known/online", ""));

View File

@ -1,7 +1,5 @@
package com.djrapitops.pluginbridge.plan.ontime;
import main.java.com.djrapitops.plan.Plan;
import main.java.com.djrapitops.plan.data.UserData;
import main.java.com.djrapitops.plan.data.additional.AnalysisType;
import main.java.com.djrapitops.plan.data.additional.PluginData;
import me.edge209.OnTime.OnTimeAPI;
@ -34,11 +32,7 @@ public class OntimeRefer extends PluginData {
@Override
public String getHtmlReplaceValue(String modifierPrefix, UUID uuid) {
UserData data = Plan.getPlanAPI().getInspectCachedUserDataMap().get(uuid);
if (data == null) {
return parseContainer(modifierPrefix, "No Referrals.");
}
String name = data.getName();
String name = getNameOf(uuid);
long referTotal = OnTimeAPI.getPlayerTimeData(name, OnTimeAPI.data.TOTALREFER);
if (referTotal == -1) {
return parseContainer(modifierPrefix, "No Referrals.");
@ -48,11 +42,7 @@ public class OntimeRefer extends PluginData {
@Override
public Serializable getValue(UUID uuid) {
UserData data = Plan.getPlanAPI().getInspectCachedUserDataMap().get(uuid);
if (data == null) {
return -1L;
}
String name = data.getName();
String name = getNameOf(uuid);
long referTotal = OnTimeAPI.getPlayerTimeData(name, OnTimeAPI.data.TOTALREFER);
if (referTotal == -1) {
return -1L;

View File

@ -1,7 +1,5 @@
package com.djrapitops.pluginbridge.plan.ontime;
import main.java.com.djrapitops.plan.Plan;
import main.java.com.djrapitops.plan.data.UserData;
import main.java.com.djrapitops.plan.data.additional.AnalysisType;
import main.java.com.djrapitops.plan.data.additional.PluginData;
import me.edge209.OnTime.OnTimeAPI;
@ -34,11 +32,7 @@ public class OntimeReferMonth extends PluginData {
@Override
public String getHtmlReplaceValue(String modifierPrefix, UUID uuid) {
UserData data = Plan.getPlanAPI().getInspectCachedUserDataMap().get(uuid);
if (data == null) {
return parseContainer(modifierPrefix, "No Referrals.");
}
String name = data.getName();
String name = getNameOf(uuid);
long referTotal = OnTimeAPI.getPlayerTimeData(name, OnTimeAPI.data.MONTHREFER);
if (referTotal == -1) {
return parseContainer(modifierPrefix, "No Referrals.");
@ -48,11 +42,7 @@ public class OntimeReferMonth extends PluginData {
@Override
public Serializable getValue(UUID uuid) {
UserData data = Plan.getPlanAPI().getInspectCachedUserDataMap().get(uuid);
if (data == null) {
return -1L;
}
String name = data.getName();
String name = getNameOf(uuid);
long referTotal = OnTimeAPI.getPlayerTimeData(name, OnTimeAPI.data.MONTHREFER);
if (referTotal == -1) {
return -1L;

View File

@ -1,7 +1,5 @@
package com.djrapitops.pluginbridge.plan.ontime;
import main.java.com.djrapitops.plan.Plan;
import main.java.com.djrapitops.plan.data.UserData;
import main.java.com.djrapitops.plan.data.additional.AnalysisType;
import main.java.com.djrapitops.plan.data.additional.PluginData;
import me.edge209.OnTime.OnTimeAPI;
@ -34,11 +32,7 @@ public class OntimeReferWeek extends PluginData {
@Override
public String getHtmlReplaceValue(String modifierPrefix, UUID uuid) {
UserData data = Plan.getPlanAPI().getInspectCachedUserDataMap().get(uuid);
if (data == null) {
return parseContainer(modifierPrefix, "No Referrals.");
}
String name = data.getName();
String name = getNameOf(uuid);
long referTotal = OnTimeAPI.getPlayerTimeData(name, OnTimeAPI.data.WEEKREFER);
if (referTotal == -1) {
return parseContainer(modifierPrefix, "No Referrals.");
@ -48,11 +42,7 @@ public class OntimeReferWeek extends PluginData {
@Override
public Serializable getValue(UUID uuid) {
UserData data = Plan.getPlanAPI().getInspectCachedUserDataMap().get(uuid);
if (data == null) {
return -1L;
}
String name = data.getName();
String name = getNameOf(uuid);
long referTotal = OnTimeAPI.getPlayerTimeData(name, OnTimeAPI.data.WEEKREFER);
if (referTotal == -1) {
return -1L;

View File

@ -1,7 +1,5 @@
package com.djrapitops.pluginbridge.plan.ontime;
import main.java.com.djrapitops.plan.Plan;
import main.java.com.djrapitops.plan.data.UserData;
import main.java.com.djrapitops.plan.data.additional.AnalysisType;
import main.java.com.djrapitops.plan.data.additional.PluginData;
import me.edge209.OnTime.OnTimeAPI;
@ -34,11 +32,7 @@ public class OntimeVotes extends PluginData {
@Override
public String getHtmlReplaceValue(String modifierPrefix, UUID uuid) {
UserData data = Plan.getPlanAPI().getInspectCachedUserDataMap().get(uuid);
if (data == null) {
return parseContainer(modifierPrefix, "No votes.");
}
String name = data.getName();
String name = getNameOf(uuid);
long votesTotal = OnTimeAPI.getPlayerTimeData(name, OnTimeAPI.data.TOTALVOTE);
if (votesTotal == -1) {
return parseContainer(modifierPrefix, "No votes.");
@ -48,11 +42,7 @@ public class OntimeVotes extends PluginData {
@Override
public Serializable getValue(UUID uuid) {
UserData data = Plan.getPlanAPI().getInspectCachedUserDataMap().get(uuid);
if (data == null) {
return -1L;
}
String name = data.getName();
String name = getNameOf(uuid);
long votesTotal = OnTimeAPI.getPlayerTimeData(name, OnTimeAPI.data.TOTALVOTE);
if (votesTotal == -1) {
return -1L;

View File

@ -1,7 +1,5 @@
package com.djrapitops.pluginbridge.plan.ontime;
import main.java.com.djrapitops.plan.Plan;
import main.java.com.djrapitops.plan.data.UserData;
import main.java.com.djrapitops.plan.data.additional.AnalysisType;
import main.java.com.djrapitops.plan.data.additional.PluginData;
import me.edge209.OnTime.OnTimeAPI;
@ -34,11 +32,7 @@ public class OntimeVotesMonth extends PluginData {
@Override
public String getHtmlReplaceValue(String modifierPrefix, UUID uuid) {
UserData data = Plan.getPlanAPI().getInspectCachedUserDataMap().get(uuid);
if (data == null) {
return parseContainer(modifierPrefix, "No votes.");
}
String name = data.getName();
String name = getNameOf(uuid);
long votesTotal = OnTimeAPI.getPlayerTimeData(name, OnTimeAPI.data.MONTHVOTE);
if (votesTotal == -1) {
return parseContainer(modifierPrefix, "No votes.");
@ -48,11 +42,7 @@ public class OntimeVotesMonth extends PluginData {
@Override
public Serializable getValue(UUID uuid) {
UserData data = Plan.getPlanAPI().getInspectCachedUserDataMap().get(uuid);
if (data == null) {
return -1L;
}
String name = data.getName();
String name = getNameOf(uuid);
long votesTotal = OnTimeAPI.getPlayerTimeData(name, OnTimeAPI.data.MONTHVOTE);
if (votesTotal == -1) {
return -1L;

View File

@ -1,7 +1,5 @@
package com.djrapitops.pluginbridge.plan.ontime;
import main.java.com.djrapitops.plan.Plan;
import main.java.com.djrapitops.plan.data.UserData;
import main.java.com.djrapitops.plan.data.additional.AnalysisType;
import main.java.com.djrapitops.plan.data.additional.PluginData;
import me.edge209.OnTime.OnTimeAPI;
@ -34,11 +32,7 @@ public class OntimeVotesWeek extends PluginData {
@Override
public String getHtmlReplaceValue(String modifierPrefix, UUID uuid) {
UserData data = Plan.getPlanAPI().getInspectCachedUserDataMap().get(uuid);
if (data == null) {
return parseContainer(modifierPrefix, "No votes.");
}
String name = data.getName();
String name = getNameOf(uuid);
long votesTotal = OnTimeAPI.getPlayerTimeData(name, OnTimeAPI.data.WEEKVOTE);
if (votesTotal == -1) {
return parseContainer(modifierPrefix, "No votes.");
@ -48,11 +42,7 @@ public class OntimeVotesWeek extends PluginData {
@Override
public Serializable getValue(UUID uuid) {
UserData data = Plan.getPlanAPI().getInspectCachedUserDataMap().get(uuid);
if (data == null) {
return -1L;
}
String name = data.getName();
String name = getNameOf(uuid);
long votesTotal = OnTimeAPI.getPlayerTimeData(name, OnTimeAPI.data.WEEKVOTE);
if (votesTotal == -1) {
return -1L;

View File

@ -6,14 +6,14 @@
package com.djrapitops.pluginbridge.plan.superbvote;
import io.minimum.minecraft.superbvote.storage.VoteStorage;
import java.io.Serializable;
import java.util.UUID;
import main.java.com.djrapitops.plan.Plan;
import main.java.com.djrapitops.plan.data.additional.AnalysisType;
import main.java.com.djrapitops.plan.data.additional.PluginData;
import main.java.com.djrapitops.plan.ui.html.Html;
import main.java.com.djrapitops.plan.utilities.FormatUtils;
import main.java.com.djrapitops.plan.utilities.HtmlUtils;
import main.java.com.djrapitops.plan.utilities.html.Html;
import main.java.com.djrapitops.plan.utilities.html.HtmlUtils;
import java.io.Serializable;
import java.util.UUID;
/**
* PluginData class for Vault-plugin.
@ -47,10 +47,11 @@ public class SuperbVoteVotesTable extends PluginData {
private String getTableLines() {
StringBuilder html = new StringBuilder();
Plan.getPlanAPI().getInspectCachedUserData()
.forEach(data -> {
String link = Html.LINK.parse(HtmlUtils.getInspectUrl(data.getName()), data.getName());
String bal = FormatUtils.cutDecimals(store.getVotes(data.getUuid()));
getUUIDsBeingAnalyzed()
.forEach(uuid -> {
String name = getNameOf(uuid);
String link = Html.LINK.parse(HtmlUtils.getRelativeInspectUrl(name), name);
String bal = FormatUtils.cutDecimals(store.getVotes(uuid));
html.append(Html.TABLELINE_2.parse(link, bal));
});
return html.toString();

View File

@ -7,8 +7,8 @@ import com.palmergames.bukkit.towny.object.TownyUniverse;
import main.java.com.djrapitops.plan.Settings;
import main.java.com.djrapitops.plan.data.additional.AnalysisType;
import main.java.com.djrapitops.plan.data.additional.PluginData;
import main.java.com.djrapitops.plan.ui.html.Html;
import main.java.com.djrapitops.plan.utilities.HtmlUtils;
import main.java.com.djrapitops.plan.utilities.html.Html;
import main.java.com.djrapitops.plan.utilities.html.HtmlUtils;
import java.io.Serializable;
import java.util.List;
@ -61,7 +61,7 @@ public class TownyTable extends PluginData {
}
int residents = t.getNumResidents();
int land = t.getPurchasedBlocks();
String leaderPage = Html.LINK.parse(HtmlUtils.getInspectUrl(mayor), mayor);
String leaderPage = Html.LINK.parse(HtmlUtils.getRelativeInspectUrl(mayor), mayor);
html.append(Html.TABLELINE_4.parse(name, residents, land, leaderPage));
}
}

View File

@ -3,8 +3,6 @@ package com.djrapitops.pluginbridge.plan.towny;
import com.palmergames.bukkit.towny.exceptions.NotRegisteredException;
import com.palmergames.bukkit.towny.object.Resident;
import com.palmergames.bukkit.towny.object.TownyUniverse;
import main.java.com.djrapitops.plan.Plan;
import main.java.com.djrapitops.plan.data.UserData;
import main.java.com.djrapitops.plan.data.additional.PluginData;
import java.io.Serializable;
@ -37,11 +35,7 @@ public class TownyTown extends PluginData {
@Override
public String getHtmlReplaceValue(String modifierPrefix, UUID uuid) {
UserData data = Plan.getPlanAPI().getInspectCachedUserDataMap().get(uuid);
if (data == null) {
return parseContainer(modifierPrefix, notInTown);
}
String name = data.getName();
String name = getNameOf(uuid);
try {
Resident res = TownyUniverse.getDataSource().getResident(name);
String town;
@ -58,11 +52,7 @@ public class TownyTown extends PluginData {
@Override
public Serializable getValue(UUID uuid) {
UserData data = Plan.getPlanAPI().getInspectCachedUserDataMap().get(uuid);
if (data == null) {
return notInTown;
}
String name = data.getName();
String name = getNameOf(uuid);
try {
Resident res = TownyUniverse.getDataSource().getResident(name);
String town;

View File

@ -1,8 +1,6 @@
package com.djrapitops.pluginbridge.plan.vault;
import com.djrapitops.pluginbridge.plan.FakeOfflinePlayer;
import main.java.com.djrapitops.plan.Plan;
import main.java.com.djrapitops.plan.data.UserData;
import main.java.com.djrapitops.plan.data.additional.AnalysisType;
import main.java.com.djrapitops.plan.data.additional.PluginData;
import main.java.com.djrapitops.plan.utilities.FormatUtils;
@ -45,11 +43,7 @@ public class EconomyBalance extends PluginData {
@Override
public String getHtmlReplaceValue(String modifierPrefix, UUID uuid) {
UserData data = Plan.getPlanAPI().getInspectCachedUserDataMap().get(uuid);
if (data == null) {
return parseContainer(modifierPrefix, "0");
}
OfflinePlayer p = new FakeOfflinePlayer(data);
OfflinePlayer p = new FakeOfflinePlayer(uuid, getNameOf(uuid));
if (this.econ.hasAccount(p)) {
return parseContainer(modifierPrefix, Double.toString(this.econ.getBalance(p)));
}

View File

@ -6,16 +6,16 @@
package com.djrapitops.pluginbridge.plan.vault;
import com.djrapitops.pluginbridge.plan.FakeOfflinePlayer;
import java.io.Serializable;
import java.util.UUID;
import main.java.com.djrapitops.plan.Plan;
import main.java.com.djrapitops.plan.data.additional.AnalysisType;
import main.java.com.djrapitops.plan.data.additional.PluginData;
import main.java.com.djrapitops.plan.ui.html.Html;
import main.java.com.djrapitops.plan.utilities.FormatUtils;
import main.java.com.djrapitops.plan.utilities.HtmlUtils;
import main.java.com.djrapitops.plan.utilities.html.Html;
import main.java.com.djrapitops.plan.utilities.html.HtmlUtils;
import net.milkbowl.vault.economy.Economy;
import java.io.Serializable;
import java.util.UUID;
/**
* PluginData class for Vault-plugin.
*
@ -48,12 +48,12 @@ public class EconomyBalanceTable extends PluginData {
private String getTableLines() {
StringBuilder html = new StringBuilder();
Plan.getPlanAPI().getInspectCachedUserData()
.forEach(data -> {
String link = Html.LINK.parse(HtmlUtils.getInspectUrl(data.getName()), data.getName());
String bal = FormatUtils.cutDecimals(econ.getBalance(new FakeOfflinePlayer(data)));
html.append(Html.TABLELINE_2.parse(link, bal));
});
getUUIDsBeingAnalyzed().forEach(uuid -> {
String name = getNameOf(uuid);
String link = Html.LINK.parse(HtmlUtils.getRelativeInspectUrl(name), name);
String bal = FormatUtils.cutDecimals(econ.getBalance(new FakeOfflinePlayer(uuid, name)));
html.append(Html.TABLELINE_2.parse(link, bal));
});
return html.toString();
}

View File

@ -7,10 +7,9 @@ package com.djrapitops.pluginbridge.plan.vault;
import com.djrapitops.plugin.utilities.Format;
import com.djrapitops.pluginbridge.plan.FakeOfflinePlayer;
import main.java.com.djrapitops.plan.Plan;
import main.java.com.djrapitops.plan.data.additional.AnalysisType;
import main.java.com.djrapitops.plan.data.additional.PluginData;
import main.java.com.djrapitops.plan.ui.html.Html;
import main.java.com.djrapitops.plan.utilities.html.Html;
import net.milkbowl.vault.permission.Permission;
import org.bukkit.OfflinePlayer;
@ -53,8 +52,8 @@ public class PermGroupTable extends PluginData {
private String getTableLines() {
Map<String, Integer> groups = new HashMap<>();
List<FakeOfflinePlayer> userData = Plan.getPlanAPI().getInspectCachedUserData().stream()
.map(FakeOfflinePlayer::new).collect(Collectors.toList());
List<FakeOfflinePlayer> userData = getUUIDsBeingAnalyzed().stream()
.map(uuid -> new FakeOfflinePlayer(uuid, getNameOf(uuid))).collect(Collectors.toList());
for (OfflinePlayer p : userData) {
String group = permSys.getPrimaryGroup(null, p);
if (!groups.containsKey(group)) {

View File

@ -5,19 +5,18 @@
*/
package com.djrapitops.pluginbridge.plan.viaversion;
import java.sql.SQLException;
import java.util.UUID;
import main.java.com.djrapitops.plan.Log;
import main.java.com.djrapitops.plan.Plan;
import main.java.com.djrapitops.plan.data.UserData;
import main.java.com.djrapitops.plan.data.handling.info.HandlingInfo;
import main.java.com.djrapitops.plan.data.handling.info.InfoType;
import main.java.com.djrapitops.plan.systems.processing.Processor;
import org.bukkit.event.EventHandler;
import org.bukkit.event.EventPriority;
import org.bukkit.event.Listener;
import org.bukkit.event.player.PlayerJoinEvent;
import us.myles.ViaVersion.api.ViaAPI;
import java.sql.SQLException;
import java.util.UUID;
/**
* Class responsible for listening join events for Version protocol.
*
@ -37,20 +36,18 @@ public class PlayerVersionListener implements Listener {
}
@EventHandler(priority = EventPriority.MONITOR)
public void onPlayerLogin(PlayerJoinEvent event) {
public void onJoin(PlayerJoinEvent event) {
UUID uuid = event.getPlayer().getUniqueId();
int playerVersion = viaAPI.getPlayerVersion(uuid);
HandlingInfo i = new HandlingInfo(uuid, InfoType.OTHER, 0) {
plan.addToProcessQueue(new Processor<UUID>(uuid) {
@Override
public boolean process(UserData uData) {
public void process() {
try {
table.saveProtocolVersion(uData.getUuid(), playerVersion);
} catch (SQLException ex) {
Log.toLog(this.getClass().getName(), ex);
table.saveProtocolVersion(uuid, playerVersion);
} catch (SQLException e) {
Log.toLog(this.getClass().getName() + ":PlanViaVersionJoinListener", e);
}
return true;
}
};
plan.getHandler().addToPool(i);
});
}
}

View File

@ -5,15 +5,16 @@
*/
package com.djrapitops.pluginbridge.plan.viaversion;
import main.java.com.djrapitops.plan.api.exceptions.DBCreateTableException;
import main.java.com.djrapitops.plan.database.databases.SQLDB;
import main.java.com.djrapitops.plan.database.tables.Table;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.HashMap;
import java.util.Map;
import java.util.UUID;
import main.java.com.djrapitops.plan.Log;
import main.java.com.djrapitops.plan.database.databases.SQLDB;
import main.java.com.djrapitops.plan.database.tables.Table;
/**
* Class responsible for version protocol information in Plan database.
@ -27,24 +28,18 @@ public class ProtocolTable extends Table {
private final String columnProtocolVersion;
public ProtocolTable(SQLDB db) {
super("plan_viaversion_protocol", db, db.supportsModification());
super("plan_viaversion_protocol", db, db.isUsingMySQL());
columnUUID = "uuid";
columnProtocolVersion = "protocol_version";
}
@Override
public boolean createTable() {
try {
execute("CREATE TABLE IF NOT EXISTS " + tableName + " ("
+ columnUUID + " varchar(36) NOT NULL UNIQUE, "
+ columnProtocolVersion + " integer NOT NULL"
+ ")"
);
return true;
} catch (SQLException ex) {
Log.toLog(this.getClass().getName(), ex);
return false;
}
public void createTable() throws DBCreateTableException {
createTable("CREATE TABLE IF NOT EXISTS " + tableName + " ("
+ columnUUID + " varchar(36) NOT NULL UNIQUE, "
+ columnProtocolVersion + " integer NOT NULL"
+ ")"
);
}
public void saveProtocolVersion(UUID uuid, int version) throws SQLException {
@ -115,9 +110,9 @@ public class ProtocolTable extends Table {
try {
statement = prepareStatement(
"INSERT INTO " + tableName + " ("
+ columnUUID + ", "
+ columnProtocolVersion
+ ") VALUES (?, ?)");
+ columnUUID + ", "
+ columnProtocolVersion
+ ") VALUES (?, ?)");
statement.setString(1, uuid.toString());
statement.setInt(2, version);
statement.execute();

View File

@ -1,9 +1,11 @@
package com.djrapitops.pluginbridge.plan.viaversion;
import com.djrapitops.pluginbridge.plan.Hook;
import main.java.com.djrapitops.plan.Log;
import main.java.com.djrapitops.plan.Plan;
import main.java.com.djrapitops.plan.data.additional.HookHandler;
import main.java.com.djrapitops.plan.api.API;
import main.java.com.djrapitops.plan.api.exceptions.DBCreateTableException;
import main.java.com.djrapitops.plan.data.additional.HookHandler;
import main.java.com.djrapitops.plan.database.databases.SQLDB;
import us.myles.ViaVersion.api.Via;
import us.myles.ViaVersion.api.ViaAPI;
@ -18,12 +20,12 @@ public class ViaVersionHook extends Hook {
/**
* Hooks the plugin and registers it's PluginData objects.
*
* <p>
* API#addPluginDataSource uses the same method from HookHandler.
*
* @param hookH HookHandler instance for registering the data sources.
* @see API
* @throws NoClassDefFoundError when the plugin class can not be found.
* @see API
*/
public ViaVersionHook(HookHandler hookH) throws NoClassDefFoundError {
super("us.myles.ViaVersion.ViaVersionPlugin");
@ -33,7 +35,12 @@ public class ViaVersionHook extends Hook {
Plan plan = Plan.getInstance();
ViaAPI api = Via.getAPI();
ProtocolTable table = new ProtocolTable((SQLDB) plan.getDB());
table.createTable();
try {
table.createTable();
} catch (DBCreateTableException e) {
Log.toLog(this.getClass().getName(), e);
return;
}
PlayerVersionListener l = new PlayerVersionListener(plan, api, table);
plan.registerListener(l);
hookH.addPluginDataSource(new ViaVersionVersionTable(table));

View File

@ -5,14 +5,15 @@
*/
package com.djrapitops.pluginbridge.plan.viaversion;
import main.java.com.djrapitops.plan.data.additional.AnalysisType;
import main.java.com.djrapitops.plan.data.additional.PluginData;
import main.java.com.djrapitops.plan.utilities.html.Html;
import java.io.Serializable;
import java.sql.SQLException;
import java.util.HashMap;
import java.util.Map;
import java.util.UUID;
import main.java.com.djrapitops.plan.data.additional.AnalysisType;
import main.java.com.djrapitops.plan.data.additional.PluginData;
import main.java.com.djrapitops.plan.ui.html.Html;
/**
* PluginData class for Vault-plugin.