Interface ProjectManager

All Known Implementing Classes:
AbstractProjectManager, CachingProjectManager, DefaultProjectManager, MockProjectManager

public interface ProjectManager
Implementations of this interface are responsible for all management of project entities within JIRA.
  • Method Details

    • createProject

      Project createProject(@Nonnull ApplicationUser user, @Nonnull ProjectCreationData projectCreationData)
      Creates the project in the database, and adds default project roles for this project.

      If no name, key, lead or project type are provided an exception will be thrown.

      Parameters:
      user - The user creating the project
      projectCreationData - An object encapsulating all the data for the project that will get created
      Returns:
      The newly created project.
      Since:
      7.0
      See Also:
    • updateProject

      Project updateProject(Project originalProject, String name, String description, String leadKey, String url, Long assigneeType)
      Updates the project provided with the new attributes passed in. This method is responsible for persisting any changes to the database.
      Parameters:
      originalProject - The project to be updated.
      name - The name for the updated project
      description - An optional description for the project
      leadKey - The userkey of the lead developer for the project
      url - An optional URL for the updated project
      assigneeType - The default assignee for issues created in this project. May be either project lead, or unassigned if unassigned issues are enabled.
      Returns:
      The updated project
    • updateProject

      Project updateProject(Project originalProject, String name, String description, String leadKey, String url, Long assigneeType, Long avatarId, String projectKey)
      Updates the project provided with the new attributes passed in. This method is responsible for persisting any changes to the database.
      Parameters:
      originalProject - The project to be updated.
      name - The name for the updated project
      description - An optional description for the project
      leadKey - The userkey of the lead developer for the project
      url - An optional URL for the updated project
      assigneeType - The default assignee for issues created in this project. May be either project lead, or unassigned if unassigned issues are enabled.
      projectKey - The new project key (not updated if null)
      Returns:
      The updated project
      Since:
      v6.1
    • updateProject

      Project updateProject(Project originalProject, String name, String description, String leadKey, String url, Long assigneeType, Long avatarId)
      Updates the project provided with the new attributes passed in. This method is responsible for persisting any changes to the database.
      Parameters:
      originalProject - The project to be updated.
      name - The name for the updated project
      description - An optional description for the project
      leadKey - The userkey of the lead developer for the project
      url - An optional URL for the updated project
      assigneeType - The default assignee for issues created in this project. May be either project lead, or unassigned if unassigned issues are enabled.
      avatarId - the id of an existing avatar.
      Returns:
      The updated project
    • updateProject

      Project updateProject(UpdateProjectParameters parameters)
      Updates the project with the given changes.
      Parameters:
      parameters - containing the changes to the project that needs to be made.
      Returns:
      The updated project
      Since:
      v7.2
    • updateProjectType

      Project updateProjectType(ApplicationUser user, Project project, ProjectTypeKey newProjectType)
      Updates the type of a project.
      Parameters:
      user - The user performing the action
      project - The project which type needs to be updated
      newProjectType - The new project type
      Returns:
      The updated project
      Since:
      7.0
    • removeProjectIssues

      void removeProjectIssues(Project project) throws RemoveException
      Deprecated.
      Removes all issues for a particular project. A RemoveException will be thrown on any errors removing issues.
      Parameters:
      project - The project for which issues will be deleted.
      Throws:
      RemoveException - if there's any errors removing issues
    • removeProjectIssues

      void removeProjectIssues(Project project, Context taskContext) throws RemoveException
      Removes all issues for a particular project. A RemoveException will be thrown on any errors removing issues.
      Parameters:
      project - The project for which issues will be deleted.
      taskContext - A task context for providing progress.
      Throws:
      RemoveException - if there's any errors removing issues
      Since:
      7.1.1
    • removeProject

      void removeProject(Project project)
      Deletes the provided project from the database. Please note that this method only deletes the project itself and not any related entities. Use ProjectService.deleteProject(com.atlassian.jira.user.ApplicationUser, com.atlassian.jira.bc.project.ProjectService.DeleteProjectValidationResult) to properly delete a project.
      Parameters:
      project - The project to be deleted.
    • getProjectObj

      @Nullable Project getProjectObj(Long id) throws DataAccessException
      Retrieves a single Project by its id.
      Parameters:
      id - ID of the Project.
      Returns:
      Project object or null if project with that id doesn't exist.
      Throws:
      DataAccessException - If any errors occur accessing the DB.
    • getProjectObjByName

      Project getProjectObjByName(String projectName)
      Returns a Project object based on the passed in project name.
      Parameters:
      projectName - the name of the project
      Returns:
      the Project object specified by the supplied name or null
    • getProjectObjByKey

      Project getProjectObjByKey(String projectKey)
      Returns a Project object based on the passed in project key.
      Parameters:
      projectKey - the Project key.
      Returns:
      the Project object specified by the key or null
    • getProjectByCurrentKey

      @ExperimentalApi Project getProjectByCurrentKey(String projectKey)
      Returns the Project with the given project key.

      This method will strictly only return the project whose current project key is the one given.

      This method is added to the API in anticipation of being able to edit the project key, but this feature has not actually been added in 6.0.

      Parameters:
      projectKey - the Project key.
      Returns:
      the Project with the given project key.
      Since:
      6.0
      See Also:
    • getProjectByCurrentKeyIgnoreCase

      Project getProjectByCurrentKeyIgnoreCase(String projectKey)
      Returns a Project object based on the passed in project key, not taking into account the case of the project key.
      Parameters:
      projectKey - the project key, case does not matter.
      Returns:
      the project object specified by the key or null if no such project exists.
    • getProjectObjByKeyIgnoreCase

      Project getProjectObjByKeyIgnoreCase(String projectKey)
      Returns a Project object based on the passed in project key, not taking into account the case of the project key. Matches also by previous keys that were associated with a project.
      Parameters:
      projectKey - the project key, case does not matter.
      Returns:
      the project object specified by the key or null if no such project exists.
    • getProjectsByArgs

      Collection<Project> getProjectsByArgs(@Nonnull Collection<String> projectArgs)
      Resolve project arguments(ID, name or key) into list of project objects.
      Parameters:
      projectArgs - set of arguments: ID, key or name
      Returns:
      the collection of projects
    • getAllProjectKeys

      Set<String> getAllProjectKeys(Long projectId)
      Returns all project keys that are associated with Project.
      Returns:
      all project keys (including the current one) associated with the project
    • getProjects

      @Nonnull List<Project> getProjects()
      Return all active Projects ordered by name. A project is considered active if it is not archived.
      Returns:
      all active projects ordered by name.
    • getArchivedProjects

      @Nonnull @ExperimentalApi List<Project> getArchivedProjects()
      Return archived Projects ordered by name.
      Returns:
      all projects ordered by name.
    • getProjectObjects

      @Nonnull List<Project> getProjectObjects() throws DataAccessException
      Return all open Projects ordered by name.

      This method does the same thing as getProjects() and exists for legacy reasons.

      Returns:
      all projects ordered by name.
      Throws:
      DataAccessException - If any errors occur accessing the DB.
      See Also:
    • getProjectCount

      long getProjectCount() throws DataAccessException
      Return the total number of Projects.
      Returns:
      A long value representing tht total number of projects.
      Throws:
      DataAccessException - if any errors occur accessing the DB.
    • getNextId

      long getNextId(Project project) throws DataAccessException
      Get the next issue ID from this project (transactional). Each project maintains an internal counter for the number of issues. This method may be used to construct a new issue key.
      Parameters:
      project - The Project
      Returns:
      A long value representing a new issue id for the project.
      Throws:
      DataAccessException - If any errors occur accessing the DB.
    • refresh

      void refresh()
      Causes a full refresh of the project cache.
    • getAllProjectCategories

      Collection<ProjectCategory> getAllProjectCategories() throws DataAccessException
      Returns all ProjectCategories, ordered by name.
      Returns:
      all ProjectCategories, ordered by name.
      Throws:
      DataAccessException - If any errors occur accessing the DB.
    • getProjectCategory

      ProjectCategory getProjectCategory(Long id) throws DataAccessException
      Returns a single project category by id.
      Parameters:
      id - ProjectCategory id.
      Returns:
      the ProjectCategory for the provided id if it was found or else null
      Throws:
      DataAccessException - If any errors occur accessing the DB.
    • getProjectCategoryObject

      @Nullable ProjectCategory getProjectCategoryObject(Long id) throws DataAccessException
      Returns a single project category by id.

      Legacy synonym for getProjectCategory(Long)

      Parameters:
      id - Project Category ID.
      Returns:
      The project category
      Throws:
      DataAccessException
    • getProjectCategoryObjectByName

      ProjectCategory getProjectCategoryObjectByName(String projectCategoryName)
      Find a project category by name.
      Parameters:
      projectCategoryName - Name of the Project Category
      Returns:
      The ProjectCategory or null if none found
    • getProjectCategoryObjectByNameIgnoreCase

      ProjectCategory getProjectCategoryObjectByNameIgnoreCase(String projectCategoryName)
      Find a project category by name ignoring the case of the category name.
      Parameters:
      projectCategoryName - Name of the Project Category
      Returns:
      The ProjectCategory or null if none found
    • updateProjectCategory

      void updateProjectCategory(ProjectCategory projectCategory) throws DataAccessException
      Persist an updated project category.
      Parameters:
      projectCategory - project category.
      Throws:
      DataAccessException - If any errors occur accessing the DB.
    • getProjectsFromProjectCategory

      Collection<Project> getProjectsFromProjectCategory(ProjectCategory projectCategory) throws DataAccessException
      Returns a list of projects in a particular category.
      Parameters:
      projectCategory - project category.
      Returns:
      A collection of projects sorted by name.
      Throws:
      DataAccessException - If any errors occur accessing the DB.
    • getProjectObjectsFromProjectCategory

      Collection<Project> getProjectObjectsFromProjectCategory(Long projectCategoryId) throws DataAccessException
      Returns a list of projects in a particular category.
      Parameters:
      projectCategoryId - project category id.
      Returns:
      A collection of project Projects sorted by name.
      Throws:
      DataAccessException - If any errors occur accessing the DB.
      Since:
      v4.0
    • getProjectObjectsWithNoCategory

      Collection<Project> getProjectObjectsWithNoCategory() throws DataAccessException
      Returns a list of projects without project category, sorted by project name
      Returns:
      A collection of Projects sorted by name
      Throws:
      DataAccessException - If any errors occur accessing the DB.
      Since:
      v4.0
    • getProjectCategoryForProject

      @Nullable ProjectCategory getProjectCategoryForProject(Project project) throws DataAccessException
      Returns a project's category.
      Parameters:
      project - project
      Returns:
      A ProjectCategory or null if this project has no category.
      Throws:
      DataAccessException - If any errors occur accessing the DB.
      Since:
      4.4
    • setProjectCategory

      void setProjectCategory(Project project, ProjectCategory category) throws DataAccessException
      Sets a project's category.
      Parameters:
      project - project
      category - category
      Throws:
      DataAccessException - If any errors occur accessing the DB.
      IllegalArgumentException - if the project provided is null
    • createProjectCategory

      ProjectCategory createProjectCategory(String name, String description)
      Creates a new ProjectCategory with the given name and description.
      Parameters:
      name - the Name
      description - the Description.
      Returns:
      the new ProjectCategory.
    • removeProjectCategory

      void removeProjectCategory(Long id)
      Removes the given ProjectCategory.
      Parameters:
      id - the ProjectCategory to remove.
    • isProjectCategoryUnique

      boolean isProjectCategoryUnique(String projectCategory)
      Checks if a project category with a given name exists.
      Parameters:
      projectCategory - the name of the project category
      Returns:
      if a category with given name exists
    • getDefaultAssignee

      ApplicationUser getDefaultAssignee(Project project, ProjectComponent component)
      Deprecated.
      Use getDefaultAssignee(Project, java.util.Collection) which allows for multiple components. Since v4.4.
      Gets the default assignee for a project and/or component depending on if a component was specified.
      Parameters:
      project - project
      component - component
      Returns:
      the default assignee for this project/component
      Throws:
      DefaultAssigneeException - If the default assignee does NOT have ASSIGNABLE permission OR Unassigned issues are turned off.
    • getDefaultAssignee

      ApplicationUser getDefaultAssignee(Project project, Collection<ProjectComponent> components) throws DefaultAssigneeException
      Gets the default assignee for an issue given its project and list of Components.

      If the default assignee configuration is invalid, then a DefaultAssigneeException is thrown. This could be because the default is unassigned, and unassigned issues are not allowed, or because the default user does not have permission to be assigned to issues in this project.

      Parameters:
      project - project
      components - The components
      Returns:
      the default assignee for this project/components
      Throws:
      DefaultAssigneeException - If the default assignee is invalid (eg user does not have assign permission) .
    • getProjectsLeadBy

      List<Project> getProjectsLeadBy(ApplicationUser leadUser)
      Returns all the projects that leadUser is the project lead for ordered by the name of the Project.
      Parameters:
      leadUser - Project Lead
      Returns:
      A collection of projects
    • convertToProjectObjects

      List<Project> convertToProjectObjects(Collection<Long> projectIds)
      Converts a collection of projectIds to a list of projects.

      Will return null if incoming collection is null.

      The returned list of Project Objects will have the same sort order as the incoming collection of IDs.

      Parameters:
      projectIds - a Collection of Project IDs
      Returns:
      List of Projects, or null if input is null
    • convertToOptionalProjectObjects

      List<Pair<Long,Optional<Project>>> convertToOptionalProjectObjects(Collection<Long> projectIds)
      Converts a collection of projectIds to a list of pairs (project id, optional project).

      Will return empty list if incoming collection is null.

      The returned list of Project Objects will have the same sort order as the incoming collection of IDs.

      Parameters:
      projectIds - a Collection of Project IDs
      Returns:
      List of Pairs (Project ID, Optional Project), or empty list if input is null
    • getCurrentCounterForProject

      long getCurrentCounterForProject(Long id)
      Returns the curremt issue counter for the given project. This value is for information only; you should not use it to predict or create issue ids, because it may change concurrently as new issues are created.
      Parameters:
      id - the ID of the project for which to retrieve the counter
      Returns:
      the current project counter (the id of the next issue to be created).
    • setCurrentCounterForProject

      void setCurrentCounterForProject(Project project, long counter)
      Set the project counter. Warning Setting the project counter is not needed in the normal operations of JIRA, this method exist for functionality like project-import etc.
      Parameters:
      project - the project for which to set the counter (required)
      counter - the counter value to set