use of com.djrapitops.plan.gathering.domain.UserInfo in project Plan by plan-player-analytics.
the class UserInfoQueriesTest method userInfoTableUpdatesOperatorStatus.
@Test
default void userInfoTableUpdatesOperatorStatus() {
db().executeTransaction(new PlayerServerRegisterTransaction(playerUUID, () -> TestConstants.REGISTER_TIME, TestConstants.PLAYER_ONE_NAME, serverUUID(), TestConstants.GET_PLAYER_HOSTNAME));
db().executeTransaction(new OperatorStatusTransaction(playerUUID, serverUUID(), true));
Set<UserInfo> userInfo = db().query(UserInfoQueries.fetchUserInformationOfUser(playerUUID));
Set<UserInfo> expected = Collections.singleton(new UserInfo(playerUUID, serverUUID(), TestConstants.REGISTER_TIME, true, TestConstants.GET_PLAYER_HOSTNAME.get(), false));
assertEquals(expected, userInfo);
}
use of com.djrapitops.plan.gathering.domain.UserInfo in project Plan by plan-player-analytics.
the class UserInfoQueries method fetchUserInformationOfServer.
/**
* Query database for all User information of a specific server.
*
* @param serverUUID UUID of the Plan server.
* @return Map: Player UUID - user information
*/
public static Query<Map<UUID, UserInfo>> fetchUserInformationOfServer(ServerUUID serverUUID) {
String sql = SELECT + UserInfoTable.REGISTERED + ',' + UserInfoTable.BANNED + ',' + UserInfoTable.JOIN_ADDRESS + ',' + UserInfoTable.OP + ',' + UserInfoTable.USER_UUID + ',' + UserInfoTable.SERVER_UUID + FROM + UserInfoTable.TABLE_NAME + WHERE + UserInfoTable.SERVER_UUID + "=?";
return new QueryStatement<Map<UUID, UserInfo>>(sql, 1000) {
@Override
public void prepare(PreparedStatement statement) throws SQLException {
statement.setString(1, serverUUID.toString());
}
@Override
public Map<UUID, UserInfo> processResults(ResultSet set) throws SQLException {
Map<UUID, UserInfo> userInformation = new HashMap<>();
while (set.next()) {
ServerUUID serverUUID = ServerUUID.fromString(set.getString(UserInfoTable.SERVER_UUID));
UUID uuid = UUID.fromString(set.getString(UserInfoTable.USER_UUID));
long registered = set.getLong(UserInfoTable.REGISTERED);
boolean banned = set.getBoolean(UserInfoTable.BANNED);
boolean op = set.getBoolean(UserInfoTable.OP);
String joinAddress = set.getString(UserInfoTable.JOIN_ADDRESS);
userInformation.put(uuid, new UserInfo(uuid, serverUUID, registered, op, joinAddress, banned));
}
return userInformation;
}
};
}
use of com.djrapitops.plan.gathering.domain.UserInfo in project Plan by plan-player-analytics.
the class UserInfoQueries method fetchUserInformationOfUser.
/**
* Query database for User information of a specific player.
*
* @param playerUUID UUID of the player.
* @return List of UserInfo objects, one for each server where the player has played.
*/
public static Query<Set<UserInfo>> fetchUserInformationOfUser(UUID playerUUID) {
String sql = SELECT + UserInfoTable.TABLE_NAME + '.' + UserInfoTable.REGISTERED + ',' + UserInfoTable.BANNED + ',' + UserInfoTable.OP + ',' + UserInfoTable.SERVER_UUID + ',' + UserInfoTable.JOIN_ADDRESS + FROM + UserInfoTable.TABLE_NAME + WHERE + UserInfoTable.TABLE_NAME + '.' + UserInfoTable.USER_UUID + "=?";
return new QueryStatement<Set<UserInfo>>(sql) {
@Override
public void prepare(PreparedStatement statement) throws SQLException {
statement.setString(1, playerUUID.toString());
}
@Override
public Set<UserInfo> processResults(ResultSet set) throws SQLException {
Set<UserInfo> userInformation = new HashSet<>();
while (set.next()) {
long registered = set.getLong(UserInfoTable.REGISTERED);
boolean op = set.getBoolean(UserInfoTable.OP);
boolean banned = set.getBoolean(UserInfoTable.BANNED);
ServerUUID serverUUID = ServerUUID.fromString(set.getString(UserInfoTable.SERVER_UUID));
String joinAddress = set.getString(UserInfoTable.JOIN_ADDRESS);
userInformation.add(new UserInfo(playerUUID, serverUUID, registered, op, joinAddress, banned));
}
return userInformation;
}
};
}
use of com.djrapitops.plan.gathering.domain.UserInfo in project Plan by plan-player-analytics.
the class UserInfoQueries method fetchAllUserInformation.
/**
* Query database for user information.
* <p>
* The user information does not contain player names.
*
* @return Map: Server UUID - List of user information
*/
public static Query<Map<ServerUUID, List<UserInfo>>> fetchAllUserInformation() {
String sql = SELECT + UserInfoTable.REGISTERED + ',' + UserInfoTable.BANNED + ',' + UserInfoTable.OP + ',' + UserInfoTable.USER_UUID + ',' + UserInfoTable.SERVER_UUID + ',' + UserInfoTable.JOIN_ADDRESS + FROM + UserInfoTable.TABLE_NAME;
return new QueryAllStatement<Map<ServerUUID, List<UserInfo>>>(sql, 50000) {
@Override
public Map<ServerUUID, List<UserInfo>> processResults(ResultSet set) throws SQLException {
Map<ServerUUID, List<UserInfo>> serverMap = new HashMap<>();
while (set.next()) {
ServerUUID serverUUID = ServerUUID.fromString(set.getString(UserInfoTable.SERVER_UUID));
UUID uuid = UUID.fromString(set.getString(UserInfoTable.USER_UUID));
List<UserInfo> userInfos = serverMap.computeIfAbsent(serverUUID, Lists::create);
long registered = set.getLong(UserInfoTable.REGISTERED);
boolean banned = set.getBoolean(UserInfoTable.BANNED);
boolean op = set.getBoolean(UserInfoTable.OP);
String joinAddress = set.getString(UserInfoTable.JOIN_ADDRESS);
userInfos.add(new UserInfo(uuid, serverUUID, registered, op, joinAddress, banned));
}
return serverMap;
}
};
}
use of com.djrapitops.plan.gathering.domain.UserInfo in project Plan by plan-player-analytics.
the class UserInfoQueriesTest method joinAddressUpdateIsUniquePerServer.
@Test
default void joinAddressUpdateIsUniquePerServer() {
db().executeTransaction(new PlayerServerRegisterTransaction(playerUUID, () -> TestConstants.REGISTER_TIME, TestConstants.PLAYER_ONE_NAME, serverUUID(), () -> null));
db().executeTransaction(new PlayerServerRegisterTransaction(playerUUID, () -> TestConstants.REGISTER_TIME, TestConstants.PLAYER_ONE_NAME, serverUUID(), TestConstants.GET_PLAYER_HOSTNAME));
db().executeTransaction(new StoreServerInformationTransaction(new Server(TestConstants.SERVER_TWO_UUID, TestConstants.SERVER_TWO_NAME, "")));
db().executeTransaction(new PlayerServerRegisterTransaction(playerUUID, () -> TestConstants.REGISTER_TIME, TestConstants.PLAYER_ONE_NAME, TestConstants.SERVER_TWO_UUID, () -> "example.join.address"));
Set<UserInfo> userInfo = db().query(UserInfoQueries.fetchUserInformationOfUser(playerUUID));
Set<UserInfo> expected = new HashSet<>(Arrays.asList(new UserInfo(playerUUID, serverUUID(), TestConstants.REGISTER_TIME, false, TestConstants.GET_PLAYER_HOSTNAME.get(), false), new UserInfo(playerUUID, TestConstants.SERVER_TWO_UUID, TestConstants.REGISTER_TIME, false, "example.join.address", false)));
assertEquals(expected, userInfo);
}
Aggregations