1 192 package com.ivata.groupware.business.addressbook.struts; 193 194 import java.util.HashMap ; 195 import java.util.HashSet ; 196 import java.util.Iterator ; 197 import java.util.List ; 198 import java.util.Map ; 199 import java.util.Vector ; 200 201 import javax.servlet.http.HttpServletRequest ; 202 import javax.servlet.http.HttpServletResponse ; 203 import javax.servlet.http.HttpSession ; 204 205 import org.apache.log4j.Logger; 206 import org.apache.struts.action.ActionErrors; 207 import org.apache.struts.action.ActionForm; 208 import org.apache.struts.action.ActionMapping; 209 210 import com.ivata.groupware.admin.security.addressbook.AddressBookSecurity; 211 import com.ivata.groupware.admin.security.right.SecurityRights; 212 import com.ivata.groupware.admin.security.server.SecuritySession; 213 import com.ivata.groupware.admin.security.user.UserDO; 214 import com.ivata.groupware.admin.security.user.UserConstants; 215 import com.ivata.groupware.admin.setting.Settings; 216 import com.ivata.groupware.business.addressbook.AddressBook; 217 import com.ivata.groupware.business.addressbook.address.AddressDO; 218 import com.ivata.groupware.business.addressbook.person.PersonDO; 219 import com.ivata.groupware.business.addressbook.person.employee.EmployeeDO; 220 import com.ivata.groupware.business.addressbook.person.group.GroupConstants; 221 import com.ivata.groupware.business.addressbook.person.group.GroupDO; 222 import com.ivata.groupware.business.addressbook.right.AddressBookRights; 223 import com.ivata.mask.MaskFactory; 224 import com.ivata.mask.util.StringHandling; 225 import com.ivata.mask.util.SystemException; 226 import com.ivata.mask.web.struts.MaskAction; 227 import com.ivata.mask.web.struts.MaskAuthenticator; 228 229 230 241 public class PersonAction extends MaskAction { 242 245 private static Logger log = Logger.getLogger(PersonAction.class); 246 private AddressBook addressBook; 247 private AddressBookRights addressBookRights; 248 private AddressBookSecurity security; 249 private SecurityRights securityRights; 250 private Settings settings; 251 252 267 public PersonAction(AddressBook addressBook, 268 AddressBookRights addressBookRights, 269 AddressBookSecurity security, SecurityRights securityRights, 270 Settings settings, 271 MaskFactory maskFactory, MaskAuthenticator authenticator) { 272 super(maskFactory, authenticator); 273 this.addressBook = addressBook; 274 this.addressBookRights = addressBookRights; 275 this.security = security; 276 this.securityRights = securityRights; 277 this.settings = settings; 278 } 279 280 300 public void clear(final ActionMapping mapping, 301 final ActionErrors errors, 302 final ActionForm form, 303 final HttpServletRequest request, 304 final HttpServletResponse response, 305 final HttpSession session) throws SystemException { 306 if (log.isDebugEnabled()) { 307 log.debug("In PersonAction.clear"); 308 } 309 310 PersonForm personForm = (PersonForm) form; 311 personForm.clear(); 312 if (personForm.getRefreshOnExit() 313 && StringHandling.isNullOrEmpty(personForm.getClear())) { 314 request.setAttribute("openerPage", "/addressBook/index.action"); 316 } 317 318 if (log.isDebugEnabled()) { 319 log.debug("Out PersonAction.clear"); 320 } 321 } 322 323 345 public String execute(final ActionMapping mapping, 346 final ActionErrors errors, 347 final ActionForm form, 348 final HttpServletRequest request, 349 final HttpServletResponse response, 350 final HttpSession session) throws SystemException { 351 if (log.isDebugEnabled()) { 352 log.debug("In PersonAction.execute"); 353 } 354 355 SecuritySession securitySession = (SecuritySession) 356 session.getAttribute("securitySession"); 357 PersonForm personForm = (PersonForm) form; 358 359 session.setAttribute("addressBookPersonForm", personForm); 361 362 Map addressBookGroupNames = personForm.getAddressBookGroupNames(); 365 if (addressBookGroupNames == null) { 366 personForm.setAddressBookGroupNames(addressBookGroupNames = 367 new HashMap ()); 368 List allAddressBookGroups = addressBook.findAddressBooks( 369 securitySession, true); 370 Iterator groupIterator = allAddressBookGroups.iterator(); 371 while(groupIterator.hasNext()) { 372 GroupDO addressBookGroup = (GroupDO) groupIterator.next(); 373 addressBookGroupNames.put(addressBookGroup.getId(), 374 addressBookGroup.getName()); 375 } 376 } 377 PersonDO person = personForm.getPerson(); 379 if (!StringHandling.isNullOrEmpty(personForm.getUserName()) 380 || (personForm.getAddressBookGroupId() == null)) { 381 GroupDO defaultAddressBook = 382 addressBook.findGroupByPrimaryKey(securitySession, 383 GroupConstants.ADDRESS_BOOK_DEFAULT); 384 personForm.setAddressBookGroupId(defaultAddressBook.getId()); 385 personForm.setAddressBookGroupName(defaultAddressBook.getName()); 386 person.setGroup(defaultAddressBook); 387 } else { 388 personForm.setAddressBookGroupName((String ) 390 addressBookGroupNames.get( 391 personForm.getAddressBookGroupId())); 392 } 393 394 if (personForm.getUserGroups() == null) { 396 personForm.setUserGroups(addressBook.findUserGroups(securitySession, 397 true)); 398 } 399 400 if (person.getAddress() == null) { 402 person.setAddress(new AddressDO()); 403 } 404 if (person.getEmployee() == null) { 406 person.setEmployee(new EmployeeDO()); 407 } 408 409 personForm.findAndSetCountry(securitySession); 411 412 GroupDO group = person.getGroup(); 413 if (group == null) { 414 person.setGroup(group = new GroupDO()); 415 } 416 UserDO user = person.getUser(); 417 if (user == null) { 418 person.setUser(user = new UserDO()); 419 } 420 if (user.getGroups() == null) { 421 user.setGroups(new HashSet ()); 422 } 423 424 personForm.setPersonFromTelecomAddresses(); 426 427 428 String activeTabKey = 429 (personForm.getPersonTab_activeTabKey() == null) 430 ? "" 431 : personForm.getPersonTab_activeTabKey(); 432 433 if (!StringHandling.isNullOrEmpty(personForm.getRestoreUser())) { 436 user.setDeleted(false); 437 personForm.setUserName(person.getUser().getName()); 438 440 int size = personForm.getTelecomAddresses().size(); 442 String emailSubHost = 443 settings.getStringSetting( 444 securitySession, 445 "emailSubHost", 446 user); 447 448 449 456 } 457 458 List tabKeys = personForm.getTabKeys(); 460 if (tabKeys == null) { 461 personForm.setTabKeys(tabKeys = new Vector ()); 462 } else { 463 tabKeys.clear(); 464 } 465 466 tabKeys.add("person.tab.contact"); 468 tabKeys.add("person.tab.address"); 469 tabKeys.add("person.tab.telecomAddress"); 470 471 if (person.getId() != null) { 474 if (user.getId() != null) { 476 personForm.setDeleteKey("person.alert.delete.user"); 477 } else { 478 personForm.setDeleteKey("person.alert.delete"); 479 } 480 481 if ((user.getId() != null) 484 || securityRights.canAddUser(securitySession)) { 485 tabKeys.add("person.tab.user"); 486 } 487 if (false 492 && (user.getId() != null)) { 493 tabKeys.add("person.tab.groups"); 494 } 495 if (addressBookRights.canAddEmployeeToPerson(securitySession, 497 person)) { 498 tabKeys.add("person.tab.employee"); 499 } 500 } 501 personForm.setReadOnly(!addressBookRights.canAmendInGroup( 503 securitySession, person.getGroup().getAddressBook())); 504 if (personForm.getReadOnly() 505 && person.getCreatedBy().equals(securitySession.getUser())) { 506 personForm.setReadOnly(false); 507 } 508 boolean canRemove = addressBookRights.canRemoveFromGroup( 511 securitySession, person.getGroup().getAddressBook()) 512 && !UserConstants.ADMINISTRATOR.equals( 513 personForm.getPerson().getId()); 514 Boolean demoVersion = settings.getBooleanSetting(securitySession, 516 "demoVersion", null); 517 if (demoVersion.booleanValue() 518 && (person.getUser() != null) 519 && (person.getUser().getId() != null)) { 520 canRemove = false; 521 } 522 personForm.setCanRemove(canRemove); 523 524 if ("person.tab.address".equals(activeTabKey)) { 525 personForm.setTabPage("/addressBook/address.jsp"); 526 personForm.setHelpKey("addressbook.address"); 527 } else if ("person.tab.telecomAddress".equals(activeTabKey)) { 528 personForm.setTabPage("/addressBook/telecomAddress.jsp"); 529 personForm.setHelpKey("addressbook.telecomAddress"); 530 personForm.setTelecomAddressesFromPerson(); 533 534 } else if ("person.tab.restoreUser".equals(activeTabKey)) { 536 personForm.setTabPage("/addressBook/restoreUser.jsp"); 537 personForm.setHelpKey("addressbook.restoreUser"); 538 539 } else if ("person.tab.user".equals(activeTabKey)) { 540 personForm.setTabPage("/addressBook/user.jsp"); 541 personForm.setHelpKey("addressbook.user"); 542 } else if ("person.tab.employee".equals(activeTabKey)) { 543 personForm.setTabPage("/addressBook/employee.jsp"); 545 personForm.setHelpKey("addressbook.employee"); 546 } else { 547 personForm.setTabPage("/addressBook/personDetails.jsp"); 548 personForm.setHelpKey("addressbook.person"); 549 } 550 551 if (log.isDebugEnabled()) { 552 log.debug("Out PersonAction.execute"); 553 } 554 return null; 555 } 556 557 581 public String onConfirm(final ActionMapping mapping, 582 final ActionErrors errors, 583 final ActionForm form, 584 final HttpServletRequest request, 585 final HttpServletResponse response, 586 final HttpSession session, 587 final String defaultForward) throws SystemException { 588 if (log.isDebugEnabled()) { 589 log.debug("In PersonAction.onConfirm"); 590 } 591 592 SecuritySession securitySession = (SecuritySession) 593 session.getAttribute("securitySession"); 594 PersonForm personForm = (PersonForm) form; 595 PersonDO person = personForm.getPerson(); 596 UserDO user = person.getUser(); 597 if (user == null) { 598 person.setUser(user = new UserDO()); 599 } 600 601 GroupDO group = addressBook.findGroupByPrimaryKey(securitySession, 603 person.getGroup().getId()); 604 person.setGroup(group); 605 606 personForm.setPersonFromTelecomAddresses(); 608 609 AddressDO address = person.getAddress(); 610 if (StringHandling.isNullOrEmpty(address.getPostCode()) 611 && StringHandling.isNullOrEmpty(address.getRegion()) 612 && StringHandling.isNullOrEmpty(address.getStreetAddress()) 613 && StringHandling.isNullOrEmpty(address.getTown())) { 614 person.setAddress(null); 618 } 619 620 if (person.getId() == null) { 622 person.setEmployee(null); 625 person.setUser(null); 628 person = addressBook.addPerson(securitySession, person); 629 630 } else { 632 if (!personForm.isEmployee()) { 635 person.setEmployee(null); 636 } 637 638 if (StringHandling.isNullOrEmpty(personForm.getUserName())) { 640 if (user.getId() == null) { 641 person.setUser(null); 642 } else { 643 user.setDeleted(true); 644 security.amendUser(securitySession, user); 645 } 646 } else { 647 user.setName(personForm.getUserName()); 648 user.setDeleted(false); 649 user.setEnabled(personForm.getEnableUser()); 650 if (user.getId() == null) { 651 user.setId(person.getId()); 652 security.addUserToPerson(securitySession, person); 653 } else { 654 security.amendUser(securitySession, user); 655 } 656 } 657 658 person = addressBook.amendPerson(securitySession, person); 659 } 660 661 665 if ("ok".equals(defaultForward)) { 667 if (log.isDebugEnabled()) { 668 log.debug("Out PersonAction.onConfirm (ok)"); 669 } 670 return "utilClosePopUp"; 671 } 672 if (person.getEmployee() == null) { 676 person.setEmployee(new EmployeeDO()); 677 } 678 personForm.setPerson(person); 679 680 if (log.isDebugEnabled()) { 681 log.debug("Out PersonAction.onConfirm"); 682 } 683 684 person.setAddress(address); 686 execute(mapping, errors, form, request, response, session); 688 return defaultForward; 689 } 690 691 713 public String onDelete(final ActionMapping mapping, 714 final ActionErrors errors, 715 final ActionForm form, 716 final HttpServletRequest request, 717 final HttpServletResponse response, 718 final HttpSession session, final String defaultForward) throws SystemException { 719 if (log.isDebugEnabled()) { 720 log.debug("Out PersonAction.onDelete"); 721 } 722 723 PersonForm personForm = (PersonForm) form; 724 PersonDO person = personForm.getPerson(); 725 SecuritySession securitySession = (SecuritySession) 726 session.getAttribute("securitySession"); 727 728 UserDO user = person.getUser(); 729 if (user.getId() != null) { 730 user.setDeleted(true); 731 security.amendUser(securitySession, user); 732 } 733 734 addressBook.removePerson(securitySession, person.getId()); 736 if (log.isDebugEnabled()) { 737 log.debug("Out PersonAction.onDelete"); 738 } 739 return "utilClosePopUp"; 740 } 741 } 742 | Popular Tags |