001 /** 002 * Copyright 2004-2012 The Kuali Foundation 003 * 004 * Licensed under the Educational Community License, Version 2.0 (the "License"); 005 * you may not use this file except in compliance with the License. 006 * You may obtain a copy of the License at 007 * 008 * http://www.opensource.org/licenses/ecl2.php 009 * 010 * Unless required by applicable law or agreed to in writing, software 011 * distributed under the License is distributed on an "AS IS" BASIS, 012 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 013 * See the License for the specific language governing permissions and 014 * limitations under the License. 015 */ 016 package org.kuali.hr.time.department; 017 018 import java.util.ArrayList; 019 import java.util.List; 020 import java.util.Map; 021 022 import org.kuali.hr.time.HrBusinessObject; 023 import org.kuali.hr.time.roles.TkRole; 024 import org.kuali.hr.time.service.base.TkServiceLocator; 025 import org.kuali.hr.time.util.HrBusinessObjectMaintainableImpl; 026 import org.kuali.hr.time.util.TKContext; 027 import org.kuali.rice.kim.api.identity.Person; 028 import org.kuali.rice.kim.api.services.KimApiServiceLocator; 029 import org.kuali.rice.kns.document.MaintenanceDocument; 030 import org.kuali.rice.kns.maintenance.Maintainable; 031 import org.kuali.rice.kns.web.ui.Section; 032 import org.kuali.rice.krad.bo.PersistableBusinessObject; 033 import org.kuali.rice.krad.util.GlobalVariables; 034 import org.kuali.rice.krad.util.KRADConstants; 035 036 public class DepartmentMaintainableImpl extends HrBusinessObjectMaintainableImpl { 037 038 private static final long serialVersionUID = -330523155799598560L; 039 040 @Override 041 protected void setNewCollectionLineDefaultValues(String arg0, 042 PersistableBusinessObject arg1) { 043 if(arg1 instanceof TkRole){ 044 TkRole role = (TkRole)arg1; 045 Department dept = (Department) this.getBusinessObject(); 046 role.setEffectiveDate(dept.getEffectiveDate()); 047 } 048 super.setNewCollectionLineDefaultValues(arg0, arg1); 049 } 050 051 @Override 052 public void processAfterEdit( MaintenanceDocument document, Map<String,String[]> parameters ) { 053 Department dOld = (Department)document.getOldMaintainableObject().getBusinessObject(); 054 Department dNew = (Department)document.getNewMaintainableObject().getBusinessObject(); 055 056 TkServiceLocator.getDepartmentService().populateDepartmentRoles(dOld); 057 TkServiceLocator.getDepartmentService().populateDepartmentRoles(dNew); 058 } 059 060 @Override 061 public void addNewLineToCollection(String collectionName) { 062 if (collectionName.equals("roles")) { 063 TkRole aRole = (TkRole)newCollectionLines.get(collectionName ); 064 if ( aRole != null ) { 065 if(!aRole.getPrincipalId().isEmpty()) { 066 Person aPerson = KimApiServiceLocator.getPersonService().getPerson(aRole.getPrincipalId()); 067 if(aPerson == null) { 068 GlobalVariables.getMessageMap().putErrorWithoutFullErrorPath(KRADConstants.MAINTENANCE_NEW_MAINTAINABLE +"roles", 069 "dept.role.person.notExist",aRole.getPrincipalId()); 070 return; 071 } 072 } 073 } 074 } 075 super.addNewLineToCollection(collectionName); 076 } 077 078 @SuppressWarnings("rawtypes") 079 @Override 080 public List getSections(MaintenanceDocument document, 081 Maintainable oldMaintainable) { 082 List sections = super.getSections(document, oldMaintainable); 083 for (Object obj : sections) { 084 Section sec = (Section) obj; 085 if (document.isOldBusinessObjectInDocument() 086 && sec.getSectionId().equals("inactiveRoles")) { 087 sec.setHidden(false); 088 } else if (!document.isOldBusinessObjectInDocument() 089 && sec.getSectionId().equals("inactiveRoles")) { 090 sec.setHidden(true); 091 } 092 } 093 return sections; 094 } 095 096 @Override 097 public HrBusinessObject getObjectById(String id) { 098 return TkServiceLocator.getDepartmentService().getDepartment(id); 099 } 100 101 @Override 102 public void customSaveLogic(HrBusinessObject hrObj) { 103 Department dept = (Department)hrObj; 104 List<TkRole> roles = dept.getRoles(); 105 List<TkRole> rolesCopy = new ArrayList<TkRole>(); 106 107 rolesCopy.addAll(roles); 108 109 if (dept.getInactiveRoles() != null 110 && dept.getInactiveRoles().size() > 0) { 111 for (TkRole role : dept.getInactiveRoles()) { 112 roles.add(role); 113 } 114 } 115 116 dept.setRoles(roles); 117 for (TkRole role : roles) { 118 role.setDepartmentObj(dept); 119 role.setUserPrincipalId(TKContext.getPrincipalId()); 120 } 121 TkServiceLocator.getTkRoleService().saveOrUpdate(roles); 122 } 123 }