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.kuali.hr.job.Job; 019 import org.springframework.cache.annotation.CacheEvict; 020 import org.springframework.cache.annotation.Cacheable; 021 022 import java.math.BigDecimal; 023 import java.util.Date; 024 import java.util.List; 025 026 public interface JobService { 027 028 /** 029 * Updates or saves a job 030 * @param job 031 */ 032 @CacheEvict(value={Job.CACHE_NAME}, allEntries = true) 033 public void saveOrUpdate(Job job); 034 035 /** 036 * Updates or saves a list of jobs 037 * @param jobList 038 */ 039 @CacheEvict(value={Job.CACHE_NAME}, allEntries = true) 040 public void saveOrUpdate(List<Job> jobList); 041 042 /** 043 * Provides a list of current jobs that are valid relative to the provided effective date. 044 * Timestamp of row creation is taken into account when two rows with the same job number 045 * have the same effective date. 046 * 047 * Assignments are NOT populated on this object. We may want to consider removing 048 * getAssignments(). 049 * 050 * @param principalId 051 * @param asOfDate 052 * @return 053 */ 054 @Cacheable(value= Job.CACHE_NAME, key="'principalId=' + #p0 + '|' + 'asOfDate=' + #p1") 055 public List<Job> getJobs(String principalId, Date asOfDate); 056 057 /** 058 * Provides a job by specific job number, principal ID and as of Date combination. 059 */ 060 @Cacheable(value= Job.CACHE_NAME, key="'principalId=' + #p0 + '|' + 'jobNumber=' + #p1 + '|' + 'asOfDate=' + #p2") 061 public Job getJob(String principalId, Long jobNumber, Date asOfDate); 062 063 /** 064 * Provides a job by specific job number, principal ID and as of Date combination, and check details will throw error if required. 065 */ 066 @Cacheable(value= Job.CACHE_NAME, key="'principalId=' + #p0 + '|' + 'jobNumber=' + #p1 + '|' + 'asOfDate=' + #p2 + '|' + 'chkDetails=' + #p3") 067 public Job getJob(String principalId, Long jobNumber, Date asOfDate, boolean chkDetails); 068 069 /** 070 * For a given principal ID, the job that is marked "primary" is returned 071 * here. 072 * 073 * @param principalId The principal under investigation 074 * @param asOfDate Run the request as of this date. 075 * @return 076 */ 077 @Cacheable(value= Job.CACHE_NAME, key="'{getPrimaryJob}' + 'principalId=' + #p0 + '|' + 'asOfDate=' + #p1") 078 public Job getPrimaryJob(String principalId, Date asOfDate); 079 080 /** 081 * 082 * @param positionNbr 083 * @param asOfDate 084 * @return 085 */ 086 @Cacheable(value= Job.CACHE_NAME, key="'positionNbr=' + #p0 + '|' + 'asOfDate=' + #p1") 087 public List<Job> getActiveJobsForPosition(String positionNbr, Date asOfDate); 088 089 /** 090 * 091 * @param hrPayType 092 * @param asOfDate 093 * @return 094 */ 095 @Cacheable(value= Job.CACHE_NAME, key="'hrPayType=' + #p0 + '|' + 'asOfDate=' + #p1") 096 public List<Job> getActiveJobsForPayType(String hrPayType, Date asOfDate); 097 098 /** 099 * Get job by the unique id 100 * @param hrJobId 101 * @return 102 */ 103 @Cacheable(value= Job.CACHE_NAME, key="'hrJobId=' + #p0") 104 public Job getJob(String hrJobId); 105 106 /** 107 * Get the max jobnumber job for this principal 108 * @param principalId 109 * @return 110 */ 111 @Cacheable(value= Job.CACHE_NAME, key="'principalId=' + #p0") 112 public Job getMaxJob(String principalId); 113 114 List<Job> getJobs(String principalId, String firstName, String lastName, String jobNumber, 115 String dept, String positionNbr, String payType, 116 java.sql.Date fromEffdt, java.sql.Date toEffdt, String active, String showHistory); 117 118 public int getJobCount(String principalId, Long jobNumber, String dept); 119 120 121 /** 122 * Get sum of standard hours of given jobs 123 * @param jobs 124 * @return 125 */ 126 public BigDecimal getStandardHoursSumForJobs(List<Job> jobs); 127 128 129 }