001 /**
002 * Copyright 2004-2013 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 org.apache.commons.lang.StringUtils;
019 import org.kuali.hr.job.Job;
020 import org.kuali.hr.time.HrBusinessObject;
021 import org.kuali.hr.time.service.base.TkServiceLocator;
022 import org.kuali.hr.time.util.HrBusinessObjectMaintainableImpl;
023 import org.kuali.rice.kim.api.identity.principal.EntityNamePrincipalName;
024 import org.kuali.rice.kim.api.services.KimApiServiceLocator;
025 import org.kuali.rice.kns.document.MaintenanceDocument;
026
027 import java.util.Map;
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 EntityNamePrincipalName p = KimApiServiceLocator.getIdentityService().getDefaultNamesForPrincipalId(fieldValues.get("principalId"));
062 if (p != null && p.getDefaultName() != null) {
063 fieldValues.put("name", p.getDefaultName().getCompositeName());
064 }else{
065 fieldValues.put("name", "");
066 }
067 }
068 if(StringUtils.equals(getMaintenanceAction(),"New")){
069 if (!fieldValues.containsKey("jobNumber") || StringUtils.isEmpty(fieldValues.get("jobNumber"))) {
070 if (fieldValues.containsKey("principalId") && StringUtils.isNotEmpty(fieldValues.get("principalId"))) {
071 Job maxJob = TkServiceLocator.getJobService().getMaxJob(fieldValues.get("principalId"));
072 if(maxJob != null) {
073 fieldValues.put("jobNumber", Long.toString(maxJob.getJobNumber() +1));
074 } else {
075 fieldValues.put("jobNumber", "0");
076 }
077 }
078 }
079 }
080
081 return super.populateBusinessObject(fieldValues, maintenanceDocument,
082 methodToCall);
083 }
084
085 @Override
086 public HrBusinessObject getObjectById(String id) {
087 return (HrBusinessObject)TkServiceLocator.getJobService().getJob(id);
088 }
089
090 @Override
091 public void customSaveLogic(HrBusinessObject hrObj) {
092 if(StringUtils.equals(getMaintenanceAction(),"New")){
093 Job job = (Job)hrObj;
094 this.setJobNumber(job);
095 }
096 }
097
098
099 }