Esempio n. 1
0
  private void addPostActionParametersToTaskContext(
      ActionEvent action, Integer actionIndex, TaskContext taskContext, Object object)
      throws TaskHandlerException {
    for (ActionParameter postActionParameter : action.getPostActionParameters()) {

      taskContext.addPostActionParameterObject(
          actionIndex.toString(), postActionParameter.getKey(), object, true);
    }
  }
Esempio n. 2
0
  private Map<String, Object> createParameters(
      TaskActionInformation info, ActionEvent action, KeyEvaluator keyEvaluator)
      throws TaskHandlerException {
    SortedSet<ActionParameter> actionParameters = action.getActionParameters();
    Map<String, Object> parameters = new HashMap<>(actionParameters.size());

    for (ActionParameter actionParameter : actionParameters) {
      String key = actionParameter.getKey();

      if (info.getValues().containsKey(key)) {
        String template = info.getValues().get(key);

        if (template == null) {
          throw new TaskHandlerException(
              TRIGGER, "task.error.templateNull", key, action.getDisplayName());
        }

        switch (actionParameter.getType()) {
          case LIST:
            parameters.put(key, convertToList((List<String>) LIST.parse(template), keyEvaluator));
            break;
          case MAP:
            parameters.put(key, convertToMap(template, keyEvaluator));
            break;
          default:
            try {
              String userInput = keyEvaluator.evaluateTemplateString(template);
              Object obj = actionParameter.getType().parse(userInput);
              parameters.put(key, obj);
            } catch (MotechException ex) {
              throw new TaskHandlerException(TRIGGER, ex.getMessage(), ex, key);
            }
        }
      } else {
        if (actionParameter.isRequired()) {
          throw new TaskHandlerException(
              TRIGGER, "task.error.taskActionNotContainsField", action.getDisplayName(), key);
        } else if (actionParameter.getType() == MAP) {
          parameters.put(key, new HashMap<>());
        } else if (actionParameter.getType() == LIST) {
          parameters.put(key, new ArrayList<>());
        } else {
          parameters.put(key, null);
        }
      }
    }

    return parameters;
  }