@Override public ServiceOutcome<AssignableWorkflowScheme> updateWorkflowScheme(ApplicationUser user, @Nonnull AssignableWorkflowScheme scheme) { notNull("scheme", scheme); notNull("scheme.id", scheme.getId()); final ServiceOutcome<Void> outcome = validateUpdateWorkflowScheme(user, scheme); if (!outcome.isValid()) { return error(outcome); } try { return ok(workflowSchemeManager.updateWorkflowScheme(scheme)); } catch (SchemeIsBeingMigratedException e) { return getSchemeIsBeingMigratedError(user); } }
private void cleanUpSchemes(AssignableWorkflowScheme intermediateScheme) { AssignableWorkflowScheme originalScheme = workflowSchemeManager.getParentForDraft(targetScheme.getId()); if (!workflowSchemeManager.isActive(originalScheme)) { workflowSchemeManager.deleteWorkflowScheme(originalScheme); intermediateScheme = intermediateScheme.builder() .setName(originalScheme.getName()) .setDescription(originalScheme.getDescription()) .build(); workflowSchemeManager.updateWorkflowScheme(intermediateScheme); } }