/** * Checks if restrictionDescriptor has no {@link ConditionsDescriptor}s left. */ public boolean isEmpty(ConditionsDescriptor conditionsDescriptor) { Collection<?> conditions = conditionsDescriptor.getConditions(); return (conditions == null) || (conditions.isEmpty()); }
public void changeLogicOperator(ActionDescriptor transition, String count) { RestrictionDescriptor restriction = transition.getRestriction(); if (restriction != null) { ConditionsDescriptor conditionsDescriptor = getParentConditionsDescriptor(restriction, count); if (OPERATOR_AND.equals(conditionsDescriptor.getType())) { conditionsDescriptor.setType(OPERATOR_OR); } else { conditionsDescriptor.setType(OPERATOR_AND); } } } }
conditionsDescriptor.setType(OPERATOR_AND); //this happens by default anyhow I believe, but stating explicitly conditionsDescriptor.getConditions().add(condition); return "1"; if (conditionsDescriptor.getConditions() == null) conditionsDescriptor.setConditions(new ArrayList()); conditionsDescriptor.getConditions().add(condition); if (!TextUtils.stringSet(conditionsDescriptor.getType())) conditionsDescriptor.setType(OPERATOR_AND); return "" + conditionsDescriptor.getConditions().size(); return increaseCountLevel(count) + SEPARATOR + conditionsDescriptor.getConditions().size();
conditionsDescriptor.setType(OPERATOR_AND); //this happens by default anyhow I believe, but stating explicitly conditionsDescriptor.getConditions().add(condition); return "1"; Object d = conditionsDescriptor.getConditions().remove(index); nestedDescriptor.setType(OPERATOR_AND); if (nestedDescriptor.getConditions() == null) nestedDescriptor.setConditions(new ArrayList()); nestedDescriptor.getConditions().add(existingCondition); nestedDescriptor.getConditions().add(condition); conditionsDescriptor.getConditions().add(insertIndex, nestedDescriptor); returnIndex.append(nestedDescriptor.getConditions().size());
public String getOperatorType() { return conditionsDescriptor.getType(); }
public String getOtherOperatorTextKey() { if (WorkflowEditorTransitionConditionUtil.OPERATOR_AND.equalsIgnoreCase(conditionsDescriptor.getType())) return "admin.workflowtransition.operator.or"; else return "admin.workflowtransition.operator.and"; }
public void setDescriptor(ConditionsDescriptor conditionsDescriptor) { this.conditionsDescriptor = conditionsDescriptor; setDescriptorCollection(conditionsDescriptor.getConditions()); }
public String getOperatorTextKey() { if (WorkflowEditorTransitionConditionUtil.OPERATOR_AND.equalsIgnoreCase(conditionsDescriptor.getType())) return "admin.workflowtransition.operator.and"; else return "admin.workflowtransition.operator.or"; }
protected List getDescriptorCollection() { final ConditionsDescriptor conditionsDescriptor = getConditionsDescriptor(); return conditionsDescriptor.getConditions(); }
/** * Checks if restrictionDescriptor has no {@link com.opensymphony.workflow.loader.ConditionDescriptor}s or * {@link ConditionsDescriptor}s left. */ public boolean isEmpty(RestrictionDescriptor restrictionDescriptor) { ConditionsDescriptor conditionsDescriptor = restrictionDescriptor.getConditionsDescriptor(); if (conditionsDescriptor == null) return true; Collection<?> conditions = conditionsDescriptor.getConditions(); return (conditions == null) || (conditions.isEmpty()); }
private int findNestedBlockInsertIndex(ConditionsDescriptor conditionsDescriptor) { Collection<?> conditions = conditionsDescriptor.getConditions(); if (conditions == null) return 0; int i = 0; for (Object descriptor : conditions) { if (descriptor instanceof ConditionDescriptor) { return i; } else if (descriptor instanceof ConditionsDescriptor) { i++; } else { throw new IllegalArgumentException("Cannot process class '" + descriptor.getClass().getName() + "'."); } } return i; }
private ConditionsDescriptor findConfitionsDescriptor(RestrictionDescriptor restrictionDescriptor, String count, int offset) { ConditionsDescriptor conditionsDescriptor = restrictionDescriptor.getConditionsDescriptor(); String[] counts = StringUtils.split(count, SEPARATOR); if (counts != null && counts.length > offset) { for (int i = 0; i < counts.length - offset; i++) { int c = Integer.parseInt(counts[i]); List<?> conditions = conditionsDescriptor.getConditions(); if (conditions.get(c - 1) instanceof ConditionsDescriptor) { conditionsDescriptor = (ConditionsDescriptor) conditions.get(c - 1); } else { throw new IllegalArgumentException("The descriptor at count " + count + " is not a ConditionsDescriptor."); } } } return conditionsDescriptor; }
private int getNumberConditions(ConditionsDescriptor conditionsDescriptor) { int number = 0; if (conditionsDescriptor != null) { Collection conditions = conditionsDescriptor.getConditions(); if (conditions != null) { for (Object o : conditions) { if (o instanceof ConditionDescriptor) { number++; } else if (o instanceof ConditionsDescriptor) { number += getNumberConditions((ConditionsDescriptor) o); } else { throw new IllegalArgumentException("Invalid object " + o + " found in condition collection."); } } } } return number; } }
private Set<String> getConditionClassnames(ConditionsDescriptor rootConditions) { Set<String> classNames = new HashSet<String>(); if(null == rootConditions) { return classNames; } final List nestedConditions = rootConditions.getConditions(); for (final Iterator iterator = nestedConditions.iterator(); iterator.hasNext(); ) { final Object o = iterator.next(); if (o instanceof ConditionDescriptor) { Set<Map.Entry<String,String>> args = (Set<Map.Entry<String,String>>) ((ConditionDescriptor) o).getArgs().entrySet(); classNames.addAll(getClassnamesFromArgs(args)); } else if (o instanceof ConditionsDescriptor) { classNames.addAll(getConditionClassnames((ConditionsDescriptor) o)); } } return classNames; }
final List nestedConditions = rootConditions.getConditions(); for (final Iterator iterator = nestedConditions.iterator(); iterator.hasNext(); )
/** * {@link ConditionsDescriptor#getConditions()} returns a mixed List of {@link ConditionDescriptor} for (top * level conditions) and {@link ConditionsDescriptor} (for nested groups of conditions) - see FISH-348 */ protected boolean upgradeConditions(ConditionsDescriptor conditionsDescriptor, ActionDescriptor action, JiraWorkflow workflow, boolean isSystemWorkflow) { boolean updated = false; for (Object node : conditionsDescriptor.getConditions()) { if (node instanceof ConditionsDescriptor) { updated = upgradeConditions((ConditionsDescriptor) node, action, workflow, isSystemWorkflow) || updated; } else if (node instanceof ConditionDescriptor) { ConditionDescriptor condition = (ConditionDescriptor) node; String descriptorClassName = (String) condition.getArgs().get(ARG_CLASSNAME); updated = upgradeCondition(condition, action, workflow, isSystemWorkflow, descriptorClassName); } else { log.debug("Unexpected child of ConditionsDescriptor: " + (node == null ? "null" : node.getClass())); } } return updated; }
for (Object o : conditionsDescriptor.getConditions())
private Map<String,Set<String>> removeConditionWithClassnames(ConditionsDescriptor rootConditions, Set<String> classesToRemove, Map<String,Set<String>> result) { final List nestedConditions = rootConditions.getConditions(); for (final Iterator iterator = nestedConditions.iterator(); iterator.hasNext(); ) { final Object o = iterator.next(); if (o instanceof ConditionDescriptor) { Set<Map.Entry<String,String>> args = (Set<Map.Entry<String,String>>) ((ConditionDescriptor) o).getArgs().entrySet(); Set<String> usedClassnames = getClassnamesFromArgs(args); if(!Sets.intersection(classesToRemove,usedClassnames).isEmpty()) { String extensionClass = StringUtils.defaultIfEmpty((String)((ConditionDescriptor) o).getArgs().get("class.name"),((ConditionDescriptor) o).toString());//NON-NLS result.put(extensionClass,classesToRemove); iterator.remove(); } } else if (o instanceof ConditionsDescriptor) { removeConditionWithClassnames((ConditionsDescriptor) o,classesToRemove,result); } } return result; }
conditionsDescriptor.getConditions().remove(getLastCount(count) - 1); conditionsDescriptor.getConditions().remove(getLastCount(count) - 1); else if (conditionsDescriptor.getConditions().size() == 1) Object descriptor = conditionsDescriptor.getConditions().get(0); ConditionsDescriptor conditionsDescriptor2 = getParentConditionsDescriptor(restriction, count); int index = getLastCount(count) - 1; conditionsDescriptor2.getConditions().remove(index); conditionsDescriptor2.getConditions().add(index, conditionDescriptor); conditionsDescriptor.getConditions().remove(0); if (cd.getConditions() != null && !cd.getConditions().isEmpty()) conditionsDescriptor.getConditions().addAll(cd.getConditions());
private void replaceConditionInConditionsDescriptor(ConditionsDescriptor descriptor, Map<String,String> matchMap, Map modifyMap) { List conditions = descriptor.getConditions(); for (Object condition : conditions) { if (condition instanceof ConditionsDescriptor) { replaceConditionInConditionsDescriptor((ConditionsDescriptor) condition, matchMap, modifyMap); } else if(condition instanceof ConditionDescriptor) { ConditionDescriptor conditionDescriptor = (ConditionDescriptor) condition; if (hasKeyValuesInArgMap(conditionDescriptor, matchMap)) { conditionDescriptor.getArgs().putAll(modifyMap); } } } }