1 62 package com.ivata.groupware.business.addressbook.struts; 63 64 import java.lang.reflect.InvocationTargetException ; 65 import java.util.HashMap ; 66 import java.util.Iterator ; 67 import java.util.List ; 68 import java.util.Map ; 69 70 import javax.servlet.http.HttpServletRequest ; 71 import javax.servlet.http.HttpServletResponse ; 72 import javax.servlet.http.HttpSession ; 73 74 import org.apache.commons.beanutils.PropertyUtils; 75 import org.apache.struts.action.ActionErrors; 76 import org.apache.struts.action.ActionForm; 77 import org.apache.struts.action.ActionMapping; 78 import org.apache.struts.taglib.TagUtils; 79 80 import com.ivata.groupware.admin.security.server.SecuritySession; 81 import com.ivata.groupware.business.addressbook.AddressBook; 82 import com.ivata.groupware.business.addressbook.person.group.GroupConstants; 83 import com.ivata.groupware.business.addressbook.person.group.GroupDO; 84 import com.ivata.mask.MaskFactory; 85 import com.ivata.mask.util.StringHandling; 86 import com.ivata.mask.util.SystemException; 87 import com.ivata.mask.web.struts.MaskAction; 88 import com.ivata.mask.web.struts.MaskAuthenticator; 89 90 101 102 public class GroupListAction extends MaskAction { 103 108 private AddressBook addressBook; 109 110 122 public GroupListAction(final AddressBook addressBook, 123 final MaskFactory maskFactory, 124 MaskAuthenticator authenticator) { 125 super(maskFactory, authenticator); 126 this.addressBook = addressBook; 127 } 128 129 138 protected void clear() { 139 } 140 141 165 public String execute(final ActionMapping mapping, 166 final ActionErrors errors, 167 final ActionForm form, 168 final HttpServletRequest request, 169 final HttpServletResponse response, 170 final HttpSession session) 171 throws SystemException { 172 String mode = request.getParameter("mode"); 173 if (StringHandling.isNullOrEmpty(mode)) { 174 throw new SystemException("No mode specified in GroupListAction"); 175 } 176 Integer selectedId = StringHandling.integerValue(request 177 .getParameter("selectedId")); 178 179 String contentFrameName, menuFrameName; 182 List groups; 183 SecuritySession securitySession = (SecuritySession) session.getAttribute("securitySession"); 184 String inputMask, forward, menuFrameURI, resourceFieldPath, deleteKey; 185 Boolean empty = null; 186 if ("addressBook".equals(mode)) { 187 contentFrameName = "ivataAddressBook"; 188 deleteKey = "addressBook.alert.delete"; 189 groups = addressBook.findAddressBooks(securitySession, true); 190 inputMask = "imAddressBookInputMaskAction"; 191 forward ="addressBookGroupList"; 192 menuFrameURI = "/addressBook/groupList.action?mode=addressBook"; 193 resourceFieldPath = "addressBook"; 194 } else if ("userGroup".equals(mode)) { 195 contentFrameName = "ivataUserGroup"; 196 deleteKey = "userGroup.alert.delete"; 197 groups = addressBook.findUserGroups(securitySession, false); 198 inputMask = "imUserGroupInputMaskAction"; 199 forward ="addressBookGroupList"; 200 menuFrameURI = "/addressBook/groupList.action?mode=userGroup"; 201 resourceFieldPath = "userGroup"; 202 } else if ("group".equals(mode)) { 203 contentFrameName = "ivataGroup"; 204 deleteKey = "group.alert.delete"; 205 groups = addressBook.findAddressBooks(securitySession, true); 206 inputMask = "imGroupInputMaskAction"; 207 forward ="addressBookGroupTree"; 208 resourceFieldPath = "group"; 209 menuFrameURI = "/addressBook/groupTree.action" 210 + "?inputMaskInvoked=true&mode=group"; 211 212 boolean idIsAddressBook = 214 "true".equals(request.getParameter("idIsAddressBook")); 215 216 Integer selectedIdString = null; 217 if (selectedId == null) { 220 try { 221 selectedId = (Integer )PropertyUtils.getProperty(form, 222 "selectedId"); 223 if (selectedId != null) { 226 idIsAddressBook = true; 227 } 228 } catch (IllegalAccessException e) { 229 throw new SystemException(e); 230 } catch (InvocationTargetException e) { 231 throw new SystemException(e); 232 } catch (NoSuchMethodException e) { 233 throw new SystemException(e); 234 } 235 } 236 if (selectedId == null) { 237 selectedIdString = GroupConstants.ADDRESS_BOOK_DEFAULT; 239 idIsAddressBook = true; 240 } else { 241 selectedIdString = selectedId; 242 } 243 if (!idIsAddressBook) { 244 GroupDO group = addressBook.findGroupByPrimaryKey( 249 securitySession, 250 selectedIdString); 251 assert (group != null); 252 selectedIdString = group.getAddressBook().getId(); 253 } 254 List children = addressBook.findGroupsByParent(securitySession, 256 selectedIdString); 257 empty = new Boolean (children.size() <= 0); 258 selectedId = selectedIdString; 259 } else { 260 throw new SystemException("ERROR in GroupFrameAction: unidentified mode '" 261 + mode 262 + "'"); 263 } 264 265 Map groupMap = new HashMap (); 267 Iterator iterator = groups.iterator(); 268 while (iterator.hasNext()) { 269 GroupDO group = (GroupDO) iterator.next(); 270 groupMap.put(group.getId().toString(), group.getName()); 272 } 273 274 try { 275 TagUtils tagUtils = TagUtils.getInstance(); 276 277 PropertyUtils.setProperty(form, "contentFrameName", contentFrameName); 278 PropertyUtils.setProperty(form, "deleteKey", deleteKey); 279 PropertyUtils.setProperty(form, "groupMap", groupMap); 280 PropertyUtils.setProperty(form, "inputMask", inputMask); 281 PropertyUtils.setProperty(form, "menuFrameURI", menuFrameURI); 282 PropertyUtils.setProperty(form, "resourceFieldPath", resourceFieldPath); 283 PropertyUtils.setProperty(form, "selectedId", selectedId); 284 285 if (empty != null) { 287 PropertyUtils.setProperty(form, "empty", empty); 288 } 289 } catch (IllegalAccessException e) { 290 throw new SystemException(e); 291 } catch (InvocationTargetException e) { 292 throw new SystemException(e); 293 } catch (NoSuchMethodException e) { 294 throw new SystemException(e); 295 } 296 297 return forward; 298 } 299 } 300 | Popular Tags |