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.dao;
017    
018    import org.kuali.hr.job.Job;
019    
020    import java.util.Date;
021    import java.util.List;
022    
023    public interface JobDao {
024    
025            /**
026             * Saves or Updates a Job
027             * @param job
028             */
029            public void saveOrUpdate(Job job);
030            /**
031             * Saves or updates a job list 
032             * @param jobList
033             */
034            public void saveOrUpdate(List<Job> jobList);
035            
036            /**
037             * Provides a list of current jobs that are valid relative to the provided effective date.  
038             * Timestamp of row creation is taken into account when two rows with the same job number
039             * have the same effective date. 
040             * 
041             * @param principalId
042             * @param payPeriodEndDate
043             * @return
044             */
045            public List<Job> getJobs(String principalId, Date payPeriodEndDate);
046            /**
047             * 
048             * @param principalId
049             * @param jobNumber
050             * @param asOfDate
051             * @return a Job per the critieria passed in
052             */
053            public Job getJob(String principalId, Long jobNumber, Date asOfDate);
054            
055            /**
056             * Get Primary Job as indicated by primary indicator on Job table
057             * @param principalId
058             * @param payPeriodEndDate
059             * @return
060             */
061            public Job getPrimaryJob(String principalId, Date payPeriodEndDate);
062            /**
063             * Fetch active jobs that are incumbents of the position
064             * @param positionNbr
065             * @param asOfDate
066             * @return
067             */
068            public List<Job> getActiveJobsForPosition(String positionNbr, Date asOfDate);
069            
070            /**
071             * Fetch active jobs that are incumbents of the payType
072             * @param hrPayType
073             * @param asOfDate
074             * @return
075             */
076            public List<Job> getActiveJobsForPayType(String hrPayType, Date asOfDate);
077            
078            /**
079             * Get job based on id
080             * @param hrJobId
081             * @return
082             */
083            public Job getJob(String hrJobId);
084            
085            /**
086             * Get job with max(jobNumber) for a certain principalId
087             * @param principalId
088             * @return
089             */
090            public Job getMaxJob(String principalId);
091    
092        List<Job> getJobs(String principalId, String jobNumber, String dept, String positionNbr, String payType, Date fromEffdt, Date toEffdt, String active, 
093                                      String showHistory);
094        
095        /**
096         * Fetch the count of the jobs with the given principalId and jobNumber
097         * @param principalId
098         * @param jobNumber
099         * @return the count of the jobs with the given principalId and jobNumber
100         */
101        public int getJobCount(String principalId, Long jobNumber, String dept);
102        
103        public List<Job> getActiveLeaveJobs(String principalId, Date asOfDate);
104        
105        public List<Job> getAllActiveLeaveJobs(String principalId, Date asOfDate);
106        
107        public List<Job> getInactiveLeaveJobs(Long jobNumber, Date startDate, Date endDate);
108        
109        public List<Job> getAllInActiveLeaveJobsInRange(String principalId, Date startDate, Date endDate);
110        
111        public Job getMaxTimestampJob(String principalId);
112    }