@Override
public Either<Project, ErrorCollection> updateProjectType(ApplicationUser user, Project project, ProjectTypeKey newProjectType)
{
I18nHelper i18nBean = getI18nBean(user);
ErrorCollection errorCollection = new SimpleErrorCollection();
if (!checkActionPermission(user, project, ProjectAction.EDIT_PROJECT_CONFIG))
{
errorCollection.addErrorMessage(i18nBean.getText("admin.errors.project.type.update.no.permission"), Reason.FORBIDDEN);
}
validateProjectType(user, newProjectType, errorCollection, i18nBean);
if (errorCollection.hasAnyErrors())
{
return Either.right(errorCollection);
}
return executeUnderClusterLock(getLockNameFor(project), () -> {
Project updatedProject = projectManager.updateProjectType(user, project, newProjectType);
return notifyProjectTypeUpdated(user, updatedProject, project.getProjectTypeKey(), newProjectType);
});
}