public ServiceResult<Set<String>> tagFriendToPage( long pageID, String[] usernames, String username) { ServiceResult<Set<String>> result = new ServiceResult<Set<String>>(); result.setOK(true); PersistenceManager pm = null; UserInfo user = null; Page page = null; try { pm = PMF.get().getPersistenceManager(); page = pm.getObjectById(Page.class, pageID); if (page == null) { result.setOK(false); result.setMessage(Global.messages.getString("no_page_found")); } else { if (!page.getUsername().equals(username)) { result.setOK(false); result.setMessage( String.format(Global.messages.getString("no_permission_to_tag_to_page"), username)); } else { ServiceResult<Void> notiResult = null; for (String user2Tag : usernames) { try { if (page.getSetFriendsTaggedID().contains(user2Tag)) { result.setOK(false); result.setMessage( result.getMessage() + ";" + String.format( Global.messages.getString("already_tag_user_to_page"), user2Tag, pageID)); } else { user = pm.getObjectById(UserInfo.class, user2Tag); page.getSetFriendsTaggedID().add(user2Tag); user.getSetPageTaggedID().add(pageID); result.setMessage( result.getMessage() + ";" + String.format( Global.messages.getString("tag_user_to_page_successfully"), user2Tag, pageID)); // notification notiResult = dbNoti.insertWhenTagUserToPage(pageID, user2Tag, true); if (notiResult.isOK() == false) { result.setMessage( result.getMessage() + ";Notification Exception:" + notiResult.getMessage()); } } } catch (Exception e) { e.printStackTrace(); result.setOK(false); result.setMessage( result.getMessage() + ";" + String.format( Global.messages.getString("tag_user_to_page_fail"), user2Tag, pageID)); } } // if (result.isOK()) { // result.setMessage("Tag friends thanh cong"); // } } } } catch (Exception e) { e.printStackTrace(); result.setMessage(Global.messages.getString("tag_friend_to_page_fail")); } finally { try { pm.close(); } catch (Exception e) { e.printStackTrace(); } } if (result.isOK()) { result.setResult(page.getSetFriendsTaggedID()); } return result; }