package alien4cloud.paas.wf; import java.util.HashSet; import java.util.Set; import lombok.Getter; import lombok.Setter; import com.fasterxml.jackson.annotation.JsonIgnore; import com.fasterxml.jackson.annotation.JsonIgnoreProperties; import com.fasterxml.jackson.annotation.JsonTypeInfo; import com.fasterxml.jackson.annotation.JsonTypeInfo.As; import com.fasterxml.jackson.annotation.JsonTypeInfo.Id; @Getter @Setter @JsonIgnoreProperties(ignoreUnknown = true) @JsonTypeInfo(use = Id.CLASS, include = As.PROPERTY, property = "type", visible = true) public abstract class AbstractStep { // a unique name private String name; private Set<String> precedingSteps; private Set<String> followingSteps; public void addPreceding(String stepId) { if (precedingSteps == null) { precedingSteps = new HashSet<String>(); } precedingSteps.add(stepId); } public void removePreceding(String stepId) { precedingSteps.remove(stepId); } public void addFollowing(String stepId) { if (followingSteps == null) { followingSteps = new HashSet<String>(); } followingSteps.add(stepId); } public void removeFollowing(String stepId) { followingSteps.remove(stepId); } @JsonIgnore public abstract String getStepAsString(); @Override public String toString() { return getStepAsString(); } }