Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- String union_friends =
- "CREATE VIEW UNIONED_FRONDS AS " +
- "SELECT F1.USER1_ID AS UNIONFRIEND1, F1.USER2_ID AS UNIONFRIEND2 " +
- "FROM " + FriendsTable + " F1 " +
- "UNION " +
- "SELECT F2.USER2_ID, F2.USER1_ID " +
- "FROM " + FriendsTable + " F2 ";
- String mutual_friends =
- "CREATE VIEW MUTUAL_FRONDS AS " +
- "SELECT UF1.UNIONFRIEND1 AS FRIEND1, UF2.UNIONFRIEND1 AS MUTUALFRIEND, UF2.UNIONFRIEND2 AS FRIEND2 " +
- "FROM UNIONED_FRONDS UF1, UNIONED_FRONDS UF2 " +
- "WHERE UF1.UNIONFRIEND2 = UF2.UNIONFRIEND1 " +
- "AND UF1.UNIONFRIEND1 < UF2.UNIONFRIEND2 " +
- "AND NOT EXISTS ( " +
- "SELECT F1.USER1_ID, F1.USER2_ID " +
- "FROM " + FriendsTable + " F1 " +
- "WHERE UF1.UNIONFRIEND1 = F1.USER1_ID " +
- "AND UF2.UNIONFRIEND2 = F1.USER2_ID " +
- ")";
- String order_mutual_friends =
- "CREATE VIEW ORDERED_MUTUAL_FRONDS AS " +
- "SELECT * " +
- "FROM ( " +
- "SELECT FMF.FRIEND1 AS FRIEND1, FMF.FRIEND2 AS FRIEND2 " +
- "FROM MUTUAL_FRONDS FMF " +
- "GROUP BY FMF.FRIEND1, FMF.FRIEND2 " +
- "ORDER BY COUNT(FMF.MUTUALFRIEND) DESC, FMF.FRIEND1 ASC, FMF.FRIEND2 ASC " +
- ")" + " " +
- "WHERE ROWNUM <= " + num;
- //query string
- String top_user_pair =
- "SELECT U1.USER_ID, U1.FIRST_NAME, U1.LAST_NAME, U2.USER_ID, U2.FIRST_NAME, U2.LAST_NAME " +
- "FROM " + UsersTable + " U1, " + UsersTable + " U2, MUTUAL_FRONDS FMF " +
- "WHERE U1.USER_ID < U2.USER_ID " +
- "AND FMF.FRIEND1 = U1.USER_ID " +
- "AND FMF.FRIEND2 = U2.USER_ID " +
- "AND (U1.USER_ID, U2.USER_ID) IN ( " +
- "SELECT * " +
- "FROM ORDERED_MUTUAL_FRONDS " +
- ")" + " " +
- "GROUP BY U1.USER_ID, U1.FIRST_NAME, U1.LAST_NAME, U2.USER_ID, U2.FIRST_NAME, U2.LAST_NAME " +
- "ORDER BY COUNT(FMF.MUTUALFRIEND) DESC, U1.USER_ID ASC, U2.USER_ID ASC";
- String top_mutual =
- "SELECT FMF.FRIEND1, FMF.FRIEND2, U3.USER_ID, U3.FIRST_NAME, U3.LAST_NAME " +
- "FROM " + UsersTable + " U3, MUTUAL_FRONDS FMF, MUTUAL_FRONDS MF " +
- "WHERE MF.MUTUALFRIEND = U3.USER_ID " +
- "AND MF.FRIEND1 = FMF.FRIEND1 " +
- "AND MF.FRIEND2 = FMF.FRIEND2 " +
- "AND (FMF.FRIEND1, FMF.FRIEND2) IN ( " +
- "SELECT * " +
- "FROM ORDERED_MUTUAL_FRONDS " +
- ")" + " " +
- "GROUP BY FMF.FRIEND1, FMF.FRIEND2, U3.USER_ID, U3.FIRST_NAME, U3.LAST_NAME " +
- "ORDER BY COUNT(FMF.MUTUALFRIEND) DESC, FMF.FRIEND1 ASC, FMF.FRIEND2 ASC, U3.USER_ID ASC";
- stmt.executeQuery(union_friends);
- stmt.executeQuery(mutual_friends);
- stmt.executeQuery(order_mutual_friends);
- Statement stmt0 = oracle.createStatement(FakebookOracleConstants.AllScroll, FakebookOracleConstants.ReadOnly);
- ResultSet user_pair_info = stmt0.executeQuery(top_user_pair);
- ResultSet shared_mutual = stmt.executeQuery(top_mutual);
- while(user_pair_info.next()) {
- UserInfo u1 = new UserInfo(user_pair_info.getLong(1), user_pair_info.getString(2), user_pair_info.getString(3));
- UserInfo u2 = new UserInfo(user_pair_info.getLong(4), user_pair_info.getString(5), user_pair_info.getString(6));
- UsersPair up = new UsersPair(u1, u2);
- while (shared_mutual.next() && shared_mutual.getLong(1) == user_pair_info.getLong(1) && shared_mutual.getLong(2) == user_pair_info.getLong(4) ){
- UserInfo u3 = new UserInfo(shared_mutual.getLong(3), shared_mutual.getString(4), shared_mutual.getString(5));
- up.addSharedFriend(u3);
- }
- shared_mutual.previous();
- results.add(up);
- }
- stmt.executeQuery("DROP VIEW UNIONED_FRONDS CASCADE CONSTRAINTS");
- stmt.executeQuery("DROP VIEW MUTUAL_FRONDS CASCADE CONSTRAINTS");
- stmt.executeQuery("DROP VIEW ORDERED_MUTUAL_FRONDS CASCADE CONSTRAINTS");
- shared_mutual.close();
- user_pair_info.close();
- stmt0.close();
- stmt.close();
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement