Code with Finding: |
class DatabaseAdmin {
/**
* Retrieves a list of all users of a group given the group's aid. Returns null
* if error.
* @param conn
* @param aid
* @return
*/
public static List<String> getAllUsersOfGroup(Connection conn, int aid) {
List<String> users = new ArrayList<String>();
String query = "SELECT username FROM main.users WHERE aid = ?";
PreparedStatement pstmt = null;
ResultSet result = null;
try {
pstmt = conn.prepareStatement(query);
pstmt.setInt(1, aid);
result = pstmt.executeQuery();
while (result.next()) {
users.add(result.getString("username"));
}
if (users.size() == 0) {
users = null;
}
} catch (SQLException e) {
if (DEBUG) e.printStackTrace();
users = null;
} finally {
DBManager.closeResultSet(result);
DBManager.closePreparedStatement(pstmt);
}
return users;
}
}
class DatabaseAdmin {
/**
* For a new user, adds all the users from his group to his friend list
*
* @param conn
* @param username
* @param aid
* @return number of friend entries added. -1 if error
*/
public static int addFriendsFromGroup(Connection conn, String username, int aid) {
System.out.println("In addFriendsFromGroup");
int status = -1;
List<String> friends = getAllUsersOfGroup(conn, aid);
for (String f: friends) {
if (!f.equals(username)) {
int s = addFriend(conn, username, f);
if (s != -1) {
status+= s;
} else {
return -1;
}
}
}
return status;
}
}
class DatabaseAdmin {
/**
* Precondition: user is an admin
* @param conn
* @param username
* @return
*/
public static int deletionBoardDBEffects(Connection conn, String username) {
int status = 1; // initially set to 1 cuz statuses loop toggles to -1
List<String[]> boards = getBoardList(conn);
if (boards == null) {
if (DEBUG) System.err.println("failing cuz board list is null");
return -1;
}
if (DEBUG) {
System.err.println("boards:");
for (String[] b: boards) {
System.err.println(b[0] + " " + b[1]);
}
}
Statement stmt = null;
try {
stmt = conn.createStatement();
boolean regionSuccess = addReplRegionManQueries(conn, stmt, boards, username);
boolean postsSuccess = addMaskPostsQueries(conn, stmt, boards, username);
boolean replySuccess = addMaskRepliesQueies(conn, stmt, boards, username);
if (!regionSuccess || !postsSuccess || !replySuccess) {
if (DEBUG) System.err.println("failing cuz addBatch is returning false");
DBManager.closeStatement(stmt);
return -1;
}
int[] statuses = stmt.executeBatch();
for (int s: statuses) {
if (s == Statement.EXECUTE_FAILED) {
if (DEBUG) System.err.println("failing cuz execute_failed flag");
status = -1;
break;
}
}
} catch (SQLException e) {
if (DEBUG) e.printStackTrace();
if (DEBUG) System.err.println("failing cuz SQLException");
status = -1;
} finally {
DBManager.closeStatement(stmt);
}
return status;
}
}
class DatabaseAdmin {
private static boolean addMaskPostsQueries(Connection conn, Statement stmt,
List<String[]> boards, String username) {
boolean success = true;
try {
for (String[] board: boards) {
String query = "UPDATE " + board[0] + ".posts SET postedBy = " +
"'deletedUser' WHERE postedBy = '" + username + "'";
stmt.addBatch(query);
}
} catch (SQLException e) {
success = false;
}
return success;
}
}
|