001 /*
002 * Copyright 2005-2007 The Kuali Foundation
003 *
004 *
005 * Licensed under the Educational Community License, Version 2.0 (the "License");
006 * you may not use this file except in compliance with the License.
007 * You may obtain a copy of the License at
008 *
009 * http://www.opensource.org/licenses/ecl2.php
010 *
011 * Unless required by applicable law or agreed to in writing, software
012 * distributed under the License is distributed on an "AS IS" BASIS,
013 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
014 * See the License for the specific language governing permissions and
015 * limitations under the License.
016 */
017 package org.kuali.rice.kew.docsearch;
018
019 import org.apache.commons.lang.StringUtils;
020 import org.kuali.rice.kew.util.KEWConstants;
021 import org.kuali.rice.kew.web.KeyValueSort;
022 import org.kuali.rice.kew.web.RowStyleable;
023
024 import java.io.Serializable;
025 import java.util.ArrayList;
026 import java.util.List;
027
028
029 /**
030 * Bean that representing a row displayed in a document search.
031 *
032 * @author Kuali Rice Team (rice.collab@kuali.org)
033 */
034 public class DocSearchDTO implements Serializable, RowStyleable {
035
036 private static final long serialVersionUID = 7850758046316186962L;
037 private static final String URL_SUFFIX = "?" + KEWConstants.COMMAND_PARAMETER + "=" + KEWConstants.DOCSEARCH_COMMAND + "&" + KEWConstants.ROUTEHEADER_ID_PARAMETER + "=";
038
039 private Long routeHeaderId;
040 private String docRouteStatusCode;
041 private java.sql.Timestamp dateCreated;
042 private String documentTitle;
043 private String activeIndicatorCode;
044 private String docTypeName;
045 private String docTypeLabel;
046 private String initiatorNetworkId;
047 private String initiatorWorkflowId;
048 private String initiatorName;
049 private String initiatorEmailAddress;
050 private String initiatorLastName;
051 private String initiatorFirstName;
052 private String initiatorTransposedName;
053 private String docTypeHandlerUrl;
054 private String rowStyleClass;
055 private String superUserSearch;
056 private String appDocStatus;
057
058 private List<KeyValueSort> searchableAttributes = new ArrayList<KeyValueSort>();
059
060 public DocSearchDTO() {
061 }
062
063 public String getSuperUserSearch() {
064 return superUserSearch;
065 }
066 public void setSuperUserSearch(String superUserSearch) {
067 this.superUserSearch = superUserSearch;
068 }
069 public String getDocRouteStatusCode() {
070 return docRouteStatusCode;
071 }
072
073 public String getDocumentTitle() {
074 return documentTitle;
075 }
076
077 public Long getRouteHeaderId() {
078 return routeHeaderId;
079 }
080
081 public void setDocRouteStatusCode(String docRouteStatusCode) {
082 this.docRouteStatusCode = docRouteStatusCode;
083 }
084
085 public void setDocumentTitle(String documentTitle) {
086 this.documentTitle = documentTitle;
087 }
088
089 public void setRouteHeaderId(Long routeHeaderId) {
090 this.routeHeaderId = routeHeaderId;
091 }
092
093 public String getActiveIndicatorCode() {
094 return activeIndicatorCode;
095 }
096
097 public String getDocTypeName() {
098 return docTypeName;
099 }
100
101 public void setDocTypeName(String docTypeName) {
102 this.docTypeName = docTypeName;
103 }
104
105 public String getDocTypeLabel() {
106 return docTypeLabel;
107 }
108
109 public String getDocTypeHandlerUrl() {
110 return docTypeHandlerUrl;
111 }
112
113 public String getInitiatorWorkflowId() {
114 return initiatorWorkflowId;
115 }
116
117 public String getInitiatorEmailAddress() {
118 return initiatorEmailAddress;
119 }
120
121 public String getInitiatorName() {
122 return initiatorName;
123 }
124
125 public void setActiveIndicatorCode(String activeIndicatorCode) {
126 this.activeIndicatorCode = activeIndicatorCode;
127 }
128
129 public void setDocTypeLabel(String docTypeLabel) {
130 this.docTypeLabel = docTypeLabel;
131 }
132
133 public void setDocTypeHandlerUrl(String docTypeHandlerUrl) {
134 this.docTypeHandlerUrl = docTypeHandlerUrl;
135 }
136
137 public void setInitiatorWorkflowId(String initiatorEmplId) {
138 this.initiatorWorkflowId = initiatorEmplId;
139 }
140
141 public void setInitiatorEmailAddress(String initiatorEmailAddress) {
142 this.initiatorEmailAddress = initiatorEmailAddress;
143 }
144
145 public void setInitiatorName(String initiatorName) {
146 this.initiatorName = initiatorName;
147 }
148
149 public java.sql.Timestamp getDateCreated() {
150 return dateCreated;
151 }
152
153 public void setDateCreated(java.sql.Timestamp dateCreated) {
154 this.dateCreated = dateCreated;
155 }
156
157 public String getInitiatorNetworkId() {
158 return initiatorNetworkId;
159 }
160
161 public void setInitiatorNetworkId(String string) {
162 initiatorNetworkId = string;
163 }
164
165 public String getInitiatorFirstName() {
166 return initiatorFirstName;
167 }
168
169 public String getInitiatorLastName() {
170 return initiatorLastName;
171 }
172
173 public void setInitiatorFirstName(String initiatorFirstName) {
174 this.initiatorFirstName = initiatorFirstName;
175 }
176
177 public void setInitiatorLastName(String initiatorLastName) {
178 this.initiatorLastName = initiatorLastName;
179 }
180
181 public String getAppDocStatus() {
182 return this.appDocStatus;
183 }
184
185 public void setAppDocStatus(String appDocStatus) {
186 this.appDocStatus = appDocStatus;
187 }
188
189 public String getDocRouteStatusCodeDesc() {
190 if (this.docRouteStatusCode == null || org.kuali.rice.kew.util.CodeTranslator.getRouteStatusLabel(docRouteStatusCode) == null || "".equalsIgnoreCase(org.kuali.rice.kew.util.CodeTranslator.getRouteStatusLabel(docRouteStatusCode))) {
191 return KEWConstants.UNKNOWN_STATUS;
192 } else {
193 return org.kuali.rice.kew.util.CodeTranslator.getRouteStatusLabel(docRouteStatusCode);
194 }
195 }
196
197 public String getDocHandlerUrl() {
198 if (StringUtils.isBlank(getDocTypeHandlerUrl())) {
199 return "";
200 } else {
201 if (isUsingSuperUserSearch()) {
202 return "SuperUser.do?command=displayFrame&routeHeaderId=" + this.getRouteHeaderId().toString();
203 } else {
204 return this.getDocTypeHandlerUrl() + URL_SUFFIX + this.getRouteHeaderId().toString();
205 }
206 }
207 }
208
209 public boolean isUsingSuperUserSearch() {
210 return DocSearchCriteriaDTO.SUPER_USER_SEARCH_INDICATOR_STRING.equalsIgnoreCase(superUserSearch);
211 }
212
213 public String getRowStyleClass() {
214 return rowStyleClass;
215 }
216
217 public void setRowStyleClass(String rowStyleClass) {
218 this.rowStyleClass = rowStyleClass;
219 }
220
221 public String getInitiatorTransposedName() {
222 return initiatorTransposedName;
223 }
224
225 public void setInitiatorTransposedName(String initiatorTransposedName) {
226 this.initiatorTransposedName = initiatorTransposedName;
227 }
228
229 /**
230 * Method for the JSP to use to pull in searchable attributes by name
231 * instead of by index location which is unreliable
232 *
233 * @param key Key of KeyValueSort trying to be retrieved
234 * @return the matching KeyValueSort in list of searchable attributes or an empty KeyValueSort
235 */
236 public KeyValueSort getSearchableAttribute(String key) {
237 KeyValueSort returnPair = new KeyValueSort("","","",null);
238 if (key == null) {
239 return returnPair;
240 }
241 for (KeyValueSort searchableAttribute : searchableAttributes)
242 {
243 if (key.equals(searchableAttribute.getKey()))
244 {
245 returnPair = searchableAttribute;
246 break;
247 }
248 }
249 return returnPair;
250 }
251
252 public void addSearchableAttribute(KeyValueSort searchableAttribute) {
253 searchableAttributes.add(searchableAttribute);
254 }
255 /**
256 * @param searchableAttributes The searchableAttributes to set.
257 */
258 public void setSearchableAttributes(List<KeyValueSort> searchableAttributes) {
259 this.searchableAttributes = searchableAttributes;
260 }
261 /**
262 * @return Returns the searchableAttributes.
263 */
264 public List<KeyValueSort> getSearchableAttributes() {
265 return searchableAttributes;
266 }
267 }