/src/main/java/com/innovalog/jmwe/plugins/validators/WorkflowCommentRequiredValidator.java

https://bitbucket.org/valentijnscholten/jmwe · Java · 102 lines · 62 code · 20 blank · 20 comment · 0 complexity · 5568ff0b092f9190f0acee99907d1757 MD5 · raw file

  1. /**
  2. *
  3. */
  4. package com.innovalog.jmwe.plugins.validators;
  5. import java.util.Collection;
  6. import java.util.Collections;
  7. import java.util.HashMap;
  8. import java.util.Map;
  9. import com.atlassian.jira.plugin.workflow.AbstractWorkflowPluginFactory;
  10. import com.atlassian.jira.plugin.workflow.WorkflowPluginValidatorFactory;
  11. import com.atlassian.jira.security.groups.GroupManager;
  12. import com.googlecode.jsu.util.WorkflowUtils;
  13. import com.opensymphony.workflow.loader.AbstractDescriptor;
  14. import com.opensymphony.workflow.loader.ValidatorDescriptor;
  15. /**
  16. * @author fischerd
  17. *
  18. */
  19. public class WorkflowCommentRequiredValidator extends
  20. AbstractWorkflowPluginFactory implements WorkflowPluginValidatorFactory {
  21. private final WorkflowUtils workflowUtils;
  22. private final GroupManager groupManager;
  23. public WorkflowCommentRequiredValidator(WorkflowUtils workflowUtils, GroupManager groupManager) {
  24. this.workflowUtils = workflowUtils;
  25. this.groupManager = groupManager;
  26. }
  27. /* (non-Javadoc)
  28. * @see com.atlassian.jira.plugin.workflow.AbstractWorkflowPluginFactory#getVelocityParamsForEdit(java.util.Map, com.opensymphony.workflow.loader.AbstractDescriptor)
  29. */
  30. @Override
  31. protected void getVelocityParamsForEdit(Map velocityParams,
  32. AbstractDescriptor descriptor) {
  33. getVelocityParamsForInput(velocityParams);
  34. getVelocityParamsForView(velocityParams, descriptor);
  35. ValidatorDescriptor validatorDescriptor = (ValidatorDescriptor) descriptor;
  36. Map args = validatorDescriptor.getArgs();
  37. velocityParams.remove("val-groupsList");
  38. String strGroupsSelected = (String)args.get("hidGroupsList");
  39. Collection groupsSelected = strGroupsSelected==null ? Collections.emptyList() : workflowUtils.getGroups(strGroupsSelected, WorkflowUtils.SPLITTER);
  40. Collection groups = groupManager.getAllGroups();
  41. groups.removeAll(groupsSelected);
  42. velocityParams.put("val-hidGroupsList", workflowUtils.getStringGroup(groupsSelected, WorkflowUtils.SPLITTER));
  43. velocityParams.put("val-groupsList", Collections.unmodifiableCollection(groups));
  44. }
  45. /* (non-Javadoc)
  46. * @see com.atlassian.jira.plugin.workflow.AbstractWorkflowPluginFactory#getVelocityParamsForInput(java.util.Map)
  47. */
  48. @Override
  49. protected void getVelocityParamsForInput(Map velocityParams) {
  50. Collection groups = groupManager.getAllGroups();
  51. velocityParams.put("val-groupsList", Collections.unmodifiableCollection(groups));
  52. velocityParams.put("val-splitter", WorkflowUtils.SPLITTER);
  53. }
  54. /* (non-Javadoc)
  55. * @see com.atlassian.jira.plugin.workflow.AbstractWorkflowPluginFactory#getVelocityParamsForView(java.util.Map, com.opensymphony.workflow.loader.AbstractDescriptor)
  56. */
  57. @Override
  58. protected void getVelocityParamsForView(Map velocityParams,
  59. AbstractDescriptor descriptor) {
  60. ValidatorDescriptor validatorDescriptor = (ValidatorDescriptor) descriptor;
  61. Map args = validatorDescriptor.getArgs();
  62. velocityParams.put("errorMessage", args.get("errorMessage"));
  63. String strGroupsSelected = (String)args.get("hidGroupsList");
  64. Collection groupsSelected = strGroupsSelected==null ? Collections.emptyList() : workflowUtils.getGroups(strGroupsSelected, WorkflowUtils.SPLITTER);
  65. velocityParams.put("val-groupsListSelected", Collections.unmodifiableCollection(groupsSelected));
  66. }
  67. /* (non-Javadoc)
  68. * @see com.atlassian.jira.plugin.workflow.WorkflowPluginFactory#getDescriptorParams(java.util.Map)
  69. */
  70. public Map getDescriptorParams(Map formParams) {
  71. Map<String, String> params = new HashMap<String, String>();
  72. String strErrorMessage = extractSingleParam(formParams, "errorMessage");
  73. params.put("errorMessage", strErrorMessage);
  74. try{
  75. String strGroupsSelected = extractSingleParam(formParams, "hidGroupsList");
  76. params.put("hidGroupsList", strGroupsSelected);
  77. }catch(IllegalArgumentException iae){
  78. // Aggregate so that Transitions can be added.
  79. }
  80. return params;
  81. }
  82. }