private ProjectCreationData overrideProjectTypeUsingTypeFromProjectTemplate(final ProjectCreationData projectCreationData) { return ofNullable(projectCreationData.getProjectTemplateKey()) .flatMap(projectTemplateManager::getProjectTemplate) .map(template -> new ProjectCreationData.Builder().from(projectCreationData).withType(template.getProjectTypeKey()).build()) .orElseGet(() -> projectCreationData); }
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; }
new ProjectCreationData.Builder() .withName(externalProject.getName()) .withKey(externalProject.getKey()) .withDescription(externalProject.getDescription()) .withLead(userManager.getUserByName(externalProject.getLead())) .withUrl(externalProject.getUrl()) .withAssigneeType(new Long(externalProject.getAssigneeType())) .withType(externalProject.getProjectTypeKey()) .build() );
@Nonnull @Override public CreateProjectValidationResult validateCreateProjectBasedOnExistingProject( final ApplicationUser user, @Nonnull final Long existingProjectId, @Nonnull ProjectCreationData input ) { final JiraServiceContext serviceContext = getServiceContext(user, ErrorCollections.empty()); final I18nHelper i18nBean = getI18nBean(user); if (!globalPermissionManager.hasPermission(GlobalPermissionKey.ADMINISTER, user)) { serviceContext.getErrorCollection().addErrorMessage(i18nBean.getText("admin.projects.service.error.no.admin.permission"), Reason.FORBIDDEN); return new CreateProjectValidationResult(serviceContext.getErrorCollection()); } final GetProjectResult projectById = getProjectByIdForAction(user, existingProjectId, ProjectAction.EDIT_PROJECT_CONFIG); if (!projectById.isValid()) { return new CreateProjectValidationResult(projectById.getErrorCollection()); } final ProjectCreationData creationData = new ProjectCreationData.Builder().fromExistingProject(projectById.get(), input).build(); isValidAllProjectData(serviceContext, creationData); return new CreateProjectValidationResult(serviceContext.getErrorCollection(), user, creationData, Optional.of(existingProjectId)); }
@Override public ProjectCreationData apply(final ProjectInputBean projectInputBean) { ProjectCreationData.Builder builder = new ProjectCreationData.Builder() .withName(projectInputBean.getName()) .withKey(projectInputBean.getKey()) .withDescription(projectInputBean.getDescription()) .withLead(userManager.getUserByName(projectInputBean.getLead())) .withUrl(projectInputBean.getUrl()) .withAssigneeType(projectInputBean.getAssigneeType().getId()) .withAvatarId(projectInputBean.getAvatarId()) .withProjectTemplateKey(projectInputBean.getProjectTemplateKey()) .withType(projectInputBean.getProjectTypeKey()); return builder.build(); } };
public Builder withType(String projectTypeKey) { return withType(projectTypeKey == null ? null : new ProjectTypeKey(projectTypeKey)); }