View Javadoc

1   /**
2    * Copyright 2004-2013 The Kuali Foundation
3    *
4    * Licensed under the Educational Community License, Version 2.0 (the "License");
5    * you may not use this file except in compliance with the License.
6    * You may obtain a copy of the License at
7    *
8    * http://www.opensource.org/licenses/ecl2.php
9    *
10   * Unless required by applicable law or agreed to in writing, software
11   * distributed under the License is distributed on an "AS IS" BASIS,
12   * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13   * See the License for the specific language governing permissions and
14   * limitations under the License.
15   */
16  package org.kuali.hr.time.assignment.service;
17  
18  import org.kuali.hr.time.assignment.Assignment;
19  import org.kuali.hr.time.assignment.AssignmentDescriptionKey;
20  import org.kuali.hr.time.calendar.CalendarEntries;
21  import org.kuali.hr.time.timesheet.TimesheetDocument;
22  import org.springframework.cache.annotation.Cacheable;
23  
24  import java.sql.Date;
25  import java.util.List;
26  import java.util.Map;
27  
28  public interface AssignmentService {
29  	/**
30  	 * Fetches a list of Assignments for a given principal Id as of a particular date
31  	 * @param principalId
32  	 * @param asOfDate
33  	 * @return
34  	 */
35      @Cacheable(value= Assignment.CACHE_NAME, key="'principalId=' + #p0 + '|' + 'asOfDate=' + #p1")
36      public List<Assignment> getAssignments(String principalId, Date asOfDate);
37      /**
38       * Reverse lookup of an assignment based on the assignment key and the document
39       * @param timesheetDocument
40       * @param assignmentKey
41       * @return
42       */
43      public Assignment getAssignment(TimesheetDocument timesheetDocument, String assignmentKey);
44      /**
45       * Reverse lookup of an assignment based on the assignment id
46       * @param tkAssignmentId
47       * @return
48       */
49      @Cacheable(value= Assignment.CACHE_NAME, key="'tkAssignmentId=' + #p0")
50      public Assignment getAssignment(String tkAssignmentId);
51      /**
52       * Get Assignment Description key based off of description
53       * @param assignmentDesc
54       * @return
55       */
56      public AssignmentDescriptionKey getAssignmentDescriptionKey(String assignmentDesc);
57      /**
58       * Get all assignment descriptions for a document
59       * @param td
60       * @param clockOnlyAssignments
61       * @return
62       */
63      public Map<String,String> getAssignmentDescriptions(TimesheetDocument td, boolean clockOnlyAssignments);
64      /**
65       * Get all assignment descriptions for an assignment
66       * @param assignment
67       * @return
68       */
69  	public Map<String,String> getAssignmentDescriptions(Assignment assignment);
70  	/**
71  	 * Get all active assignments for a work area
72  	 * @param workArea
73  	 * @param asOfDate
74  	 * @return
75  	 */
76      @Cacheable(value= Assignment.CACHE_NAME, key="'workArea=' + #p0 + '|' + 'asOfDate=' + #p1")
77  	public List<Assignment> getActiveAssignmentsForWorkArea(Long workArea, Date asOfDate);
78  
79  	/**
80  	 * Get active assignments for all users for the current date
81  	 * CAUTION this method will return a lot of data in a normal production env
82  	 * It is intended to only be used in a batch setting
83  	 * @param asOfDate
84  	 * @return
85  	 */
86      @Cacheable(value= Assignment.CACHE_NAME, key="'asOfDate=' + #p0")
87  	public List<Assignment> getActiveAssignments(Date asOfDate);
88  
89  
90      /**
91       * For a given AssignmentDescriptionKey return the matching assignment.
92       * @param key
93       * @return
94       */
95      public Assignment getAssignment(AssignmentDescriptionKey key, Date asOfDate);
96  
97      
98      /**
99       * Fetch principal id and key as of a particular date
100      * @param principalId
101      * @param key
102      * @param asOfDate
103      * @return
104      */
105     public Assignment getAssignment(String principalId, AssignmentDescriptionKey key, Date asOfDate);
106     
107     /**
108      * Get assignments by pay calendar entry
109      * @param principalId
110      * @param payCalendarEntry
111      * @return
112      */
113     public List<Assignment> getAssignmentsByPayEntry(String principalId, CalendarEntries payCalendarEntry);
114     
115     /**
116 	 * KPME-1129 Kagata
117 	 * Get a list of active assignments based on principalId and jobNumber as of a particular date 
118 	 * @param principalId
119 	 * @param jobNumber
120 	 * @param asOfDate
121 	 * @return
122 	 */
123     @Cacheable(value= Assignment.CACHE_NAME, key="'principalId=' + #p0 + '|' + 'jobNumber=' + #p1 + '|' + 'asOfDate=' + #p2")
124     public List<Assignment> getActiveAssignmentsForJob(String principalId, Long jobNumber, Date asOfDate);
125 
126     List<Assignment> searchAssignments(Date fromEffdt, Date toEffdt, String principalId, String jobNumber,
127                                     String dept, String workArea, String active, String showHistory);
128 
129     public Assignment getMaxTimestampAssignment(String principalId);
130 }