public Builder from(ProjectCreationData data) { this.name = data.getName(); this.key = data.getKey(); this.description = data.getDescription(); this.projectTypeKey = data.getProjectTypeKey(); this.projectTemplateKey = data.getProjectTemplateKey(); this.lead = data.getLead(); this.url = data.getUrl(); this.assigneeType = data.getAssigneeType(); this.avatarId = data.getAvatarId(); return this; }
@Override public Project createProject(@Nonnull ApplicationUser user, @Nonnull ProjectCreationData projectCreationData) { MockProject project = new MockProject( nextId.addAndGet(1), projectCreationData.getKey(), projectCreationData.getName() ); project.setAssigneeType(projectCreationData.getAssigneeType()); return project; }
@Override public boolean isValidAllProjectData(JiraServiceContext serviceContext, ProjectCreationData projectCreationData) { final ErrorCollection errorCollection = ErrorCollections.empty(); final I18nHelper i18nHelper = serviceContext.getI18nBean(); isValidRequiredProjectData(getServiceContext(serviceContext.getLoggedInApplicationUser(), errorCollection), projectCreationData); validateProjectUrl(projectCreationData.getUrl(), errorCollection, i18nHelper); validateProjectAssigneeType(projectCreationData.getAssigneeType(), errorCollection, i18nHelper); validateAvatarId(projectCreationData.getAvatarId(), projectManager.getProjectObjByKey(projectCreationData.getKey()), errorCollection, i18nHelper); validateProjectTemplate(projectCreationData.getProjectTemplateKey(), errorCollection, i18nHelper); if (errorCollection.hasAnyErrors()) { serviceContext.getErrorCollection().addErrorCollection(errorCollection); return false; } return true; }
@Override public boolean isValidRequiredProjectData(JiraServiceContext serviceContext, ProjectCreationData projectCreationData) { final ErrorCollection errorCollection = ErrorCollections.empty(); final I18nHelper i18nBean = serviceContext.getI18nBean(); validateProjectName(projectCreationData.getName(), errorCollection, i18nBean); validateProjectKey(null, projectCreationData.getKey(), errorCollection, i18nBean); validateProjectLead(Option.option(projectCreationData.getLead()), errorCollection, i18nBean); validateProjectType(serviceContext.getLoggedInApplicationUser(), projectCreationData.getProjectTypeKey(), errorCollection, i18nBean); if (errorCollection.hasAnyErrors()) { serviceContext.getErrorCollection().addErrorCollection(errorCollection); return false; } return true; }
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 boolean shouldApplyCoreProjectConfiguration(ProjectCreationData projectCreationData) { ProjectTemplateKey projectTemplateKey = projectCreationData.getProjectTemplateKey(); return projectTemplateKey == null || StringUtils.isEmpty(projectTemplateKey.getKey()); }
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); }
this.projectTemplateKey = null; this.name = input.getName(); this.key = input.getKey(); this.description = input.getDescription(); this.url = input.getUrl(); this.avatarId = input.getAvatarId(); this.lead = ofNullable(input.getLead()).orElse(existingProject.getProjectLead()); this.assigneeType = ofNullable(input.getAssigneeType()).orElse(existingProject.getAssigneeType()); return this;
private void notifyHandlersOfProjectCreated(ApplicationUser user, Project newProject, CreateProjectValidationResult result) { final ProjectCreatedData.Builder projectCreatedData = new ProjectCreatedData.Builder().withProject(newProject); Optional.ofNullable(result.getProjectCreationData().getProjectTemplateKey()).ifPresent(projectCreatedData::withProjectTemplateKey); result.getExistingProjectId().ifPresent(projectCreatedData::withExistingProjectId); boolean notificationWasSuccessful = projectCreateNotifier.notifyAllHandlers(projectCreatedData.build()); if (!notificationWasSuccessful) { deleteProject(user, new DeleteProjectValidationResult(ErrorCollections.empty(), newProject)); throw new RuntimeException("An error occurred while notifying that a project was created"); } }
@Override public Project createProject(@Nonnull ApplicationUser user, @Nonnull ProjectCreationData projectCreationData) String key = projectCreationData.getKey(); String name = projectCreationData.getName(); ApplicationUser lead = projectCreationData.getLead(); String url = projectCreationData.getUrl(); String description = projectCreationData.getDescription(); Long avatarId = projectCreationData.getAvatarId(); Long assigneeType = projectCreationData.getAssigneeType(); ProjectTypeKey projectTypeKey = projectCreationData.getProjectTypeKey();