Package com.mmoscene.h4j.database

Source Code of com.mmoscene.h4j.database.Messenger

package com.mmoscene.h4j.database;

import com.mmoscene.h4j.H4J;
import com.mmoscene.h4j.habbohotel.messenger.Friend;
import com.mmoscene.h4j.habbohotel.user.User;
import gnu.trove.map.hash.THashMap;
import org.magicwerk.brownies.collections.GapList;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;

public class Messenger {
    public THashMap<Integer, Friend> loadFriends(User user) {
        THashMap<Integer, Friend> friends = new THashMap<>();

        try (Connection connection = H4J.getStorage().getConnection()) {
            try (PreparedStatement statement = connection.prepareStatement(
                "SELECT server_users.id, server_users.username, server_users.motto, server_users.look FROM server_friendships INNER JOIN server_users ON server_friendships.friend_id = server_users.id WHERE server_friendships.user_id = ? UNION " +
                "SELECT server_users.id, server_users.username, server_users.motto, server_users.look FROM server_friendships INNER JOIN server_users ON server_friendships.user_id = server_users.id WHERE server_friendships.friend_id = ?")) {
                statement.setInt(1, user.getId());
                statement.setInt(2, user.getId());

                try(ResultSet set = statement.executeQuery()) {
                    while(set.next()) {
                        friends.put(set.getInt("id"), this.generateFriend(set));
                    }
                }
            }
        } catch(Exception ex) {
            H4J.getLogger(Messenger.class.getName()).error(ex.getMessage());
        }
        return friends;
    }

    public THashMap<Integer, Friend> loadRequests(User user) {
        THashMap<Integer, Friend> friends = new THashMap<>();

        try (Connection connection = H4J.getStorage().getConnection()) {
            try (PreparedStatement statement = connection.prepareStatement(
                    "SELECT server_users.id, server_users.username, server_users.motto, server_users.look FROM server_friendships_pending INNER JOIN server_users ON server_friendships_pending.sender_id = server_users.id WHERE server_friendships_pending.reciever_id = ?")) {
                statement.setInt(1, user.getId());

                try(ResultSet set = statement.executeQuery()) {
                    while(set.next()) {
                        friends.put(set.getInt("id"), this.generateFriend(set));
                    }
                }
            }
        } catch(Exception ex) {
            H4J.getLogger(Messenger.class.getName()).error(ex.getMessage());
        }
        return friends;
    }

    public GapList<Friend> performSearch(String query) {
        GapList<Friend> results = new GapList<>();

        try (Connection connection = H4J.getStorage().getConnection()) {
            try (PreparedStatement statement = connection.prepareStatement(
                    "SELECT id, username, motto, look FROM server_users WHERE username LIKE ? LIMIT 15")) {
                statement.setString(1, "%" + query + "%");

                try(ResultSet set = statement.executeQuery()) {
                    while(set.next()) {
                        results.add(this.generateFriend(set));
                    }
                }
            }
        } catch(Exception ex) {
            H4J.getLogger(Messenger.class.getName()).error(ex.getMessage());
        }
        return results;
    }

    public void requestFriendship(int sender, int receiver) {
        try (Connection connection = H4J.getStorage().getConnection()) {
            try (PreparedStatement statement = connection.prepareStatement(
                    "INSERT INTO server_friendships_pending (sender_id, reciever_id) VALUES (?, ?)")) {
                statement.setInt(1, sender);
                statement.setInt(2, receiver);

                statement.execute();
            }
        } catch(Exception ex) {
            H4J.getLogger(Messenger.class.getName()).error(ex.getMessage());
        }
    }

    public void acceptFriendship(int sender, int receiver) {
        try (Connection connection = H4J.getStorage().getConnection()) {
            try (PreparedStatement statement = connection.prepareStatement(
                    "DELETE FROM server_friendships_pending WHERE sender_id = ? AND reciever_id = ?")) {
                statement.setInt(1, sender);
                statement.setInt(2, receiver);

                statement.execute();
            }
        } catch(Exception ex) {
            H4J.getLogger(Messenger.class.getName()).error(ex.getMessage());
        }

        try (Connection connection = H4J.getStorage().getConnection()) {
            try (PreparedStatement statement = connection.prepareStatement(
                    "INSERT INTO server_friendships(user_id, friend_id) VALUES (?, ?)")) {
                statement.setInt(1, sender);
                statement.setInt(2, receiver);

                statement.execute();
            }
        } catch(Exception ex) {
            H4J.getLogger(Messenger.class.getName()).error(ex.getMessage());
        }
    }

    public Friend generateFriend(ResultSet set) {
        Friend friend = new Friend();

        try {
            friend.setId(set.getInt("id"));
            friend.setUsername(set.getString("username"));
            friend.setLook(set.getString("look"));
            friend.setMotto(set.getString("motto"));
        } catch(Exception ex) {
            H4J.getLogger(Messenger.class.getName()).error(ex.getMessage());
        }

        return friend;
    }
}
TOP

Related Classes of com.mmoscene.h4j.database.Messenger

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.