1 105 package com.ivata.groupware.business.addressbook.person.group.tree; 106 107 108 import java.io.IOException ; 109 import java.io.ObjectInputStream ; 110 import java.io.ObjectOutputStream ; 111 import java.io.Serializable ; 112 import java.util.Iterator ; 113 import java.util.List ; 114 import java.util.Vector ; 115 116 import javax.swing.event.TreeModelListener ; 117 import javax.swing.tree.TreeModel ; 118 import javax.swing.tree.TreePath ; 119 120 import com.ivata.groupware.admin.security.server.SecuritySession; 121 import com.ivata.groupware.business.addressbook.AddressBook; 122 import com.ivata.groupware.business.addressbook.person.PersonDO; 123 import com.ivata.groupware.business.addressbook.person.group.GroupConstants; 124 import com.ivata.groupware.business.addressbook.person.group.GroupDO; 125 import com.ivata.groupware.business.addressbook.person.group.right.UserRightFilter; 126 import com.ivata.mask.util.SystemException; 127 128 129 154 public class PersonTreeModel implements TreeModel , Serializable { 155 156 161 private AddressBook addressBook; 162 163 168 private Integer excludeBranch = null; 169 170 173 private UserRightFilter filter = null; 174 175 179 private boolean includePeople = false; 180 181 184 private boolean onlyUsers = false; 185 186 189 private Integer rootId = GroupConstants.ADDRESS_BOOK; 190 191 196 private SecuritySession securitySession; 197 198 205 public PersonTreeModel(AddressBook addressBook, SecuritySession securitySession) { 206 this.addressBook = addressBook; 207 this.securitySession = securitySession; 208 } 209 210 215 public void addTreeModelListener(final TreeModelListener l) { 216 throw new UnsupportedOperationException ("Method addTreeModelListener() not implemented."); 217 } 218 219 228 private List getAllChildren(final Object parent) { 229 GroupDO parentGroup = ((PersonTreeNode) parent).getGroup(); 230 List allChildren = new Vector (); 232 try { 233 List groups = addressBook.findGroupsByParent(securitySession, 234 parentGroup.getId()); 235 Iterator groupIterator = groups.iterator(); 236 while(groupIterator.hasNext()) { 237 GroupDO childGroup = (GroupDO) groupIterator.next(); 238 if (!childGroup.getId().equals(excludeBranch)) { 239 allChildren.add(new PersonTreeNode(childGroup)); 240 } 241 } 242 } catch(SystemException e) { 243 throw new RuntimeException ("ERROR in group tree model: could not locate children of '" 244 + parentGroup.getId() 245 + "'", 246 e); 247 } 248 if (includePeople) { 249 Iterator personIterator = parentGroup.getPeople().iterator(); 250 while(personIterator.hasNext()) { 251 allChildren.add(new PersonTreeNode((PersonDO) personIterator.next())); 252 } 253 } 254 return allChildren; 255 } 256 257 266 public final Object getChild(final Object parent, 267 final int index) { 268 PersonTreeNode parentNode = (PersonTreeNode) parent; 269 if (parentNode.getPerson() != null) { 270 return null; 271 } 272 List allChildren = getAllChildren(parent); 273 if (allChildren.size() == 0) { 274 return null; 275 } 276 return allChildren.get(index); 277 } 278 279 280 287 public final int getChildCount(final Object parent) { 288 PersonTreeNode parentNode = (PersonTreeNode) parent; 289 if (parentNode.getPerson() != null) { 290 return 0; 291 } 292 List allChildren = getAllChildren(parent); 293 return allChildren.size(); 294 } 295 296 303 public final Integer getExcludeBranch() { 304 return excludeBranch; 305 } 306 307 314 public UserRightFilter getFilter() { 315 return filter; 316 } 317 318 325 public final boolean getIncludePeople() { 326 return includePeople; 327 } 328 329 338 public final int getIndexOfChild(final Object parent, 339 final Object child) { 340 PersonTreeNode parentNode = (PersonTreeNode) parent; 341 if (parentNode.getPerson() != null) { 342 return -1; 343 } 344 List allChildren = getAllChildren(parent); 345 if (allChildren.size() == 0) { 346 return -1; 347 } 348 return allChildren.indexOf(child); 349 } 350 351 359 public final boolean getOnlyUsers() { 360 return onlyUsers; 361 } 362 363 369 public final Object getRoot() { 370 try { 372 GroupDO root = addressBook.findGroupByPrimaryKey(securitySession, rootId); 373 return new PersonTreeNode(root); 374 } catch(SystemException e) { 375 throw new RuntimeException ("ERROR in group tree model: could not locate root with id '" 376 + rootId 377 + "'", 378 e); 379 } 380 381 } 382 383 388 public final Integer getRootId() { 389 return rootId; 390 } 391 392 401 public boolean isLeaf(final Object node) { 402 PersonTreeNode parentNode = (PersonTreeNode) node; 403 return parentNode.getPerson() != null; 404 } 405 406 413 private void readObject(final ObjectInputStream ois) throws ClassNotFoundException , IOException { 414 ois.defaultReadObject(); 415 } 416 417 422 public void removeTreeModelListener(final TreeModelListener l) { 423 throw new UnsupportedOperationException ("Method removeTreeModelListener() not implemented."); 424 } 425 426 434 public final void setExcludeBranch(final Integer excludeBranchParam) { 435 this.excludeBranch = excludeBranchParam; 436 } 437 438 445 public final void setFilter(final UserRightFilter filter) { 446 this.filter = filter; 447 } 448 449 457 public final void setIncludePeople(final boolean includePeople) { 458 this.includePeople = includePeople; 459 } 460 461 467 public final void setOnlyUsers(final boolean onlyUsers) { 468 this.onlyUsers = onlyUsers; 469 } 470 471 475 public final void setRootId(final Integer rootId) { 476 this.rootId = rootId; 477 } 478 479 485 public void valueForPathChanged(final TreePath path, 486 final Object newValue) { 487 throw new UnsupportedOperationException ("Method valueForPathChanged() not implemented."); 488 } 489 490 496 private void writeObject(final ObjectOutputStream oos) throws IOException { 497 oos.defaultWriteObject(); 498 } 499 } 500 | Popular Tags |