package org.nlamah.QL.Model.Form; import java.util.List; import org.nlamah.QBase.Tools.ArrayTools; import org.nlamah.QL.Model.Form.Abstract.QLNode; import org.nlamah.QL.Interfaces.QLFormElementVisitor; import org.nlamah.QL.Interfaces.QLNodeVisitor; import org.nlamah.QL.Model.Form.Abstract.FormElement; public class ConditionalBlock extends FormElement { private IfThenBlock ifThenBlock; private List<ElseIfThenBlock> elseIfThenBlocks; private ElseThenBlock elseThenBlock; public ConditionalBlock(IfThenBlock ifThenBlock, List<ElseIfThenBlock> elseIfThenBlocks, ElseThenBlock elseThenBlock) { super(null); this.ifThenBlock = ifThenBlock; this.elseIfThenBlocks = elseIfThenBlocks; this.elseThenBlock = elseThenBlock; setParentElements(); } private void setParentElements() { if (ifThenBlock != null) { ifThenBlock.setParentNode(this); } if (ArrayTools.arrayExistsAndHasElements(elseIfThenBlocks)) { for (ElseIfThenBlock elseIfThenBlock : elseIfThenBlocks) { elseIfThenBlock.setParentNode(this); } } if (elseThenBlock != null) { elseThenBlock.setParentNode(this); } } public IfThenBlock ifThenBlock() { return this.ifThenBlock; } public List<ElseIfThenBlock> elseIfThenBlocks() { return this.elseIfThenBlocks; } public ElseThenBlock elseThenBlock() { return this.elseThenBlock; } @Override public boolean equals(Object object) { if (!super.equals(object)) { return false; } if (!(object instanceof ConditionalBlock)) { return false; } ConditionalBlock value = (ConditionalBlock)object; if (!(this.ifThenBlock.equals(value.ifThenBlock))) { return false; } if (!(this.elseIfThenBlocks.equals(value.elseIfThenBlocks))) { return false; } if (this.elseThenBlock == null && value.elseThenBlock == null) { return true; } if (!(this.elseThenBlock.equals(value.elseThenBlock))) { return false; } return true; } @Override public QLNode accept(QLNodeVisitor visitor) { return visitor.visit(this); } @Override public void accept(QLFormElementVisitor visitor) { visitor.visit(this); } }