1 /**
2 * Copyright 2005-2014 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.kns.lookup;
17
18 import org.kuali.rice.kns.web.ui.ResultRow;
19 import org.kuali.rice.krad.bo.BusinessObject;
20
21 import java.io.Serializable;
22 import java.sql.Timestamp;
23 import java.util.Collection;
24 import java.util.List;
25 import java.util.Set;
26
27 /**
28 * @deprecated Only used in KNS classes, use KRAD.
29 */
30 @Deprecated
31 public interface LookupResultsService extends Serializable {
32 /**
33 * Persists a list of result row objects into a database. The lookup results sequence number acts like a key identifying the lookup
34 * results set. If results are persisted under the same sequence number, then the previously persisted list will be overwritten.
35 *
36 * @param lookupResultsSequenceNumber the lookup sequence number. Every time a user clicks "search", a new sequence number should be generated
37 * @param resultTable A list of result rows. Note that this list does not contain BOs, but the data necessary to render a lookup results screen
38 * @param personId the user that is performing the search. This prevents a malicious user from passing someone else's sequence number
39 * (which he can guess) and eventually retrieving it, possibly exposing sensitive data
40 * @throws Exception
41 */
42 public void persistResultsTable(String lookupResultsSequenceNumber, List<ResultRow> resultTable, String personId) throws Exception;
43
44 /**
45 * Persists a list of BO object IDs that have been selected for return to the calling document (the back location in lookup terminology).
46 * The lookup results sequence number acts like a key identifying the selected object IDs. If results are persisted under the same
47 * sequence number, then the previously persisted list will be overwritten.
48 *
49 * @param lookupResultsSequenceNumber the lookup sequence number. Every time a user clicks "search", a new sequence number should be generated
50 * @param selectedObjectIds A set of the object IDs of the selected rows.
51 * @param personId the user that is performing the search. This prevents a malicious user from passing someone else's sequence number
52 * (which he can guess) and eventually retrieving it, possibly exposing sensitive data
53 * @throws Exception
54 */
55 public void persistSelectedObjectIds(String lookupResultsSequenceNumber, Set<String> selectedObjectIds, String personId) throws Exception;
56
57 /**
58 * Returns the list of result rows that was persisted under the passed in sequence number
59 *
60 * @param lookupResultsSequenceNumber the lookup sequence number that was used to persist
61 * @param personId the user id that was used to persist the results table. This prevents a malicious user from passing someone else's sequence number
62 * (which he can guess) and eventually retrieving it, possibly exposing sensitive data
63 * @return
64 * @throws Exception many reasons, including if the user id parameter does not match the user used to persist the results
65 */
66 public List<ResultRow> retrieveResultsTable(String lookupResultsSequenceNumber, String personId) throws Exception;
67
68 /**
69 * Returns the BOs that correspond to the selected objected IDs that were persisted under the given lookup results number
70 *
71 * DB data may have changed since the time the user clicked the "search" button (e.g. someone may have changed a value that was
72 * used as a query criterion). If so, implementations may or may not choose to handle this situation.
73 *
74 * @param lookupResultsSequenceNumber the lookup sequence number that was used to persist
75 * @param boClass The class of BO being retrieved from the lookup
76 * @param personId the user id that was used to persist the results table. This prevents a malicious user from passing someone else's sequence number
77 * (which he can guess) and eventually retrieving it, possibly exposing sensitive data
78 * @return A list of BOs corresponding to the
79 * @throws Exception many reasons, including if the user id parameter does not match the user used to persist the results
80 */
81 public <T extends BusinessObject> Collection<T> retrieveSelectedResultBOs(String lookupResultsSequenceNumber, Class<T> boClass, String personId) throws Exception;
82
83 /**
84 * Returns whether a user is allowed to view the lookup results of the given sequence number
85 *
86 * @param lookupResultsSequenceNumber the lookup sequence number that was used to persist the results table
87 * @param personId the user id that was used to persist the results table.
88 * @return if the user ID used to persist the lookup results is the same user ID as the parameter
89 */
90 public boolean isAuthorizedToAccessLookupResults(String lookupResultsSequenceNumber, String personId);
91
92 /**
93 * Returns whether a user is allowed to view the selected object IDs of the given sequence number
94 *
95 * @param lookupResultsSequenceNumber the lookup sequence number that was used to persist the selected object IDs
96 * @param personId the user id that was used to persist the selected object IDs
97 * @return if the user ID used to persist the selected object IDs is the same user ID as the parameter
98 */
99 public boolean isAuthorizedToAccessSelectedObjectIds(String lookupResultsSequenceNumber, String personId);
100
101 /**
102 * Removes the lookup results that were persisted under this lookup results sequence number
103 *
104 * @param lookupResultsSequenceNumber
105 * @throws Exception
106 */
107 public void clearPersistedLookupResults(String lookupResultsSequenceNumber) throws Exception;
108
109 /**
110 * Removes the lookup results that were persisted under this selected object IDs
111 *
112 * @param lookupResultsSequenceNumber
113 * @throws Exception
114 */
115 public void clearPersistedSelectedObjectIds(String lookupResultsSequenceNumber) throws Exception;
116
117 /**
118 * removes all LookupResults BO where the lookup date attribute is older than
119 * the parameter
120 *
121 * @param expirationDate all LookupResults having a lookup date before this date
122 * will be removed
123 */
124 public void deleteOldLookupResults(Timestamp expirationDate);
125
126 /**
127 * removes all LookupResults BO where the lookup date attribute is older than
128 * the parameter
129 *
130 * @param expirationDate all LookupResults having a lookup date before this date
131 * will be removed
132 */
133 public void deleteOldSelectedObjectIds(Timestamp expirationDate);
134
135 /**
136 * Determines the lookup id for a given business object
137 *
138 * @param businessObject the business object to get a lookup id for
139 * @return the lookup id
140 */
141 public abstract String getLookupId(BusinessObject businessObject);
142 }
143