public MockDraftWorkflowScheme(DraftWorkflowScheme ws) { super(ws); this.lastModifiedUser = ws.getLastModifiedUser(); this.lastModifiedDate = ws.getLastModifiedDate(); this.parentScheme = ws.getParentScheme(); }
DraftWorkflowSchemeBuilder(DraftWorkflowScheme draftWorkflowScheme) { super(draftWorkflowScheme); this.lastModifiedUser = draftWorkflowScheme.getLastModifiedUser(); this.lastModifiedTime = draftWorkflowScheme.getLastModifiedDate(); this.parent = draftWorkflowScheme.getParentScheme(); }
@Override public TaskDescriptor<WorkflowMigrationResult> getActiveByProjects(@Nonnull DraftWorkflowScheme scheme, boolean onlyDraftMigrations, boolean onlyNonSafeToDelete) { List<Project> projectsUsing = manager.getProjectsUsing(scheme.getParentScheme()); if (projectsUsing.isEmpty()) { return null; } Project primaryProject = projectsUsing.get(0); TaskDescriptor<WorkflowMigrationResult> task = findSchemeMigrationTask(new ProjectMigrationTaskMatcher(scheme, projectsUsing, primaryProject, onlyDraftMigrations, onlyNonSafeToDelete)); if (task == null) { // Check parent scheme migrations. task = getActive(scheme.getParentScheme()); } return task; }
@Override void quickMigrate() throws GenericEntityException { workflowSchemeManager.replaceSchemeWithDraft(targetScheme); // Clear the active workflow name cache workflowSchemeManager.clearWorkflowCache(); copyAndDeleteDraftsForInactiveWorkflowsIn(targetScheme.getParentScheme()); }
@Override public DraftWorkflowScheme updateDraftWorkflowScheme(final ApplicationUser user, @Nonnull final DraftWorkflowScheme scheme) { notNull("scheme", scheme); notNull("scheme.id", scheme.getId()); // We lock the parent scheme in case of drafts final Lock lock = getLock(scheme.getParentScheme().getId(), UPDATE_DRAFT_WORKFLOW_SCHEME); return ManagedLocks.manage(lock).withLock(new com.atlassian.util.concurrent.Supplier<DraftWorkflowScheme>() { @Override public DraftWorkflowScheme get() { WorkflowSchemeMigrationTaskAccessor taskAccessor = getTaskAccessor(); if (taskAccessor.getActiveByProjects(scheme, true) != null) { throw new SchemeIsBeingMigratedException(); } DraftWorkflowSchemeStore.DraftState savedState = draftWorkflowSchemeStore.get(scheme.getId()); notNull(format("scheme with id %d does not exist.", scheme.getId()), savedState); DraftWorkflowSchemeStore.DraftState.Builder builder = savedState.builder(); builder.setMappings(scheme.getMappings()); builder.setLastModifiedUser(user == null ? null : user.getKey()); return toWorkflowScheme(draftWorkflowSchemeStore.update(builder.build())); } }); }
@Nonnull @Override public DraftWorkflowScheme createDraft(ApplicationUser creator, @Nonnull DraftWorkflowScheme workflowScheme) { notNull("workflowScheme", workflowScheme); AssignableWorkflowScheme parentScheme = workflowScheme.getParentScheme(); notNull("workflowScheme.parentScheme", parentScheme); notNull("workflowScheme.parentScheme.id", parentScheme.getId()); Assertions.not("scheme already has draft.", hasDraft(parentScheme)); final DraftWorkflowSchemeStore.DraftState.Builder builder = draftWorkflowSchemeStore.builder(parentScheme.getId()); builder.setMappings(workflowScheme.getMappings()); builder.setLastModifiedUser(creator != null ? creator.getKey() : null); final DraftWorkflowSchemeStore.DraftState state = draftWorkflowSchemeStore.create(builder.build()); return toWorkflowScheme(state); }
public DraftState addStateForScheme(DraftWorkflowScheme scheme) { return addState(new MockDraftWorkflowSchemeState.Builder(scheme.getParentScheme().getId()) .setId(scheme.getId()) .setMappings(scheme.getMappings()) .setLastModifiedDate(scheme.getLastModifiedDate()).build()); }
copyAndDeleteDraftsForInactiveWorkflowsIn(targetScheme.getParentScheme());
if (scheme.isDraft()) lockSchemeId = ((DraftWorkflowScheme) scheme).getParentScheme().getId();
@Override public ServiceOutcome<DraftWorkflowScheme> createDraft(ApplicationUser creator, DraftWorkflowScheme draftWorkflowScheme) { notNull("workflowScheme", draftWorkflowScheme); AssignableWorkflowScheme parentScheme = draftWorkflowScheme.getParentScheme(); notNull("workflowScheme.parentScheme", parentScheme); notNull("workflowScheme.parentScheme.id", parentScheme.getId()); ServiceOutcome<AssignableWorkflowScheme> parentOutcome = validateCreateDraft(creator, parentScheme.getId()); if (!parentOutcome.isValid()) { return ServiceOutcomeImpl.error(parentOutcome); } ServiceOutcome<DraftWorkflowScheme> outcome = validateMappings(creator, draftWorkflowScheme); if (!outcome.isValid()) { return outcome; } return ok(workflowSchemeManager.createDraft(creator, draftWorkflowScheme)); }
bean.setOriginalIssueTypeMappings(asIssueTypeMap(parent)); bean.setSelf(getUrlForParent(parent).path("draft").build()); bean.setOriginalDefaultWorkflow(child.getParentScheme().getActualDefaultWorkflow());