ServerProfile get method to database, deprecated old analysis part system

This commit is contained in:
Rsl1122 2017-11-22 22:01:51 +02:00
parent 32fd2dc5aa
commit c4963c117a
15 changed files with 120 additions and 8 deletions

View File

@ -52,6 +52,13 @@ public class ServerProfile {
players = new ArrayList<>();
tps = new ArrayList<>();
commandUsage = new HashMap<>();
allTimePeak = -1;
allTimePeakPlayers = -1;
lastPeakDate = -1;
lastPeakPlayers = -1;
playersOnline = -1;
playersMax = -1;
}
public List<PlayerProfile> getPlayers() {

View File

@ -38,6 +38,7 @@ import java.util.stream.Collectors;
* @author Rsl1122
* @since 3.5.2
*/
@Deprecated
public class ActivityPart extends RawData {
private final PlayerCountPart playerCount;

View File

@ -24,6 +24,7 @@ import java.util.Map;
* @author Rsl1122
* @since 3.5.2
*/
@Deprecated
public class CommandUsagePart extends RawData {
private Map<String, Integer> commandUsage;

View File

@ -20,6 +20,7 @@ import java.util.stream.Collectors;
* @author Rsl1122
* @since 3.5.2
*/
@Deprecated
public class GeolocationPart extends RawData {
private final Map<UUID, String> mostCommonGeolocations;

View File

@ -36,6 +36,7 @@ import java.util.stream.Collectors;
* @author Rsl1122
* @since 3.5.2
*/
@Deprecated
public class JoinInfoPart extends RawData {
private final Map<UUID, Session> activeSessions;

View File

@ -21,6 +21,7 @@ import java.util.UUID;
* @author Rsl1122
* @since 3.5.2
*/
@Deprecated
public class KillPart extends RawData {
private final JoinInfoPart joinInfoPart;

View File

@ -18,6 +18,7 @@ import java.util.UUID;
* @author Rsl1122
* @since 3.5.2
*/
@Deprecated
public class PlayerCountPart extends RawData {
private final Set<UUID> uuids;

View File

@ -13,6 +13,7 @@ import main.java.com.djrapitops.plan.utilities.FormatUtils;
* @author Rsl1122
* @since 3.5.2
*/
@Deprecated
public class PlaytimePart extends RawData {
private long totalPlaytime;

View File

@ -49,6 +49,7 @@ import java.util.List;
* @author Rsl1122
* @since 3.5.2
*/
@Deprecated
public class TPSPart extends RawData {
private final List<TPS> tpsData;

View File

@ -21,6 +21,7 @@ import java.util.HashMap;
* @author Rsl1122
* @since 3.6.0
*/
@Deprecated
public class WorldPart extends RawData {
private WorldTimes worldTimes;

View File

@ -3,6 +3,7 @@ package main.java.com.djrapitops.plan.database;
import main.java.com.djrapitops.plan.api.IPlan;
import main.java.com.djrapitops.plan.api.exceptions.DatabaseInitException;
import main.java.com.djrapitops.plan.data.PlayerProfile;
import main.java.com.djrapitops.plan.data.ServerProfile;
import main.java.com.djrapitops.plan.database.tables.*;
import org.apache.commons.lang3.StringUtils;
@ -268,4 +269,6 @@ public abstract class Database {
}
public abstract PlayerProfile getPlayerProfile(UUID uuid) throws SQLException;
public abstract ServerProfile getServerProfile(UUID serverUUID) throws SQLException;
}

View File

@ -8,20 +8,16 @@ import com.djrapitops.plugin.task.ITask;
import com.djrapitops.plugin.task.RunnableFactory;
import main.java.com.djrapitops.plan.api.IPlan;
import main.java.com.djrapitops.plan.api.exceptions.DatabaseInitException;
import main.java.com.djrapitops.plan.data.PlayerProfile;
import main.java.com.djrapitops.plan.data.Session;
import main.java.com.djrapitops.plan.data.UserInfo;
import main.java.com.djrapitops.plan.data.*;
import main.java.com.djrapitops.plan.database.Database;
import main.java.com.djrapitops.plan.database.tables.*;
import main.java.com.djrapitops.plan.database.tables.move.Version8TransferTable;
import main.java.com.djrapitops.plan.utilities.MiscUtils;
import org.apache.commons.dbcp2.BasicDataSource;
import java.sql.Connection;
import java.sql.SQLException;
import java.util.List;
import java.util.Map;
import java.util.Optional;
import java.util.UUID;
import java.util.*;
/**
* Class containing main logic for different data related save and load functionality.
@ -278,6 +274,59 @@ public abstract class SQLDB extends Database {
}
}
@Override
public ServerProfile getServerProfile(UUID serverUUID) throws SQLException {
ServerProfile profile = new ServerProfile(serverUUID);
profile.setPlayers(getPlayers(serverUUID));
profile.setTps(tpsTable.getTPSData(serverUUID));
Optional<TPS> allTimePeak = tpsTable.getAllTimePeak(serverUUID);
if (allTimePeak.isPresent()) {
TPS peak = allTimePeak.get();
profile.setAllTimePeak(peak.getDate());
profile.setAllTimePeakPlayers(peak.getPlayers());
}
Optional<TPS> lastPeak = tpsTable.getPeakPlayerCount(serverUUID, MiscUtils.getTime() - (TimeAmount.DAY.ms() * 2L));
if (lastPeak.isPresent()) {
TPS peak = lastPeak.get();
profile.setLastPeakDate(peak.getDate());
profile.setLastPeakPlayers(peak.getPlayers());
}
profile.setCommandUsage(commandUseTable.getCommandUse(serverUUID));
profile.setServerWorldtimes(worldTimesTable.getWorldTimesOfServer(serverUUID));
return profile;
}
private List<PlayerProfile> getPlayers(UUID serverUUID) throws SQLException {
List<UserInfo> serverUserInfo = userInfoTable.getServerUserInfo(serverUUID);
Map<UUID, Integer> timesKicked = usersTable.getAllTimesKicked();
Map<UUID, List<Action>> actions = actionsTable.getServerActions(serverUUID);
Map<UUID, List<GeoInfo>> geoInfo = ipsTable.getAllGeoInfo();
Map<UUID, List<Session>> sessions = sessionsTable.getSessionInfoOfServer(serverUUID);
List<PlayerProfile> players = new ArrayList<>();
for (UserInfo userInfo : serverUserInfo) {
UUID uuid = userInfo.getUuid();
PlayerProfile profile = new PlayerProfile(uuid, userInfo.getName(), userInfo.getRegistered());
profile.setTimesKicked(timesKicked.getOrDefault(uuid, 0));
if (userInfo.isBanned()) {
profile.bannedOnServer(serverUUID);
}
if (userInfo.isOpped()) {
profile.oppedOnServer(serverUUID);
}
profile.setActions(actions.getOrDefault(uuid, new ArrayList<>()));
profile.setGeoInformation(geoInfo.getOrDefault(uuid, new ArrayList<>()));
profile.setSessions(serverUUID, sessions.getOrDefault(uuid, new ArrayList<>()));
players.add(profile);
}
return players;
}
@Override
public boolean wasSeenBefore(UUID uuid) {
if (uuid == null) {

View File

@ -193,4 +193,43 @@ public class ActionsTable extends UserIDTable {
}
});
}
public Map<UUID, List<Action>> getServerActions(UUID serverUUID) throws SQLException {
String usersIDColumn = usersTable + "." + usersTable.getColumnID();
String usersUUIDColumn = usersTable + "." + usersTable.getColumnUUID() + " as uuid";
String sql = "SELECT " +
columnActionID + ", " +
columnDate + ", " +
columnAdditionalInfo + ", " +
usersUUIDColumn +
" FROM " + tableName +
" JOIN " + usersTable + " on " + usersIDColumn + "=" + columnUserID +
" WHERE " + serverTable.statementSelectServerID + "=" + columnServerID;
return query(new QueryStatement<Map<UUID, List<Action>>>(sql, 20000) {
@Override
public void prepare(PreparedStatement statement) throws SQLException {
statement.setString(1, serverUUID.toString());
}
@Override
public Map<UUID, List<Action>> processResults(ResultSet set) throws SQLException {
Map<UUID, List<Action>> map = new HashMap<>();
while (set.next()) {
UUID uuid = UUID.fromString(set.getString("uuid"));
List<Action> actions = map.getOrDefault(uuid, new ArrayList<>());
long date = set.getLong(columnDate);
Actions doneAction = Actions.getById(set.getInt(columnActionID));
String additionalInfo = set.getString(columnAdditionalInfo);
actions.add(new Action(date, doneAction, additionalInfo, -1));
map.put(uuid, actions);
}
return map;
}
});
}
}

View File

@ -234,4 +234,5 @@ public class NicknamesTable extends UserIDTable {
public String getColumnUserID() {
return columnUserID;
}
}

View File

@ -76,6 +76,10 @@ public class TPSTable extends Table {
* @return @throws SQLException
*/
public List<TPS> getTPSData() throws SQLException {
return getTPSData(MiscUtils.getIPlan().getServerUuid());
}
public List<TPS> getTPSData(UUID serverUUID) throws SQLException {
String sql = Select.all(tableName)
.where(columnServerID + "=" + serverTable.statementSelectServerID)
.toString();
@ -83,7 +87,7 @@ public class TPSTable extends Table {
return query(new QueryStatement<List<TPS>>(sql, 50000) {
@Override
public void prepare(PreparedStatement statement) throws SQLException {
statement.setString(1, MiscUtils.getIPlan().getServerUuid().toString());
statement.setString(1, serverUUID.toString());
}
@Override