package org.bonitasoft.simulation.iteration;
import java.util.HashSet;
import java.util.Set;
public class IterationNode implements Comparable<IterationNode>{
public static enum JoinType {
AND, XOR
}
public static enum SplitType {
AND, XOR
}
private String name;
private JoinType joinType;
private SplitType splitType;
private Set<IterationTransition> incomingTransitions = new HashSet<IterationTransition>();
private Set<IterationTransition> outgoingTransitions = new HashSet<IterationTransition>();
public IterationNode(final String name) {
super();
this.name = name;
}
public IterationNode(final String name, final JoinType joinType, final SplitType splitType) {
this(name);
this.joinType = joinType;
this.splitType = splitType;
}
public String getName() {
return name;
}
public Set<IterationTransition> getOutgoingTransitions() {
return outgoingTransitions;
}
public Set<IterationTransition> getIncomingTransitions() {
return incomingTransitions;
}
public void addIncomingTransition(IterationTransition t) {
this.incomingTransitions.add(t);
}
public void addOutgoingTransition(IterationTransition t) {
this.outgoingTransitions.add(t);
}
public void removeOutgoingTransition(IterationTransition transition) {
this.outgoingTransitions.remove(transition);
}
public void removeIncomingTransition(IterationTransition transition) {
this.incomingTransitions.remove(transition);
}
public boolean hasOutgoingTransitions() {
return !outgoingTransitions.isEmpty();
}
public boolean hasIncomingTransitions() {
return !incomingTransitions.isEmpty();
}
public JoinType getJoinType() {
return joinType;
}
public SplitType getSplitType() {
return splitType;
}
@Override
public String toString() {
return "IterationNode [name=" + name
+ ", joinType=" + joinType
+ ", splitType=" + splitType + "]";
}
public int compareTo(IterationNode anotherIterationNode) {
return this.toString().compareTo(anotherIterationNode.toString());
}
}