MockAssignableWorkflowSchemeState(AssignableWorkflowScheme scheme) { this.id = scheme.getId(); this.mappings = Maps.newHashMap(scheme.getMappings()); this.name = scheme.getName(); this.description = scheme.getDescription(); }
public MockAssignableWorkflowScheme(AssignableWorkflowScheme scheme) { super(scheme); this.name = scheme.getName(); this.description = scheme.getDescription(); this.defaultScheme = scheme.isDefault(); }
AssignableWorkflowSchemeBuilder(AssignableWorkflowScheme scheme) { super(scheme); this.name = scheme.getName(); this.description = scheme.getDescription(); }
private UriBuilder getUrlForParent(AssignableWorkflowScheme scheme) { return info.getBaseUriBuilder().path(WorkflowSchemeResource.class) .path(String.valueOf(scheme.getId())); }
private void createSchemeEntities(AssignableWorkflowScheme workflowScheme) { // Create all new entities for (Map.Entry<String, String> mappingEntry : workflowScheme.getMappings().entrySet()) { String issueTypeId = mappingEntry.getKey(); if (issueTypeId == null) { issueTypeId = ALL_ISSUE_TYPES; } String workflowName = mappingEntry.getValue(); SchemeEntity schemeEntity = new SchemeEntity(workflowName, issueTypeId); try { createSchemeEntity(workflowScheme.getId(), schemeEntity); } catch (GenericEntityException e) { throw new DataAccessException(e); } } }
@Nonnull @Override public AssignableWorkflowScheme createScheme(@Nonnull AssignableWorkflowScheme workflowScheme) { notNull("wokflowScheme", workflowScheme); AssignableWorkflowSchemeStore.AssignableState.Builder builder = assignableWorkflowSchemeStore.builder(); builder.setName(workflowScheme.getName()) .setDescription(workflowScheme.getDescription()) .setMappings(workflowScheme.getMappings()); AssignableWorkflowSchemeStore.AssignableState savedState = assignableWorkflowSchemeStore.create(builder.build()); eventPublisher.publish(createSchemeCreatedEvent(getSchemeObject(savedState.getId()))); return toWorkflowScheme(savedState); }
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); } }
@Override @Nonnull public DraftWorkflowScheme createDraftOf(ApplicationUser creator, @Nonnull AssignableWorkflowScheme workflowScheme) { notNull("workflowScheme", workflowScheme); Assertions.not("workflowScheme.default", workflowScheme.isDefault()); notNull("workflowScheme.id", workflowScheme.getId()); Assertions.not("scheme already has draft.", hasDraft(workflowScheme)); final DraftWorkflowSchemeStore.DraftState.Builder builder = draftWorkflowSchemeStore.builder(workflowScheme.getId()); builder.setMappings(workflowScheme.getMappings()); builder.setLastModifiedUser(creator != null ? creator.getKey() : null); final DraftWorkflowSchemeStore.DraftState state = draftWorkflowSchemeStore.create(builder.build()); return toWorkflowScheme(state); }
private ServiceOutcome<AssignableWorkflowScheme> validateAssignable(ApplicationUser user, AssignableWorkflowScheme scheme, boolean creating) { if (scheme.getName() == null) { return getError(user, Reason.VALIDATION_FAILED, "admin.workflowschemes.service.error.scheme.must.have.name"); } else if (scheme.getName().length() > 255) { return getError(user, Reason.VALIDATION_FAILED, "admin.workflowschemes.service.error.scheme.name.too.big"); } else { AssignableWorkflowScheme oldScheme = workflowSchemeManager.getWorkflowSchemeObj(scheme.getName()); if (oldScheme != null && (creating || !oldScheme.getId().equals(scheme.getId()))) { return getError(user, Reason.VALIDATION_FAILED, "admin.workflowschemes.service.error.scheme.name.duplicate", scheme.getName()); } } return validateMappings(user, scheme); }
@Override ServiceOutcome<? extends RestWorkflowScheme> update(WorkflowSchemeBean bean) final AssignableWorkflowScheme.Builder parentBuilder = scheme.builder(); if (bean.isNameSet()) DraftWorkflowScheme child = magicDraft ? getDraft() : null; Map<String, String> map = getWorkflowMap(scheme, bean); if (child == null && (!workflowSchemeService.isActive(scheme) || Objects.equal(map, scheme.getMappings()) || !magicDraft)) if (child == null) draftSchemeOutcome = workflowSchemeService.createDraft(user, scheme.getId()); if (!draftSchemeOutcome.isValid())
WorkflowSchemeBean asBean(AssignableWorkflowScheme parent, DraftWorkflowScheme child) bean.setName(parent.getName()); bean.setDescription(parent.getDescription()); bean.setOriginalIssueTypeMappings(asIssueTypeMap(parent)); bean.setSelf(getUrlForParent(parent).path("draft").build()); bean.setOriginalDefaultWorkflow(child.getParentScheme().getActualDefaultWorkflow());
ServiceOutcome<? extends RestWorkflowScheme> removeDefault(boolean updateDraftIfNeeded) { final AssignableWorkflowScheme newScheme = scheme.builder().removeDefault().build(); return doUpdateMappings(newScheme, updateDraftIfNeeded, new Function<DraftRestWorkflowScheme, ServiceOutcome<? extends RestWorkflowScheme>>() { @Override public ServiceOutcome<? extends RestWorkflowScheme> apply(DraftRestWorkflowScheme input) { return input.removeDefault(); } }); }
@Override public String getDescription() { return parent == null ? null : parent.getDescription(); }
@Override public String getName() { return parent.getName(); } }
DraftWorkflowSchemeBuilder(AssignableWorkflowScheme parent) { super(null, parent.getMappings()); this.lastModifiedUser = null; this.lastModifiedTime = null; this.parent = parent; }
@Override public ServiceOutcome<DraftWorkflowScheme> getDraftWorkflowScheme(ApplicationUser user, @Nonnull AssignableWorkflowScheme parentScheme) { Assertions.notNull("scheme", parentScheme); return ok(!parentScheme.isDefault() ? workflowSchemeManager.getDraftForParent(parentScheme) : null); }
@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 public ServiceOutcome<Void> validateUpdateWorkflowScheme(ApplicationUser user, @Nonnull AssignableWorkflowScheme scheme) { ServiceOutcome<AssignableWorkflowScheme> outcome = checkEditPermission(user); if (!outcome.isValid()) { return error(outcome); } outcome = getWorkflowSchemeNoPermissionCheck(user, scheme.getId()); if (!outcome.isValid()) { return error(outcome); } AssignableWorkflowScheme currentScheme = outcome.getReturnedValue(); outcome = validateAssignable(user, scheme, false); if (!outcome.isValid()) { return error(outcome); } if (isActive(currentScheme) && !Objects.equal(scheme.getMappings(), currentScheme.getMappings())) { return getError(user, Reason.VALIDATION_FAILED, "admin.workflowschemes.service.error.change.active"); } return error(outcome); }