/** * Adds a new {@link ProgramWorkflowState} to this ProgramWorkflow * * @param state - the {@link ProgramWorkflowState} to add */ public void addState(ProgramWorkflowState state) { state.setProgramWorkflow(this); getStates().add(state); }
/** * Removes a {@link ProgramWorkflowState} from this ProgramWorkflow * * @param state - the {@link ProgramWorkflowState} to remove */ public void removeState(ProgramWorkflowState state) { if (getStates().contains(state)) { getStates().remove(state); state.setProgramWorkflow(null); } }
private void ensureProgramWorkflowIsSet(ProgramWorkflowState state, ProgramWorkflow workflow) { if (state.getProgramWorkflow() == null) { state.setProgramWorkflow(workflow); } else if (!state.getProgramWorkflow().equals(workflow)) { throw new APIException("ProgramWorkflow.error.contains.state", new Object[] { workflow.getProgram() }); } }
@Test public void transitionToDate_shouldSetEndDateOfNewStateToProgramCompletionDateIfProgramCompleted() throws Exception { //given PatientProgram program = new PatientProgram(); program.setDateEnrolled(new Date()); program.setDateCompleted(new Date()); ProgramWorkflow workflow = new ProgramWorkflow(); ProgramWorkflowState workflowState = new ProgramWorkflowState(); workflowState.setTerminal(false); workflowState.setProgramWorkflow(workflow); //when program.transitionToState(workflowState, new Date()); //then Assert.assertTrue(program.getStates().size() == 1); Assert.assertTrue(program.getStates().iterator().next().getEndDate().equals(program.getDateCompleted())); }
@Override public void setParent(ProgramWorkflowState instance, ProgramWorkflow programWorkflow) { instance.setProgramWorkflow(programWorkflow); }
@Test public void transitionToDate_shouldSetEndDateOfNewStateToNullIfProgramNotCompleted() throws Exception { //given PatientProgram program = new PatientProgram(); program.setDateEnrolled(new Date()); ProgramWorkflow workflow = new ProgramWorkflow(); ProgramWorkflowState workflowState = new ProgramWorkflowState(); workflowState.setTerminal(false); workflowState.setProgramWorkflow(workflow); //when program.transitionToState(workflowState, new Date()); //then Assert.assertTrue(program.getStates().size() == 1); Assert.assertNull(program.getStates().iterator().next().getEndDate()); }
ProgramWorkflow workflow = new ProgramWorkflow(); ProgramWorkflowState workflowState = new ProgramWorkflowState(); workflowState.setProgramWorkflow(workflow);
ProgramWorkflow workflow = new ProgramWorkflow(); ProgramWorkflowState workflowState = new ProgramWorkflowState(); workflowState.setProgramWorkflow(workflow);