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.job.service; 017 018 import java.util.Map; 019 020 import org.apache.commons.lang.StringUtils; 021 import org.kuali.hr.job.Job; 022 import org.kuali.hr.time.HrBusinessObject; 023 import org.kuali.hr.time.service.base.TkServiceLocator; 024 import org.kuali.hr.time.util.HrBusinessObjectMaintainableImpl; 025 import org.kuali.rice.kim.api.identity.Person; 026 import org.kuali.rice.kim.api.services.KimApiServiceLocator; 027 import org.kuali.rice.kns.document.MaintenanceDocument; 028 029 /** 030 * Hooks in to Rice to over-ride the way we are saving our Business Objects. We 031 * treat our business objects as immutable, the default Rice behavior is to modify 032 * existing rows in the database. 033 */ 034 public class JobMaintainableImpl extends HrBusinessObjectMaintainableImpl { 035 036 /** 037 * 038 */ 039 private static final long serialVersionUID = 1L; 040 041 042 public void setJobNumber(Job job) { 043 Long jobNumber = new Long("0"); 044 Job maxJob = TkServiceLocator.getJobService().getMaxJob(job.getPrincipalId()); 045 046 if(maxJob != null) { 047 // get the max of job number of the collection 048 jobNumber = maxJob.getJobNumber() +1; 049 } 050 job.setJobNumber(jobNumber); 051 } 052 /** 053 * Override to populate user information in Maintenance page 054 */ 055 @SuppressWarnings("rawtypes") 056 @Override 057 public Map populateBusinessObject(Map<String, String> fieldValues, 058 MaintenanceDocument maintenanceDocument, String methodToCall) { 059 if (fieldValues.containsKey("principalId") 060 && StringUtils.isNotEmpty(fieldValues.get("principalId"))) { 061 Person p = KimApiServiceLocator.getPersonService().getPerson( 062 fieldValues.get("principalId")); 063 if (p != null) { 064 fieldValues.put("name", p.getName()); 065 }else{ 066 fieldValues.put("name", ""); 067 } 068 } 069 if(StringUtils.equals(getMaintenanceAction(),"New")){ 070 if (!fieldValues.containsKey("jobNumber") || StringUtils.isEmpty(fieldValues.get("jobNumber"))) { 071 if (fieldValues.containsKey("principalId") && StringUtils.isNotEmpty(fieldValues.get("principalId"))) { 072 Job maxJob = TkServiceLocator.getJobService().getMaxJob(fieldValues.get("principalId")); 073 if(maxJob != null) { 074 fieldValues.put("jobNumber", Long.toString(maxJob.getJobNumber() +1)); 075 } else { 076 fieldValues.put("jobNumber", "0"); 077 } 078 } 079 } 080 } 081 082 return super.populateBusinessObject(fieldValues, maintenanceDocument, 083 methodToCall); 084 } 085 086 @Override 087 public HrBusinessObject getObjectById(String id) { 088 return (HrBusinessObject)TkServiceLocator.getJobService().getJob(id); 089 } 090 091 @Override 092 public void customSaveLogic(HrBusinessObject hrObj) { 093 if(StringUtils.equals(getMaintenanceAction(),"New")){ 094 Job job = (Job)hrObj; 095 this.setJobNumber(job); 096 } 097 } 098 099 100 }