package cz.cuni.mff.d3s.been.objectrepository.janitor; import cz.cuni.mff.d3s.been.core.task.TaskContextState; import cz.cuni.mff.d3s.been.persistence.task.PersistentContextState; /** * Helper class for a terminal decision on what the outcome of a task context was * * @author darklight */ public class TotalContextOutcome implements TotalOutcome<PersistentContextState> { private PersistentContextState startingState; private PersistentContextState terminalState; @Override public boolean isZombie() { return startingState != null && terminalState == null; } @Override public boolean isFailed() { return !isZombie() && TaskContextState.FAILED.equals(terminalState.getContextState()); } @Override public void addStateEntry(PersistentContextState stateEntry) { switch (stateEntry.getContextState()) { case RUNNING: startingState = stateEntry; break; case FINISHED: case FAILED: terminalState = stateEntry; break; default: // something odd break; } } @Override public String getEventId() { return startingState == null ? terminalState.getContextId() : startingState.getContextId(); } }