public class

DefaultFieldLayoutManager

extends AbstractFieldLayoutManager
implements FieldLayoutManager
java.lang.Object
   ↳ com.atlassian.jira.issue.fields.layout.field.AbstractFieldLayoutManager
     ↳ com.atlassian.jira.issue.fields.layout.field.DefaultFieldLayoutManager

Summary

[Expand]
Inherited Constants
From class com.atlassian.jira.issue.fields.layout.field.AbstractFieldLayoutManager
From interface com.atlassian.jira.issue.fields.layout.field.FieldLayoutManager
[Expand]
Inherited Fields
From class com.atlassian.jira.issue.fields.layout.field.AbstractFieldLayoutManager
Public Constructors
DefaultFieldLayoutManager(FieldManager fieldManager, OfBizDelegator ofBizDelegator, ConstantsManager constantsManager, SubTaskManager subTaskManager, ProjectManager projectManager, I18nHelper.BeanFactory i18nFactory, NodeAssociationStore nodeAssociationStore, CacheManager cacheManager, EventPublisher eventPublisher, ApplicationProperties applicationProperties)
Public Methods
void addSchemeAssociation(Project project, Long fieldLayoutSchemeId)
Associates a FieldLayoutScheme to the project supplied.
void addSchemeAssociation(GenericValue project, Long fieldLayoutSchemeId)
Associates a FieldLayoutScheme to the project supplied.
FieldLayoutScheme copyFieldLayoutScheme(FieldLayoutScheme scheme, String name, String description)
Copies an existing field layout to a new one.
FieldLayoutScheme createFieldLayoutScheme(String name, String description)
Persists a new field Layout scheme (i.e Field Configuration Scheme).
FieldLayoutScheme createFieldLayoutScheme(FieldLayoutScheme fieldLayoutScheme)
Persists a new field Layout scheme (i.e Field Configuration Scheme).
void createFieldLayoutSchemeEntity(FieldLayoutSchemeEntity fieldLayoutSchemeEntity)
Persists a new FieldLayoutSchemeEntity for a particular FieldLayoutScheme.
FieldLayoutSchemeEntity createFieldLayoutSchemeEntity(FieldLayoutScheme fieldLayoutScheme, String issueTypeId, Long fieldLayoutId)
Persists a new FieldLayoutSchemeEntity for a particular FieldLayoutScheme.
void deleteFieldLayout(FieldLayout fieldLayout)
Deletes a custom FieldLayout
void deleteFieldLayoutScheme(FieldLayoutScheme fieldLayoutScheme)
Removes the FieldLayoutScheme supplied.
boolean fieldConfigurationSchemeExists(String schemeName)
Checks if a FieldConfigurationScheme with the given name exists.
EditableFieldLayout getEditableFieldLayout(Long id)
Returns an EditableFieldLayout for the id supplied.
List<EditableFieldLayout> getEditableFieldLayouts()
Retrieves editable (see EditableFieldLayout versions of the field layouts.
FieldConfigurationScheme getFieldConfigurationScheme(Project project)
Retrieves the Field Configuration Scheme associated with the supplied project.
FieldConfigurationScheme getFieldConfigurationScheme(Long schemeId)
Retrieves a FieldConfigurationScheme by id
FieldConfigurationScheme getFieldConfigurationSchemeForProject(Long projectId)
Retrieves the Field Configuration Scheme associated with the supplied project.
Collection<FieldConfigurationScheme> getFieldConfigurationSchemes(FieldLayout fieldLayout)
Returns a collection of FieldConfigurationSchemes that include the given FieldLayout.
FieldLayout getFieldLayout(Project project, String issueTypeId)
FieldLayout getFieldLayout(GenericValue issue)
Returns the fieldLayout for an issue.
FieldLayout getFieldLayout(Long id)
Used to retrieve FieldLayout information when rendering a screen given the id of the field layout.
FieldLayout getFieldLayout(Long projectId, String issueTypeId)
Find the FieldLayout for the given Project and IssueType.
Collection<FieldLayoutSchemeEntity> getFieldLayoutSchemeEntities(FieldLayoutScheme fieldLayoutScheme)
Returns a collection of FieldLayoutSchemeEntitys.
List<FieldLayoutScheme> getFieldLayoutSchemes()
Retries Field Configuration Schemes.
FieldLayoutScheme getMutableFieldLayoutScheme(Long schemeId)
Retrieves a mutable FieldLayoutScheme by id.
Collection<GenericValue> getProjects(FieldConfigurationScheme fieldConfigurationScheme)
Returns all projects that use the given FieldConfigurationScheme.
Collection<GenericValue> getProjects(FieldLayoutScheme fieldLayoutScheme)
Returns all associated projects for the FieldLayoutScheme supplied.
Collection<Project> getProjectsUsing(FieldLayout fieldLayout)
Finds all projects that use the given FieldLayout (via the configured FieldConfigurationScheme).
Collection<Project> getProjectsUsing(FieldConfigurationScheme fieldConfigurationScheme)
Returns all projects that use the given FieldConfigurationScheme.
Collection<Project> getProjectsUsing(FieldLayoutScheme fieldLayoutScheme)
Returns all projects that use the given FieldLayoutScheme.
Collection<GenericValue> getRelatedProjects(FieldLayout fieldLayout)
Finds all projects that use the given FieldLayout (via the configured FieldConfigurationScheme).
Set<FieldLayout> getUniqueFieldLayouts(Project project)
Retrieves all the FieldLayout's for a project.
@Nonnull Set<FieldLayout> getUniqueFieldLayouts(Collection<Project> projects, Collection<String> issueTypeIds)
Retrieves all the FieldLayout's for a collection of projects and issue types.
boolean isFieldLayoutSchemesVisiblyEquivalent(Long fieldConfigurationSchemeId1, Long fieldConfigurationSchemeId2)
Will determine whether or not two FieldLayoutSchemes are "visibly equivalent".
boolean isFieldLayoutsVisiblyEquivalent(Long fieldLayoutId1, Long fieldLayoutId2)
Will determine whether or not two FieldLayouts are "visibly equivalent".
@EventListener void onClearCache(ClearCacheEvent event)
void refresh()
Clears all local caches.
void removeFieldLayoutScheme(FieldLayoutScheme fieldLayoutScheme)
void removeFieldLayoutSchemeEntity(FieldLayoutSchemeEntity fieldLayoutSchemeEntity)
void removeSchemeAssociation(Project project, Long fieldLayoutSchemeId)
Removes an association between a particular project and field configuration scheme.
void removeSchemeAssociation(GenericValue project, Long fieldLayoutSchemeId)
Removes an association between a particular project and field configuration scheme.
void updateFieldLayoutScheme(FieldLayoutScheme fieldLayoutScheme)
Persists the FieldLayoutScheme supplied.
void updateFieldLayoutSchemeEntity(FieldLayoutSchemeEntity fieldLayoutSchemeEntity)
Protected Methods
void clearCaches()
FieldLayoutSchemeEntity createFieldLayoutSchemeEntityNoEvent(FieldLayoutScheme fieldLayoutScheme, String issueTypeId, Long fieldLayoutId)
List<String> getAllRelevantIssueTypeIds()
void removeFieldLayoutSchemeEntityNoEvent(FieldLayoutSchemeEntity fieldLayoutSchemeEntity)
[Expand]
Inherited Methods
From class com.atlassian.jira.issue.fields.layout.field.AbstractFieldLayoutManager
From class java.lang.Object
From interface com.atlassian.jira.issue.fields.layout.field.FieldLayoutManager

Public Constructors

public DefaultFieldLayoutManager (FieldManager fieldManager, OfBizDelegator ofBizDelegator, ConstantsManager constantsManager, SubTaskManager subTaskManager, ProjectManager projectManager, I18nHelper.BeanFactory i18nFactory, NodeAssociationStore nodeAssociationStore, CacheManager cacheManager, EventPublisher eventPublisher, ApplicationProperties applicationProperties)

Public Methods

public void addSchemeAssociation (Project project, Long fieldLayoutSchemeId)

Associates a FieldLayoutScheme to the project supplied.

Parameters
project The project
fieldLayoutSchemeId ID of the FieldLayoutScheme

public void addSchemeAssociation (GenericValue project, Long fieldLayoutSchemeId)

Associates a FieldLayoutScheme to the project supplied.

Parameters
project A project GenericValue
fieldLayoutSchemeId ID of the FieldLayoutScheme

public FieldLayoutScheme copyFieldLayoutScheme (FieldLayoutScheme scheme, String name, String description)

Copies an existing field layout to a new one.

public FieldLayoutScheme createFieldLayoutScheme (String name, String description)

Persists a new field Layout scheme (i.e Field Configuration Scheme).

public FieldLayoutScheme createFieldLayoutScheme (FieldLayoutScheme fieldLayoutScheme)

Persists a new field Layout scheme (i.e Field Configuration Scheme).

Parameters
fieldLayoutScheme The FieldLayoutScheme to persist.
Returns

public void createFieldLayoutSchemeEntity (FieldLayoutSchemeEntity fieldLayoutSchemeEntity)

Persists a new FieldLayoutSchemeEntity for a particular FieldLayoutScheme. The appropriate scheme is retrieved using getFieldLayoutScheme()

Parameters
fieldLayoutSchemeEntity The FieldLayoutSchemeEntity

public FieldLayoutSchemeEntity createFieldLayoutSchemeEntity (FieldLayoutScheme fieldLayoutScheme, String issueTypeId, Long fieldLayoutId)

Persists a new FieldLayoutSchemeEntity for a particular FieldLayoutScheme. The appropriate scheme is retrieved using getFieldLayoutScheme()

Parameters
fieldLayoutScheme the FieldLayoutScheme
issueTypeId the Issue Type
fieldLayoutId the FieldConfig

public void deleteFieldLayout (FieldLayout fieldLayout)

Deletes a custom FieldLayout

Parameters
fieldLayout The FieldLayout

public void deleteFieldLayoutScheme (FieldLayoutScheme fieldLayoutScheme)

Removes the FieldLayoutScheme supplied.

Parameters
fieldLayoutScheme The FieldLayoutScheme

public boolean fieldConfigurationSchemeExists (String schemeName)

Checks if a FieldConfigurationScheme with the given name exists.

Parameters
schemeName The scheme name
Returns
  • true if a FieldConfigurationScheme with the given name exists.

public EditableFieldLayout getEditableFieldLayout (Long id)

Returns an EditableFieldLayout for the id supplied.

Parameters
id If the id is NULL, the default layout is returned.
Returns

public List<EditableFieldLayout> getEditableFieldLayouts ()

Retrieves editable (see EditableFieldLayout versions of the field layouts. Note: For standard edition this simply returns an editable version of the default field layout. (see EditableDefaultFieldLayout)

public FieldConfigurationScheme getFieldConfigurationScheme (Project project)

Retrieves the Field Configuration Scheme associated with the supplied project.

Parameters
project A project
Returns

public FieldConfigurationScheme getFieldConfigurationScheme (Long schemeId)

Retrieves a FieldConfigurationScheme by id

Parameters
schemeId FieldConfigurationScheme ID
Returns

public FieldConfigurationScheme getFieldConfigurationSchemeForProject (Long projectId)

Retrieves the Field Configuration Scheme associated with the supplied project.

Parameters
projectId The project ID
Returns

public Collection<FieldConfigurationScheme> getFieldConfigurationSchemes (FieldLayout fieldLayout)

Returns a collection of FieldConfigurationSchemes that include the given FieldLayout.

This is determined by retrieving all FieldLayoutSchemeEntitys with the FieldLayout and calculating a set of FieldConfigurationSchemes using these entities.

Parameters
fieldLayout The FieldLayout.
Returns

public FieldLayout getFieldLayout (Project project, String issueTypeId)

public FieldLayout getFieldLayout (GenericValue issue)

Returns the fieldLayout for an issue.

Parameters
issue An issue GenericValue
Returns

public FieldLayout getFieldLayout (Long id)

Used to retrieve FieldLayout information when rendering a screen given the id of the field layout. If the ID is null, the default layout is returned.

Parameters
id The FieldLayout ID.
Returns

public FieldLayout getFieldLayout (Long projectId, String issueTypeId)

Find the FieldLayout for the given Project and IssueType.

Parameters
projectId the project
issueTypeId the issue type
Returns
  • the FieldLayout for the given Project and IssueType.

public Collection<FieldLayoutSchemeEntity> getFieldLayoutSchemeEntities (FieldLayoutScheme fieldLayoutScheme)

Returns a collection of FieldLayoutSchemeEntitys. These are used to record mappings from IssueType -> FieldLayout for the FieldLayoutScheme passed in.

Parameters
fieldLayoutScheme The FieldLayoutScheme
Returns

public List<FieldLayoutScheme> getFieldLayoutSchemes ()

Retries Field Configuration Schemes. These are used to link field configurations to projects.

Returns

public FieldLayoutScheme getMutableFieldLayoutScheme (Long schemeId)

Retrieves a mutable FieldLayoutScheme by id.

This returns a new copy of the object from the DB, and so will incur some performance penalty. Please use getFieldConfigurationScheme(Long) for access to a cached immutable scheme object.

Parameters
schemeId the scheme ID
Returns

public Collection<GenericValue> getProjects (FieldConfigurationScheme fieldConfigurationScheme)

Returns all projects that use the given FieldConfigurationScheme.

Parameters
fieldConfigurationScheme the FieldConfigurationScheme
Returns
  • A list of projects that use the given FieldConfigurationScheme.

public Collection<GenericValue> getProjects (FieldLayoutScheme fieldLayoutScheme)

Returns all associated projects for the FieldLayoutScheme supplied.

Parameters
fieldLayoutScheme the FieldLayoutScheme
Returns
  • A list of project GenericValues

public Collection<Project> getProjectsUsing (FieldLayout fieldLayout)

Finds all projects that use the given FieldLayout (via the configured FieldConfigurationScheme).

NOTE: In the case of Standard & Professional, this simply returns ALL projects, as the only fieldlayout is the default field layout.

Parameters
fieldLayout The FieldLayout.
Returns
  • The set of Projects that use the given FieldLayout.

public Collection<Project> getProjectsUsing (FieldConfigurationScheme fieldConfigurationScheme)

Returns all projects that use the given FieldConfigurationScheme.

Parameters
fieldConfigurationScheme the FieldConfigurationScheme
Returns
  • A list of projects that use the given FieldConfigurationScheme.

public Collection<Project> getProjectsUsing (FieldLayoutScheme fieldLayoutScheme)

Returns all projects that use the given FieldLayoutScheme.

Parameters
fieldLayoutScheme the FieldLayoutScheme
Returns
  • A list of projects that use the given FieldLayoutScheme.

public Collection<GenericValue> getRelatedProjects (FieldLayout fieldLayout)

Finds all projects that use the given FieldLayout (via the configured FieldConfigurationScheme).

NOTE: In the case of Standard & Professional, this simply returns ALL projects, as the only fieldlayout is the default field layout.

Parameters
fieldLayout The FieldLayout.
Returns
  • The set of Projects that use the given FieldLayout.

public Set<FieldLayout> getUniqueFieldLayouts (Project project)

Retrieves all the FieldLayout's for a project.

Parameters
project a project
Returns
  • the unique set of FieldLayout's for the provided project, an empty set if there are none.

@Nonnull public Set<FieldLayout> getUniqueFieldLayouts (Collection<Project> projects, Collection<String> issueTypeIds)

Retrieves all the FieldLayout's for a collection of projects and issue types.

Parameters
projects a collection of projects.
issueTypeIds An collection of issue type ids.
Returns
  • the unique set of FieldLayout's for the provided projects, an empty set if there are none.

public boolean isFieldLayoutSchemesVisiblyEquivalent (Long fieldConfigurationSchemeId1, Long fieldConfigurationSchemeId2)

Will determine whether or not two FieldLayoutSchemes are "visibly equivalent".

This can be useful for determining if swapping one field layout scheme for another in a project will have any affect on the visibility of fields in the project's issues. For instance, this will let us know if we need to re-index or not.

Since a scheme is a mapping from issue types to field layouts, two schemes are visibly equivalent if:

  • All issue types map to the same field layouts; or else
  • The field layouts that an issue type is associated with in each scheme are visibly equivalent
It is possible that one scheme may have a mapping for an issue type, but the other does not. In this case, equivalence is compared between the issue type specific one and the default field layout.

Note that equivalence is reflexive - all the associations in scheme1 must have equivalent associations in scheme2, and vice versa.

Parameters
fieldConfigurationSchemeId1 the first scheme; can use null for the system default scheme
fieldConfigurationSchemeId2 the second scheme; can use null for the system default scheme
Returns
  • the result of the equivalence comparison

public boolean isFieldLayoutsVisiblyEquivalent (Long fieldLayoutId1, Long fieldLayoutId2)

Will determine whether or not two FieldLayouts are "visibly equivalent".

This can be useful for determining if swapping one field layout for another in a project will have any affect on the visibility of fields in the project's issues. For instance, this will let us know if we need to re-index or not.

Two field layouts are visibly equivalent if:

  • They contain the same fields, and
  • Each field has the same shown/hidden flag
Note that equivalence is reflexive: layout1 == layout2 implies layout2 == layout1.

Parameters
fieldLayoutId1 the first layout id; null signifies the default field layout in the system
fieldLayoutId2 the second layout id; null signifies the default field layout in the system
Returns
  • the result of the equivalence comparison

@EventListener public void onClearCache (ClearCacheEvent event)

public void refresh ()

Clears all local caches.

public void removeFieldLayoutScheme (FieldLayoutScheme fieldLayoutScheme)

public void removeFieldLayoutSchemeEntity (FieldLayoutSchemeEntity fieldLayoutSchemeEntity)

Parameters
fieldLayoutSchemeEntity The FieldLayoutSchemeEntity

public void removeSchemeAssociation (Project project, Long fieldLayoutSchemeId)

Removes an association between a particular project and field configuration scheme.

Parameters
project The project
fieldLayoutSchemeId The fieldLayoutScheme ID

public void removeSchemeAssociation (GenericValue project, Long fieldLayoutSchemeId)

Removes an association between a particular project and field configuration scheme.

Parameters
project A project GenericValue
fieldLayoutSchemeId The fieldLayoutScheme ID

public void updateFieldLayoutScheme (FieldLayoutScheme fieldLayoutScheme)

Persists the FieldLayoutScheme supplied.

Parameters
fieldLayoutScheme The FieldLayoutScheme

public void updateFieldLayoutSchemeEntity (FieldLayoutSchemeEntity fieldLayoutSchemeEntity)

Parameters
fieldLayoutSchemeEntity The FieldLayoutSchemeEntity

Protected Methods

protected void clearCaches ()

protected FieldLayoutSchemeEntity createFieldLayoutSchemeEntityNoEvent (FieldLayoutScheme fieldLayoutScheme, String issueTypeId, Long fieldLayoutId)

protected List<String> getAllRelevantIssueTypeIds ()

protected void removeFieldLayoutSchemeEntityNoEvent (FieldLayoutSchemeEntity fieldLayoutSchemeEntity)