@Override public Multimap<String, Project> getProjectsForWorkflow(Set<String> workflows) { //We need to ensure that the projects are kept in insertion order so they are ordered correctly. final SetMultimap<String, Project> result = LinkedHashMultimap.create(); for (final Project project : getAllProjects()) { final Map<String, String> workflowMap = workflowSchemeManager.getWorkflowMap(project); String defaultWorkflow = workflowMap.get(null); if (defaultWorkflow == null) { defaultWorkflow = JiraWorkflow.DEFAULT_WORKFLOW_NAME; } for (final IssueType type : project.getIssueTypes()) { String workflow = workflowMap.get(type.getId()); if (workflow == null) { workflow = defaultWorkflow; } if (workflows.contains(workflow)) { result.put(workflow, project); } } } return result; }
@Override public AssignableWorkflowScheme.Builder assignableBuilder() { return workflowSchemeManager.assignableBuilder(); }
@VisibleForTesting void assignSchemeToProjectTemplate(StatefulTaskProgressSink migrationSink) throws GenericEntityException { // need to find the set of workflows that may need their draft workflows to be copied and deleted, since // the parent workflow may no longer be active. workflowSchemeManager.cleanUpSchemeDraft(project, user); schemeManager.removeSchemesFromProject(project); // Check if associating with none - the default workflow if (targetScheme != null && targetScheme.getId() != null) { Scheme scheme = workflowSchemeManager.getSchemeObject(targetScheme.getId()); schemeManager.addSchemeToProject(project, scheme); } }
@Override void quickMigrate() throws GenericEntityException { workflowSchemeManager.replaceSchemeWithDraft(targetScheme); // Clear the active workflow name cache workflowSchemeManager.clearWorkflowCache(); copyAndDeleteDraftsForInactiveWorkflowsIn(targetScheme.getParentScheme()); }
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); } }
@VisibleForTesting void assignSchemeToTemplate(StatefulTaskProgressSink migrationSink) throws GenericEntityException { WorkflowScheme sourceScheme = workflowSchemeManager.getWorkflowSchemeObj(project); assignSchemeToProjectTemplate(migrationSink); workflowSchemeManager.clearWorkflowCache(); copyAndDeleteDraftsForInactiveWorkflowsIn(sourceScheme); eventPublisher.publish(new WorkflowSchemeMigrationCompletedEvent(targetScheme)); }
Collection<GenericValue> workflowSchemes = workflowSchemeManager.getSchemes(); for (GenericValue workflowScheme : workflowSchemes) Collection<GenericValue> entities = workflowSchemeManager.getEntities(workflowScheme); for (GenericValue entity : entities) workflowSchemeManager.deleteEntity(entity.getLong("id"));
issueTypeScreenSchemeManager.removeSchemeAssociation(project, issueTypeScreenScheme); Scheme workflowScheme = workflowSchemeManager.getSchemeFor(project); final Iterable<JiraWorkflow> workflowsAssociatedToProject = workflowManager.getWorkflowsFromScheme(workflowScheme); workflowSchemeManager.cleanUpSchemeDraft(project, user); workflowSchemeManager.clearWorkflowCache(); workflowManager.copyAndDeleteDraftsForInactiveWorkflowsIn(user, workflowsAssociatedToProject);
private Project createProjectInternal(final CreateProjectValidationResult result, final Consumer<Project> projectConsumer) { if (result == null) { throw new IllegalArgumentException("You can not create a project with a null validation result."); } if (!result.isValid()) { throw new IllegalStateException("You can not create a project with an invalid validation result."); } if (result.getExistingProjectId().isPresent()) { ofNullable(projectManager.getProjectObj(result.getExistingProjectId().get())).orElseThrow(() -> new IllegalStateException("Existing project could not be found.")); } final ApplicationUser user = result.getUser(); final ProjectCreationData projectCreationData = result.getProjectCreationData(); final Project newProject = projectManager.createProject(user, new ProjectCreationData.Builder() .from(projectCreationData) .withKey(projectCreationData.getKey().toUpperCase()) .withLead(projectCreationData.getLead()) .withAssigneeType(effectiveAssigneeType(projectCreationData.getAssigneeType())) .build()); projectConsumer.accept(newProject); // Refresh the workflow cache workflowSchemeManager.clearWorkflowCache(); notifyHandlersOfProjectCreated(user, newProject, result); projectEventManager.dispatchProjectCreated(user, newProject); return newProject; }
private AssignableWorkflowScheme prepareIntermediateScheme() { String newDescription = getIntermediateSchemeDescription(); return workflowSchemeManager.copyDraft(targetScheme, user, newDescription); }
@Override @Nonnull public ServiceOutcome<AssignableWorkflowScheme> createScheme(ApplicationUser creator, @Nonnull AssignableWorkflowScheme scheme) { notNull("scheme", scheme); ServiceOutcome<AssignableWorkflowScheme> outcome = checkEditPermission(creator); if (!outcome.isValid()) { return outcome; } outcome = validateAssignable(creator, scheme, true); if (!outcome.isValid()) { return outcome; } return ok(workflowSchemeManager.createScheme(scheme)); }
@Override public ServiceOutcome<DraftWorkflowScheme> createDraft(ApplicationUser creator, long parentId) { ServiceOutcome<AssignableWorkflowScheme> parentOutcome = validateCreateDraft(creator, parentId); if (!parentOutcome.isValid()) { return ServiceOutcomeImpl.error(parentOutcome); } DraftWorkflowScheme draft = workflowSchemeManager.createDraftOf(creator, parentOutcome.getReturnedValue()); return ok(draft); }
@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)); }
try deleteResult = workflowSchemeManager.deleteWorkflowScheme(scheme);
workflowSchemeManager.clearWorkflowCache(); copyAndDeleteDraftsForInactiveWorkflowsIn(targetScheme.getParentScheme());
final Collection<SimpleHipChatPostFunction> postFunctions = new ArrayList<SimpleHipChatPostFunction>(); final Map<String, String> workflowMap = workflowSchemeManager.getWorkflowMap(project); for (Map.Entry<String, String> issueTypeWorkflow : workflowMap.entrySet()) { final String issueTypeId = issueTypeWorkflow.getKey();
final Map<String, String> workflowMap = workflowSchemeManager.getWorkflowMap(project); for (Map.Entry<String, String> entry : workflowMap.entrySet())