package org.drugis.common.threading.activity; import java.util.Collections; import java.util.List; import org.drugis.common.threading.Task; /** * A DirectTransition simply moves from state A to B. */ public class DirectTransition implements Transition { private final Task d_source; private final Task d_target; public DirectTransition(Task source, Task target) { d_source = source; d_target = target; } public List<Task> getSources() { return Collections.singletonList(d_source); } public List<Task> getTargets() { return Collections.singletonList(d_target); } public boolean isReady() { return d_source.isFinished(); } public List<Task> transition() { if (!isReady()) { throw new RuntimeException("Not ready for transition."); } return Collections.singletonList(d_target); } }