Search in sources :

Example 6 with UserInfo

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);
}
Also used : UserInfo(com.djrapitops.plan.gathering.domain.UserInfo) Test(org.junit.jupiter.api.Test)

Example 7 with 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;
        }
    };
}
Also used : ServerUUID(com.djrapitops.plan.identification.ServerUUID) ResultSet(java.sql.ResultSet) UserInfo(com.djrapitops.plan.gathering.domain.UserInfo) PreparedStatement(java.sql.PreparedStatement) QueryStatement(com.djrapitops.plan.storage.database.queries.QueryStatement) ServerUUID(com.djrapitops.plan.identification.ServerUUID)

Example 8 with UserInfo

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;
        }
    };
}
Also used : ServerUUID(com.djrapitops.plan.identification.ServerUUID) ResultSet(java.sql.ResultSet) UserInfo(com.djrapitops.plan.gathering.domain.UserInfo) PreparedStatement(java.sql.PreparedStatement) QueryStatement(com.djrapitops.plan.storage.database.queries.QueryStatement)

Example 9 with UserInfo

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;
        }
    };
}
Also used : ServerUUID(com.djrapitops.plan.identification.ServerUUID) UserInfo(com.djrapitops.plan.gathering.domain.UserInfo) QueryAllStatement(com.djrapitops.plan.storage.database.queries.QueryAllStatement) Lists(com.djrapitops.plan.utilities.java.Lists) ResultSet(java.sql.ResultSet) ServerUUID(com.djrapitops.plan.identification.ServerUUID)

Example 10 with UserInfo

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);
}
Also used : Server(com.djrapitops.plan.identification.Server) StoreServerInformationTransaction(com.djrapitops.plan.storage.database.transactions.StoreServerInformationTransaction) UserInfo(com.djrapitops.plan.gathering.domain.UserInfo) Test(org.junit.jupiter.api.Test)

Aggregations

UserInfo (com.djrapitops.plan.gathering.domain.UserInfo)10 Test (org.junit.jupiter.api.Test)7 ServerUUID (com.djrapitops.plan.identification.ServerUUID)3 ResultSet (java.sql.ResultSet)3 QueryStatement (com.djrapitops.plan.storage.database.queries.QueryStatement)2 StoreServerInformationTransaction (com.djrapitops.plan.storage.database.transactions.StoreServerInformationTransaction)2 PreparedStatement (java.sql.PreparedStatement)2 Server (com.djrapitops.plan.identification.Server)1 QueryAllStatement (com.djrapitops.plan.storage.database.queries.QueryAllStatement)1 Transaction (com.djrapitops.plan.storage.database.transactions.Transaction)1 RemoveEverythingTransaction (com.djrapitops.plan.storage.database.transactions.commands.RemoveEverythingTransaction)1 RemoveDuplicateUserInfoTransaction (com.djrapitops.plan.storage.database.transactions.init.RemoveDuplicateUserInfoTransaction)1 Lists (com.djrapitops.plan.utilities.java.Lists)1