View Javadoc
1   /**
2    * Copyright 2005-2016 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.rice.krad.service;
17  
18  import org.kuali.rice.krad.bo.InactivatableFromTo;
19  
20  import java.util.Date;
21  import java.util.List;
22  import java.util.Map;
23  
24  
25  /**
26   * Provides methods for retrieval of business objects implementing InactivateableFromTo and needing effective dating logic
27   * 
28   * @see org.kuali.rice.kns.bo.InactivateableFromTo
29   */
30  public interface InactivateableFromToService {
31  
32  	/**
33  	 * Performs search on given class and criteria and returns only results that active based on the active to/from dates and the current
34  	 * date
35  	 * 
36  	 * @param clazz
37  	 *            - InactivateableFromTo class to search
38  	 * @param fieldValues
39  	 *            - Search key values
40  	 * @return List of InactivateableFromTo instances that match search criteria and are active
41  	 */
42  	public List<InactivatableFromTo> findMatchingActive(Class<? extends InactivatableFromTo> clazz, Map fieldValues);
43  
44  	/**
45  	 * Performs search on given class and criteria and returns only results that active based on the active to/from dates and the given
46  	 * active as of date
47  	 * 
48  	 * @param clazz
49  	 *            - InactivateableFromTo class to search
50  	 * @param fieldValues
51  	 *            - Search key values
52  	 * @param activeAsOfDate
53  	 *            - Date to compare to for determining active status
54  	 * @return List of InactivateableFromTo instances that match search criteria and are active as of the given date
55  	 */
56  	public List<InactivatableFromTo> findMatchingActiveAsOfDate(Class<? extends InactivatableFromTo> clazz,
57  			Map fieldValues, Date activeAsOfDate);
58  
59  	/**
60  	 * Removes instances from the given list that are inactive based on the current date
61  	 * 
62  	 * @param filterList
63  	 *            - List of InactivateableFromTo instances to filter
64  	 * @return List of InactivateableFromTo instances from the given list that are active as of the current date
65  	 */
66  	public List<InactivatableFromTo> filterOutNonActive(List<InactivatableFromTo> filterList);
67  
68  	/**
69  	 * Removes instances from the given list that are inactive based on the given date
70  	 * 
71  	 * @param filterList
72  	 *            - List of InactivateableFromTo instances to filter
73  	 * @param activeAsOfDate
74  	 *            - Date to compare to for determining active status
75  	 * @return List of InactivateableFromTo instances from the given list that are active as of the given date
76  	 */
77  	public List<InactivatableFromTo> filterOutNonActive(List<InactivatableFromTo> filterList, Date activeAsOfDate);
78  
79  	/**
80  	 * Performs search on given class and criteria and returns that are active and most current. That is if two records are active the more
81  	 * current one will be the one with a later active begin date
82  	 * 
83  	 * @param clazz
84  	 *            - InactivateableFromTo class to search
85  	 * @param fieldValues
86  	 *            - Search key values
87  	 * @return List of InactivateableFromTo instances that match search criteria and are current
88  	 */
89  	public List<InactivatableFromTo> findMatchingCurrent(Class<? extends InactivatableFromTo> clazz,
90  			Map fieldValues);
91  
92  	/**
93  	 * Performs search on given class and criteria and returns that are active and most current based on the given date. That is if two
94  	 * records are active the more current one will be the one with a later active begin date
95  	 * 
96  	 * @param clazz
97  	 *            - InactivateableFromTo class to search
98  	 * @param fieldValues
99  	 *            - Search key values
100 	 * @param currentAsOfDate
101 	 *            - Date to compare to for determining active and current status
102 	 * @return List of InactivateableFromTo instances that match search criteria and are current
103 	 */
104 	public List<InactivatableFromTo> findMatchingCurrent(Class<? extends InactivatableFromTo> clazz,
105 			Map fieldValues, Date currentAsOfDate);
106 
107 	/**
108 	 * Removes instances from the given list that are not current based on the current date
109 	 * 
110 	 * @param filterList
111 	 *            - List of InactivateableFromTo instances to filter
112 	 * @return List of InactivateableFromTo instances from the given list that are current as of the current date
113 	 */
114 	public List<InactivatableFromTo> filterOutNonCurrent(List<InactivatableFromTo> filterList);
115 
116 	/**
117 	 * Removes instances from the given list that are not current based on the given date
118 	 * 
119 	 * @param filterList
120 	 *            - List of InactivateableFromTo instances to filter
121 	 * @param currentAsOfDate
122 	 *            - Date to compare to for determining active and current status
123 	 * @return List of InactivateableFromTo instances from the given list that are current as of the given date
124 	 */
125 	public List<InactivatableFromTo> filterOutNonCurrent(List<InactivatableFromTo> filterList, Date currentAsOfDate);
126 
127 }