/** * Remove tree with provided root name from member-involvement-trees list. */ public void removeMemeberInvolvementTree(Name name) { memberInvolvementTrees.removeIf(s -> s.getName().equals(name)); }
public MemberInvolvementTree getNode(Name name) { for (MemberInvolvementTree node : nodes) { if (node.getName().equals(name)) { return node; } } return null; }
public MemberInvolvementTree getMemberInvolvemnetTree(Name name) { for (MemberInvolvementTree tree : memberInvolvementTrees) { if (tree.getName().equals(name)) { return tree; } } return null; } public boolean isMandatory() {
@Override public String toString() { Stack<MemberInvolvementTree> stack = new Stack<>(); stack.add(this); while(stack.peek().hasParent()) { stack.add(stack.peek().getParent()); } StringBuilder builder = new StringBuilder(); while (!stack.isEmpty()) { builder.append(stack.pop().getName()).append("."); } return builder.toString(); }
public Name shallowToString() { Stack<Name> stack = new Stack<>(); MemberInvolvementTree memberInvolvementTree = this; stack.push(memberInvolvementTree.getName()); while (memberInvolvementTree.hasParent()) { memberInvolvementTree = memberInvolvementTree.getParent(); stack.push(memberInvolvementTree.getName()); } Name name = new Name(); while (!stack.isEmpty()) { name.addWords(stack.pop().getWords()); } return name; }
private String getAttributePath(List<MemberInvolvementTree> list, String paramName, Operator operator) { StringBuilder attributePath = new StringBuilder(); for (int i=0; i<list.size(); i++) { MemberInvolvementTree current = list.get(i); attributePath.append(isOrGet(current.getType())).append(javaNames.getJavaClassStyleName(current.getName())).append("()"); if (current.isCollection()) { Name name = ((ListType)current.getType()).getElementType().getName(); String getterName = javaNames.getJavaClassStyleName(name) + "s"; if (i==list.size()-1) { //the last element of the expression is a collection StringBuilder soFar = new StringBuilder(paramName).append(attributePath).append(".get").append(getterName).append("()"); if (operator==Operator.AND) { attributePath.append("!=null && ").append(soFar).append("!=null && "); attributePath.append(soFar).append(".size() > 0"); } else { attributePath.append("==null || ").append(soFar).append("==null || "); attributePath.append(soFar).append(".size() == 0"); } } else { attributePath.append(".get").append(getterName).append("().get(0)"); } } } return attributePath.toString(); }
/** * Find the member-involvement-tree with the provided name and return it. * If no such tree exist, create it and add it to the Parameter object, * then return it. */ private MemberInvolvementTree getMemberTree(Parameter parameter, Name name) { for (MemberInvolvementTree tree : parameter.getMemberInvolvementTrees()) { if (tree.getName().equals(name)) { return tree; } } //if none found, create a new one, add it to the Parameter and return it MemberInvolvementTree tree = new MemberInvolvementTree(name); parameter.getMemberInvolvementTrees().add(tree); return tree; }
/** * Removes the provided node from either the tree it exists in, or, * if this node is a root - from the parent parameter. */ private void removeTree(MemberInvolvementTree tree, List<Parameter> parameters, MethodExpression expression) { if (tree.hasParent()) { tree.cutSelf(); } else { //to restore the original order. Stack<Name> stack = new Stack<>(); stackExpressionElements(stack, expression); //find the relevant parameter. Parameter parameter = getParameter(stack.pop(), parameters); parameter.removeMemeberInvolvementTree(tree.getName()); } }