1 41 package com.mvnforum.admin; 42 43 import java.sql.Timestamp ; 44 import java.util.*; 45 46 import com.mvnforum.*; 47 import com.mvnforum.auth.*; 48 import com.mvnforum.db.DAOFactory; 49 import com.mvnforum.db.GroupsBean; 50 import net.myvietnam.mvncore.exception.*; 51 import net.myvietnam.mvncore.util.*; 52 import net.myvietnam.mvncore.web.GenericRequest; 53 import net.myvietnam.mvncore.web.GenericResponse; 54 55 public class GroupsWebHandler { 56 57 private OnlineUserManager onlineUserManager = OnlineUserManager.getInstance(); 58 59 public GroupsWebHandler() { 60 } 61 62 public void processAdd(GenericRequest request, GenericResponse response) 63 throws ObjectNotFoundException, BadInputException, CreateException, DatabaseException, DuplicateKeyException, 64 ForeignKeyNotFoundException, AuthenticationException, AssertionException { 65 66 OnlineUser onlineUser = onlineUserManager.getOnlineUser(request); 67 MVNForumPermission permission = onlineUser.getPermission(); 68 permission.ensureCanAdminSystem(); 69 70 MyUtil.saveVNTyperMode(request, response); 71 Timestamp now = DateUtil.getCurrentGMTTimestamp(); 72 73 String groupName = GenericParamUtil.getParameterSafe(request, "GroupName", true); 74 String groupDesc = GenericParamUtil.getParameterSafe(request, "GroupDesc", false); 75 int groupOption = 0; 77 if (groupName.toLowerCase().startsWith(MVNForumGlobal.COMPANY_GROUP_FREFIX.toLowerCase())) { 79 throw new BadInputException("Cannot add group with the name reserved for company."); 80 } 81 82 DAOFactory.getGroupsDAO().create("", groupName, groupDesc, 83 groupOption, now, now); 84 85 String groupOwnerName = GenericParamUtil.getParameterSafe(request, "GroupOwnerName", false); 87 if (groupOwnerName.length() > 0) { 88 int groupID = DAOFactory.getGroupsDAO().getGroupIDFromGroupName(groupName); 89 int privilege = 0; try { 91 DAOFactory.getGroupsDAO().updateOwner(groupID, groupOwnerName, now); 93 DAOFactory.getMemberGroupDAO().create(groupID, groupOwnerName, privilege, now, now); 94 } catch (ForeignKeyNotFoundException ex) { 95 } catch (DuplicateKeyException ex) { 98 } 100 } 101 } 102 103 public void prepareDelete(GenericRequest request) 104 throws ObjectNotFoundException, BadInputException, DatabaseException, AuthenticationException, AssertionException { 105 106 OnlineUser onlineUser = onlineUserManager.getOnlineUser(request); 107 MVNForumPermission permission = onlineUser.getPermission(); 108 permission.ensureCanAdminSystem(); 109 110 Locale locale = I18nUtil.getLocaleInRequest(request); 111 112 int groupID = GenericParamUtil.getParameterInt(request, "group"); 114 115 if (groupID <= MVNForumConstant.LAST_RESERVED_GROUP_ID) { 117 String localizedMessage = MVNForumResourceBundle.getString(locale, "mvncore.exception.BadInputException.cannot_delete_group.id_less_than"); 118 throw new BadInputException(localizedMessage); 119 } 121 122 GroupsBean groupsBean = DAOFactory.getGroupsDAO().getGroup(groupID); 123 124 request.setAttribute("GroupsBean", groupsBean); 125 } 126 127 public void processDelete(GenericRequest request) 128 throws BadInputException, ObjectNotFoundException, DatabaseException, AuthenticationException, AssertionException { 129 130 OnlineUser onlineUser = onlineUserManager.getOnlineUser(request); 131 MVNForumPermission permission = onlineUser.getPermission(); 132 permission.ensureCanAdminSystem(); 133 134 Locale locale = I18nUtil.getLocaleInRequest(request); 135 136 int groupID = GenericParamUtil.getParameterInt(request, "group"); 138 139 if (groupID <= MVNForumConstant.LAST_RESERVED_GROUP_ID) { 141 String localizedMessage = MVNForumResourceBundle.getString(locale, "mvncore.exception.BadInputException.cannot_delete_group.id_less_than", new Object []{Integer.toString(MVNForumConstant.LAST_RESERVED_GROUP_ID)}); 142 throw new BadInputException(localizedMessage); 143 } 145 146 GroupsBean groupsBean = DAOFactory.getGroupsDAO().getGroup(groupID); 148 if (groupsBean.getGroupName().toLowerCase().startsWith(MVNForumGlobal.COMPANY_GROUP_FREFIX.toLowerCase())) { 149 throw new BadInputException("Cannot delete group with the name reserved for company."); 150 } 151 152 MyUtil.ensureCorrectCurrentPassword(request); 154 155 DAOFactory.getGroupForumDAO().delete_inGroup(groupID); 156 157 DAOFactory.getGroupPermissionDAO().delete_inGroup(groupID); 158 159 DAOFactory.getMemberGroupDAO().delete_inGroup(groupID); 160 161 DAOFactory.getGroupsDAO().delete(groupID); 162 } 163 164 public void processUpdate(GenericRequest request, GenericResponse response) 165 throws BadInputException, ObjectNotFoundException, DatabaseException, DuplicateKeyException, 166 AuthenticationException, AssertionException { 167 168 OnlineUser onlineUser = onlineUserManager.getOnlineUser(request); 169 MVNForumPermission permission = onlineUser.getPermission(); 170 permission.ensureCanAdminSystem(); 171 172 MyUtil.saveVNTyperMode(request, response); 173 Timestamp now = DateUtil.getCurrentGMTTimestamp(); 174 175 int groupID = GenericParamUtil.getParameterInt(request, "group"); 177 178 String groupName = GenericParamUtil.getParameterSafe(request, "GroupName", true); 180 String groupDesc = GenericParamUtil.getParameterSafe(request, "GroupDesc", true); 181 182 GroupsBean groupBean = DAOFactory.getGroupsDAO().getGroup(groupID); 184 if (groupBean.getGroupName().toLowerCase().startsWith(MVNForumGlobal.COMPANY_GROUP_FREFIX.toLowerCase())) { 185 throw new BadInputException("Cannot edit auto-generated group for company."); 186 } 187 188 DAOFactory.getGroupsDAO().update(groupID, groupName, groupDesc, now); 190 } 191 192 public void processUpdateGroupOwner(GenericRequest request) 193 throws ObjectNotFoundException, BadInputException, DatabaseException, ForeignKeyNotFoundException, 194 CreateException, AuthenticationException, AssertionException { 195 196 OnlineUser onlineUser = onlineUserManager.getOnlineUser(request); 197 MVNForumPermission permission = onlineUser.getPermission(); 198 permission.ensureCanAdminSystem(); 199 200 Locale locale = I18nUtil.getLocaleInRequest(request); 201 202 Timestamp now = DateUtil.getCurrentGMTTimestamp(); 203 204 int groupID = GenericParamUtil.getParameterInt(request, "group"); 206 207 if (groupID <= MVNForumConstant.LAST_RESERVED_GROUP_ID) { 209 String localizedMessage = MVNForumResourceBundle.getString(locale, "mvncore.exception.BadInputException.cannot_delete_group_owner_for_reserved_groups"); 210 throw new BadInputException(localizedMessage); 211 } 213 215 String groupOwnerName = GenericParamUtil.getParameterSafe(request, "GroupOwnerName", false); 217 218 DAOFactory.getGroupsDAO().updateOwner(groupID, groupOwnerName, now); 220 221 225 if (groupOwnerName.length() > 0) { 226 int privilege = 0; try { 228 DAOFactory.getMemberGroupDAO().create(groupID, groupOwnerName, privilege, now, now); 229 } catch (DuplicateKeyException ex) { 230 } 232 } 233 } 234 235 public void prepareView(GenericRequest request) 236 throws BadInputException, ObjectNotFoundException, DatabaseException, AuthenticationException, AssertionException { 237 238 OnlineUser onlineUser = onlineUserManager.getOnlineUser(request); 239 MVNForumPermission permission = onlineUser.getPermission(); 240 permission.ensureCanAdminSystem(); 241 242 int groupID = GenericParamUtil.getParameterInt(request, "group"); 244 245 GroupsBean groupsBean = DAOFactory.getGroupsDAO().getGroup(groupID); 246 247 request.setAttribute("GroupsBean", groupsBean); 248 } 249 250 public void prepareList(GenericRequest request) 251 throws DatabaseException, AuthenticationException, AssertionException { 252 253 OnlineUser onlineUser = onlineUserManager.getOnlineUser(request); 254 MVNForumPermission permission = onlineUser.getPermission(); 255 permission.ensureCanAdminSystem(); 256 257 Collection groupsBeans = DAOFactory.getGroupsDAO().getGroups(); 258 259 Iterator iterator = groupsBeans.iterator(); 261 while(iterator.hasNext()) { 262 GroupsBean groupsBean = (GroupsBean)iterator.next(); 263 int groupID = groupsBean.getGroupID(); 264 if (groupID == MVNForumConstant.GROUP_ID_OF_REGISTERED_MEMBERS) { 265 int memberCount = DAOFactory.getMemberDAO().getNumberOfMembers(); 266 if (MVNForumConfig.isGuestUserInDatabase()) { 267 memberCount--; 269 } 270 groupsBean.setGroupMemberCount(memberCount); 271 } else if (groupID <= MVNForumConstant.LAST_RESERVED_GROUP_ID) { 272 groupsBean.setGroupMemberCount(0); 274 } else { 275 groupsBean.setGroupMemberCount(DAOFactory.getMemberGroupDAO().getNumberOfBeans_inGroup(groupID)); 276 } 277 } 278 279 request.setAttribute("GroupsBeans", groupsBeans); 280 } 281 282 } 283
| Popular Tags
|