001/** 002 * Copyright 2005-2016 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 */ 016package org.kuali.rice.kew.actionlist; 017 018import org.kuali.rice.core.api.config.property.ConfigContext; 019import org.kuali.rice.core.api.util.RiceConstants; 020import org.kuali.rice.kew.actionitem.ActionItemBase; 021import org.kuali.rice.kew.api.KewApiConstants; 022import org.kuali.rice.kew.api.preferences.Preferences; 023import org.kuali.rice.kew.util.WebFriendlyRecipient; 024import org.kuali.rice.kim.api.identity.Person; 025import org.kuali.rice.kim.api.identity.principal.Principal; 026import org.kuali.rice.kim.api.services.KimApiServiceLocator; 027import org.kuali.rice.krad.util.GlobalVariables; 028import org.kuali.rice.krad.util.KRADConstants; 029import org.kuali.rice.krad.util.UrlFactory; 030import org.kuali.rice.krad.web.form.UifFormBase; 031 032import javax.servlet.http.HttpServletRequest; 033import java.text.ParseException; 034import java.util.ArrayList; 035import java.util.HashMap; 036import java.util.List; 037import java.util.Map; 038import java.util.Properties; 039 040/** 041 * Action List form implementation for the action list. 042 * 043 * <p> 044 * Holds properties necessary to determine the {@code View} instance that 045 * will be used to render the UI for the action list. 046 * </p> 047 * 048 * @author Kuali Rice Team (rice.collab@kuali.org) 049 */ 050public class ActionListForm extends UifFormBase { 051 052 private static final long serialVersionUID = -6246391732337228107L; 053 054 private String delegator; 055 private String methodToCall = ""; 056 private String helpDeskActionListUserName; 057 private String docType; 058 private String filterLegend; 059 private String actionListType; 060 private Boolean customActionList; 061 private String defaultActionToTake; 062 private List<ActionToTake> actionsToTake = new ArrayList<ActionToTake>(); 063 private Map<?, ?> defaultActions = new HashMap<Object, Object>(); 064 private String delegationId; 065 private List<?> delegators; 066 private Boolean hasCustomActions; 067 private Boolean routeLogPopup; 068 private Boolean documentPopup; 069 private List<WebFriendlyRecipient> primaryDelegates; 070 private String primaryDelegateId; 071 private Boolean hasDisplayParameters; 072 073 private String cssFile = "kuali.css"; 074 private String logoAlign = "left"; 075 private String viewOutbox; 076 private String[] outboxItems; 077 private boolean outBoxEmpty; 078 private Boolean showOutbox; 079 080 //moved from session 081 private boolean requeryActionList; 082 private Preferences preferences; 083 private boolean updateActionList; 084 private boolean outBoxMode; 085 private Principal helpDeskActionListPrincipal; 086 private Person helpDeskActionListPerson; 087 088 //moved from filter 089 private static String CREATE_DATE_FROM = "createDateFrom"; 090 private static String CREATE_DATE_TO = "createDateTo"; 091 private static String LAST_ASSIGNED_DATE_FROM = "lastAssignedDateFrom"; 092 private static String LAST_ASSIGNED_DATE_TO = "lastAssignedDateTo"; 093 private ActionListFilter filter; 094 private ActionListFilter oldFilter; 095 private String createDateFrom; 096 private String createDateTo; 097 private String lastAssignedDateTo; 098 private String lastAssignedDateFrom; 099 private String lookupableImplServiceName; 100 private String lookupType; 101 private String docTypeFullName; 102 private List userWorkgroups; 103 104 private boolean helpDeskActionList; 105 private List<? extends ActionItemBase> actionList; 106 private List<org.kuali.rice.kew.api.action.ActionItem> apiActionItems; 107 108 public String getCreateDateTo() { 109 return createDateTo; 110 } 111 public void setCreateDateTo(String createDateTo) { 112 if(createDateTo == null){ 113 createDateTo = ""; 114 } 115 else{ 116 this.createDateTo = createDateTo.trim(); 117 } 118 } 119 120 public String getLastAssignedDateFrom() { 121 return lastAssignedDateFrom; 122 } 123 124 public void setLastAssignedDateFrom(String lastAssignedDateFrom) { 125 if(lastAssignedDateFrom == null){ 126 lastAssignedDateFrom = ""; 127 } 128 else{ 129 this.lastAssignedDateFrom = lastAssignedDateFrom.trim(); 130 } 131 } 132 133 public String getCreateDateFrom() { 134 return createDateFrom; 135 } 136 137 public void setCreateDateFrom(String createDate) { 138 if(createDate == null){ 139 createDate = ""; 140 } 141 else{ 142 this.createDateFrom = createDate.trim(); 143 } 144 } 145 146 public ActionListFilter getFilter() { 147 return filter; 148 } 149 150 public void setFilter(ActionListFilter filter) { 151 this.filter = filter; 152 if (filter.getCreateDateFrom() != null) { 153 setCreateDateFrom(RiceConstants.getDefaultDateFormat().format(filter.getCreateDateFrom())); 154 } 155 if (filter.getCreateDateTo() != null) { 156 setCreateDateTo(RiceConstants.getDefaultDateFormat().format(filter.getCreateDateTo())); 157 } 158 if (filter.getLastAssignedDateFrom() != null) { 159 setLastAssignedDateFrom(RiceConstants.getDefaultDateFormat().format(filter.getLastAssignedDateFrom())); 160 } 161 if (filter.getLastAssignedDateTo() != null) { 162 setLastAssignedDateTo(RiceConstants.getDefaultDateFormat().format(filter.getLastAssignedDateTo())); 163 } 164 } 165 166 public String getLastAssignedDateTo() { 167 return lastAssignedDateTo; 168 } 169 170 public void setLastAssignedDateTo(String lastAssignedDate) { 171 if(lastAssignedDate == null){ 172 lastAssignedDate = ""; 173 } 174 else{ 175 this.lastAssignedDateTo = lastAssignedDate.trim(); 176 } 177 } 178 179 public ActionListFilter getOldFilter() { 180 return oldFilter; 181 } 182 183 public void setOldFilter(ActionListFilter oldFilter) { 184 this.oldFilter = oldFilter; 185 } 186 187 public void validateDates() { 188 //List errors = new ArrayList(); 189 //ActionErrors errors = new ActionErrors(); 190 if (getCreateDateFrom() != null && getCreateDateFrom().length() != 0) { 191 try { 192 RiceConstants.getDefaultDateFormat().parse(getCreateDateFrom()); 193 } catch (ParseException e) { 194 GlobalVariables.getMessageMap().putError(CREATE_DATE_FROM, "general.error.fieldinvalid", "Create Date From"); 195 } 196 } 197 if (getCreateDateTo() != null && getCreateDateTo().length() != 0) { 198 try { 199 RiceConstants.getDefaultDateFormat().parse(getCreateDateTo()); 200 } catch (ParseException e) { 201 GlobalVariables.getMessageMap().putError(CREATE_DATE_TO, "general.error.fieldinvalid", "Create Date To"); 202 } 203 } 204 if (getLastAssignedDateFrom() != null && getLastAssignedDateFrom().length() != 0) { 205 try { 206 RiceConstants.getDefaultDateFormat().parse(getLastAssignedDateFrom()); 207 } catch (ParseException e1) { 208 GlobalVariables.getMessageMap().putError(LAST_ASSIGNED_DATE_FROM, "general.error.fieldinvalid", "Last Assigned Date From"); 209 } 210 } 211 if (getLastAssignedDateTo() != null && getLastAssignedDateTo().length() != 0) { 212 try { 213 RiceConstants.getDefaultDateFormat().parse(getLastAssignedDateTo()); 214 } catch (ParseException e1) { 215 GlobalVariables.getMessageMap().putError(LAST_ASSIGNED_DATE_TO, "general.error.fieldinvalid", "Last Assigned Date To"); 216 } 217 } 218 } 219 220 public ActionListFilter getLoadedFilter()/* throws ParseException*/ { 221 try { 222 if (getCreateDateFrom() != null && getCreateDateFrom().length() != 0) { 223 filter.setCreateDateFrom(RiceConstants.getDefaultDateFormat().parse(getCreateDateFrom())); 224 } 225 if (getCreateDateTo() != null && getCreateDateTo().length() != 0) { 226 filter.setCreateDateTo(RiceConstants.getDefaultDateFormat().parse(getCreateDateTo())); 227 } 228 if (getLastAssignedDateFrom() != null && getLastAssignedDateFrom().length() != 0) { 229 filter.setLastAssignedDateFrom(RiceConstants.getDefaultDateFormat().parse(getLastAssignedDateFrom())); 230 } 231 if (getLastAssignedDateTo() != null && getLastAssignedDateTo().length() != 0) { 232 filter.setLastAssignedDateTo(RiceConstants.getDefaultDateFormat().parse(getLastAssignedDateTo())); 233 } 234 if (getDocTypeFullName() != null && ! "".equals(getDocTypeFullName())) { 235 filter.setDocumentType(getDocTypeFullName()); 236 } 237 } catch (ParseException e) { 238 //error caught and displayed in validateDates() 239 } 240 241 return filter; 242 } 243 244 public String getLookupableImplServiceName() { 245 return lookupableImplServiceName; 246 } 247 248 public void setLookupableImplServiceName(String lookupableImplServiceName) { 249 this.lookupableImplServiceName = lookupableImplServiceName; 250 } 251 252 public String getLookupType() { 253 return lookupType; 254 } 255 256 public void setLookupType(String lookupType) { 257 this.lookupType = lookupType; 258 } 259 260 public String getDocTypeFullName() { 261 return docTypeFullName; 262 } 263 264 public void setDocTypeFullName(String docTypeFullName) { 265 this.docTypeFullName = docTypeFullName; 266 } 267 268 public List getUserWorkgroups() { 269 return userWorkgroups; 270 } 271 272 public void setUserWorkgroups(List userWorkgroups) { 273 this.userWorkgroups = userWorkgroups; 274 } 275 276 public Principal getHelpDeskActionListPrincipal() { 277 return helpDeskActionListPrincipal; 278 } 279 280 public void setHelpDeskActionListPrincipal(Principal helpDeskActionListPrincipal) { 281 this.helpDeskActionListPrincipal = helpDeskActionListPrincipal; 282 } 283 284 public Person getHelpDeskActionListPerson() { 285 return helpDeskActionListPerson; 286 } 287 288 public void setHelpDeskActionListPerson(Person helpDeskActionListPerson) { 289 this.helpDeskActionListPerson = helpDeskActionListPerson; 290 } 291 292 public boolean isOutBoxMode() { 293 return outBoxMode; 294 } 295 296 public void setOutBoxMode(boolean outBoxMode) { 297 this.outBoxMode = outBoxMode; 298 } 299 300 public void setUser(String user) { 301 this.user = user; 302 } 303 304 public String getUser() { 305 return user; 306 } 307 308 private String user; 309 310 public boolean isNoRefresh() { 311 return noRefresh; 312 } 313 314 public void setNoRefresh(boolean noRefresh) { 315 this.noRefresh = noRefresh; 316 } 317 318 private boolean noRefresh; 319 320 public boolean isHelpDeskActionList() { 321 return helpDeskActionList; 322 } 323 324 public void setHelpDeskActionList(boolean helpDeskActionList) { 325 this.helpDeskActionList = helpDeskActionList; 326 } 327 328 public List<? extends ActionItemBase> getActionList() { 329 return actionList; 330 } 331 public void setActionList(List<? extends ActionItemBase> actionList) { 332 this.actionList = actionList; 333 } 334 335 public boolean isRequeryActionList() { 336 return requeryActionList; 337 } 338 339 public void setRequeryActionList(boolean requeryActionList) { 340 this.requeryActionList = requeryActionList; 341 } 342 343 public Preferences getPreferences() { 344 return preferences; 345 } 346 347 public void setPreferences(Preferences preferences) { 348 this.preferences = preferences; 349 } 350 351 public boolean isUpdateActionList() { 352 return updateActionList; 353 } 354 355 public void setUpdateActionList(boolean updateActionList) { 356 this.updateActionList = updateActionList; 357 } 358 359 public String getHelpDeskActionListUserName() { 360 return helpDeskActionListUserName; 361 } 362 363 public void setHelpDeskActionListUserName(String helpDeskActionListUserName) { 364 this.helpDeskActionListUserName = helpDeskActionListUserName; 365 } 366 367 @Override 368 public String getMethodToCall() { 369 return methodToCall; 370 } 371 372 @Override 373 public void setMethodToCall(String methodToCall) { 374 this.methodToCall = methodToCall; 375 } 376 377 public String getDelegator() { 378 return delegator; 379 } 380 381 public void setDelegator(String delegator) { 382 this.delegator = delegator; 383 } 384 385 public String getDocType() { 386 return docType; 387 } 388 389 public void setDocType(String docType) { 390 this.docType = docType; 391 } 392 393 public String getFilterLegend() { 394 return filterLegend; 395 } 396 397 public void setFilterLegend(String filterLegend) { 398 this.filterLegend = filterLegend; 399 } 400 401 public String getActionListType() { 402 if (actionListType == null) { 403 setActionListType("all"); 404 } 405 return actionListType; 406 } 407 408 public void setActionListType(String actionListType) { 409 this.actionListType = actionListType; 410 } 411 412 public Boolean getCustomActionList() { 413 return customActionList; 414 } 415 416 public void setCustomActionList(Boolean customActionList) { 417 this.customActionList = customActionList; 418 } 419 420 public String getDefaultActionToTake() { 421 return defaultActionToTake; 422 } 423 424 public void setDefaultActionToTake(String defaultActionToTake) { 425 this.defaultActionToTake = defaultActionToTake; 426 } 427 428 public List<ActionToTake> getActionsToTake() { 429 return actionsToTake; 430 } 431 432 public void setActionsToTake(List<ActionToTake> actionsToTake) { 433 this.actionsToTake = actionsToTake; 434 } 435 436 public ActionToTake getActions(int index) { 437 while (getActionsToTake().size() <= index) { 438 getActionsToTake().add(new ActionToTake()); 439 } 440 return getActionsToTake().get(index); 441 } 442 443 public Map<?, ?> getDefaultActions() { 444 return defaultActions; 445 } 446 447 public void setDefaultActions(Map<?, ?> defaultActions) { 448 this.defaultActions = defaultActions; 449 } 450 451 public String getDelegationId() { 452 return delegationId; 453 } 454 455 public void setDelegationId(String delegationId) { 456 this.delegationId = delegationId; 457 } 458 459 public List<?> getDelegators() { 460 return delegators; 461 } 462 463 public void setDelegators(List<?> delegators) { 464 this.delegators = delegators; 465 } 466 467 public Boolean getHasCustomActions() { 468 return hasCustomActions; 469 } 470 471 public void setHasCustomActions(Boolean hasCustomActions) { 472 this.hasCustomActions = hasCustomActions; 473 } 474 475 public String getCssFile() { 476 return cssFile; 477 } 478 479 public void setCssFile(String cssFile) { 480 this.cssFile = cssFile; 481 } 482 483 public String getLogoAlign() { 484 return logoAlign; 485 } 486 487 public void setLogoAlign(String logoAlign) { 488 this.logoAlign = logoAlign; 489 } 490 491 public String getViewOutbox() { 492 return this.viewOutbox; 493 } 494 495 public void setViewOutbox(String viewOutbox) { 496 this.viewOutbox = viewOutbox; 497 } 498 499 public String[] getOutboxItems() { 500 return outboxItems; 501 } 502 503 public void setOutboxItems(String[] outboxItems) { 504 this.outboxItems = outboxItems; 505 } 506 507 public boolean isOutBoxEmpty() { 508 return this.outBoxEmpty; 509 } 510 511 public void setOutBoxEmpty(boolean outBoxEmpty) { 512 this.outBoxEmpty = outBoxEmpty; 513 } 514 515 public Boolean getShowOutbox() { 516 return this.showOutbox; 517 } 518 519 public void setShowOutbox(Boolean showOutbox) { 520 this.showOutbox = showOutbox; 521 } 522 523 public String getMenuBar() { 524 String url = ""; 525 Properties parameters = new Properties(); 526 url = UrlFactory.parameterizeUrl(KRADConstants.MAINTENANCE_ACTION, parameters); 527 String krBaseUrl = ConfigContext.getCurrentContextConfig().getKRBaseURL(); 528 url = "<a href=\"" 529 + url 530 + "\"><img src=\"" 531 + krBaseUrl 532 + "/images/tinybutton-preferences.gif\" alt=\"create new\" width=\"70\" height=\"15\"/></a>"; 533 534 return url; 535 } 536 537 @Override 538 public void postBind(HttpServletRequest request) { 539 540 //add the preferences to the form 541 setPreferences((Preferences)(GlobalVariables.getUserSession().retrieveObject(KewApiConstants.PREFERENCES))); 542 543 String principalId = GlobalVariables.getUserSession().getPrincipalId(); 544 final Principal hdalPrinc = (Principal) GlobalVariables.getUserSession().retrieveObject( 545 KewApiConstants.HELP_DESK_ACTION_LIST_PRINCIPAL_ATTR_NAME); 546 if (hdalPrinc != null) { 547 setHelpDeskActionListUserName(hdalPrinc.getPrincipalName()); 548 } 549 boolean isHelpDeskAuthorized = KimApiServiceLocator.getPermissionService().isAuthorized(principalId, 550 KewApiConstants.KEW_NAMESPACE, KewApiConstants.PermissionNames.VIEW_OTHER_ACTION_LIST, 551 new HashMap<String, String>()); 552 if (isHelpDeskAuthorized) { 553 setHelpDeskActionList(true); 554 } 555 556 super.postBind(request); 557 } 558 559 public Boolean getRouteLogPopup() { 560 return this.routeLogPopup; 561 } 562 563 public Boolean getDocumentPopup() { 564 return this.documentPopup; 565 } 566 567 public void setRouteLogPopup(Boolean routeLogPopup) { 568 this.routeLogPopup = routeLogPopup; 569 } 570 571 public void setDocumentPopup(Boolean documentPopup) { 572 this.documentPopup = documentPopup; 573 } 574 575 public Boolean getHasDisplayParameters() { 576 return this.hasDisplayParameters; 577 } 578 579 public void setHasDisplayParameters(Boolean hasDisplayParameters) { 580 this.hasDisplayParameters = hasDisplayParameters; 581 } 582 583 public List<WebFriendlyRecipient> getPrimaryDelegates() { 584 return this.primaryDelegates; 585 } 586 587 public void setPrimaryDelegates(List<WebFriendlyRecipient> primaryDelegates) { 588 this.primaryDelegates = primaryDelegates; 589 } 590 591 public String getPrimaryDelegateId() { 592 return this.primaryDelegateId; 593 } 594 595 public void setPrimaryDelegateId(String primaryDelegateId) { 596 this.primaryDelegateId = primaryDelegateId; 597 } 598 599 // convert a List of org.kuali.rice.kew.actionitem.ActionItemS to org.kuali.rice.kew.api.action.ActionItemS 600 public List<org.kuali.rice.kew.api.action.ActionItem> getApiActionList() { 601 List<org.kuali.rice.kew.api.action.ActionItem> apiActionItems = new ArrayList<org.kuali.rice.kew.api.action.ActionItem>(actionList.size()); 602 603 for (ActionItemBase actionItemObj : actionList) { 604 apiActionItems.add( 605 org.kuali.rice.kew.api.action.ActionItem.Builder.create(actionItemObj).build()); 606 } 607 608 return apiActionItems; 609 } 610}