package alien4cloud.paas.wf; import java.util.ArrayList; import java.util.Collection; import java.util.LinkedHashSet; import java.util.List; import lombok.Getter; import lombok.Setter; /** * A path is actually an ordered list of steps. We use a hash implem to ease 'contains' query. */ @Getter @Setter public class Path extends LinkedHashSet<AbstractStep> { boolean cycle; /** * The step responsible of the loop. */ private AbstractStep loopingStep; public Path() { super(); } public Path(Collection<? extends AbstractStep> c) { super(c); } public List<String> getStepNames() { List<String> stepNames = new ArrayList<String>(); for (AbstractStep step : this) { stepNames.add(step.getName()); } if (loopingStep != null) { stepNames.add(loopingStep.getName()); } return stepNames; } @Override public String toString() { return "Path [cycle=" + cycle + ", loopingStep=" + loopingStep + ", path:" + super.toString() + "]"; } }