public ActionDescriptor getAction(int id) { // check global actions for (Iterator iterator = globalActions.iterator(); iterator.hasNext(); ) { ActionDescriptor actionDescriptor = (ActionDescriptor) iterator.next(); if (actionDescriptor.getId() == id) { return actionDescriptor; } } // check steps for (Iterator iterator = steps.iterator(); iterator.hasNext(); ) { StepDescriptor stepDescriptor = (StepDescriptor) iterator.next(); ActionDescriptor actionDescriptor = stepDescriptor.getAction(id); if (actionDescriptor != null) { return actionDescriptor; } } // check initial actions, which we now must have unique id's for (Iterator iterator = initialActions.iterator(); iterator.hasNext(); ) { ActionDescriptor actionDescriptor = (ActionDescriptor) iterator.next(); if (actionDescriptor.getId() == id) { return actionDescriptor; } } return null; }
/** * Remove an action from this workflow completely. * * <p>This method will check global actions and all steps. * * @return true if the action was successfully removed, false if it was not found */ public boolean removeAction(ActionDescriptor actionToRemove) { // global actions for (Iterator iterator = getGlobalActions().iterator(); iterator.hasNext(); ) { ActionDescriptor actionDescriptor = (ActionDescriptor) iterator.next(); if (actionDescriptor.getId() == actionToRemove.getId()) { getGlobalActions().remove(actionDescriptor); return true; } } // steps for (Iterator iterator = getSteps().iterator(); iterator.hasNext(); ) { StepDescriptor stepDescriptor = (StepDescriptor) iterator.next(); ActionDescriptor actionDescriptor = stepDescriptor.getAction(actionToRemove.getId()); if (actionDescriptor != null) { stepDescriptor.getActions().remove(actionDescriptor); return true; } } return false; }