private void checkStateDate(DateTime stateDate, final PhdProcessStateType type) { Collection<? extends PhdProcessState> orderedStates = getProcess().getOrderedStates(); for (PhdProcessState phdProcessState : orderedStates) { if (phdProcessState == this) { continue; } if (phdProcessState.getStateDate() != null && phdProcessState.getStateDate().isAfter(stateDate)) { String newStateDate = stateDate.toString("dd/MM/yyyy") + " - " + type.getLocalizedName(); String actualStateDate = phdProcessState.getStateDate().toString("dd/MM/yyyy") + " - " + phdProcessState.getType().getLocalizedName(); throw new PhdDomainOperationException( "error.PhdProcessState.state.date.is.previous.of.actual.state.on.process", newStateDate, actualStateDate); } } }
@Override public int compare(PhdProcessState o1, PhdProcessState o2) { int result = o1.getStateDate().compareTo(o2.getStateDate()); return result != 0 ? result : o1.getExternalId().compareTo(o2.getExternalId()); }