Interface FieldLayoutManager

All Known Implementing Classes:
AbstractFieldLayoutManager, DefaultFieldLayoutManager, MockFieldLayoutManager

@PublicApi public interface FieldLayoutManager
The FieldLayoutManager is responsible for managing field configurations and field configuration schemes.
  • Field Details

    • TYPE_DEFAULT

      static final String TYPE_DEFAULT
      JIRA must have a default field layout. This is used identify the default layout.
      See Also:
  • Method Details

    • createFieldLayoutScheme

      FieldLayoutScheme createFieldLayoutScheme(FieldLayoutScheme fieldLayoutScheme)
      Persists a new field Layout scheme (i.e Field Configuration Scheme).
      Parameters:
      fieldLayoutScheme - The FieldLayoutScheme to persist.
      Returns:
      The stored FieldLayoutScheme object
      Throws:
      DataAccessException - If there is a Data Layer error.
      UnsupportedOperationException - If this is executed against standard edition
    • createFieldLayoutScheme

      FieldLayoutScheme createFieldLayoutScheme(@Nonnull String name, @Nullable String description)
      Persists a new field Layout scheme (i.e Field Configuration Scheme).
    • copyFieldLayoutScheme

      FieldLayoutScheme copyFieldLayoutScheme(@Nonnull FieldLayoutScheme scheme, @Nonnull String name, @Nullable String description)
      Copies an existing field layout to a new one.
    • getFieldConfigurationScheme

      FieldConfigurationScheme getFieldConfigurationScheme(Long schemeId)
      Retrieves a FieldConfigurationScheme by id
      Parameters:
      schemeId - FieldConfigurationScheme ID
      Returns:
      A FieldConfigurationScheme instance
      Throws:
      DataAccessException - If there is a DB exception.
      UnsupportedOperationException - If this is executed against standard edition
    • getMutableFieldLayoutScheme

      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:
      A FieldLayoutScheme instance
      Throws:
      DataAccessException - if an error occurs in the DB layer
      UnsupportedOperationException - If this is executed against standard edition
    • fieldConfigurationSchemeExists

      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.
      Throws:
      DataAccessException - If there is a DB error.
      UnsupportedOperationException - If this is executed against standard edition
    • getEditableFieldLayouts

      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)
      Returns:
      A list of EditableFieldLayout and EditableDefaultFieldLayout
    • getFieldLayoutSchemes

      List<FieldLayoutScheme> getFieldLayoutSchemes()
      Retries Field Configuration Schemes. These are used to link field configurations to projects.
      Returns:
      A list of FieldLayoutSchemes.
      Throws:
      DataAccessException - If there is a Data Layer error.
      UnsupportedOperationException - If this is executed against standard edition
    • updateFieldLayoutScheme

      void updateFieldLayoutScheme(FieldLayoutScheme fieldLayoutScheme)
      Persists the FieldLayoutScheme supplied.
      Parameters:
      fieldLayoutScheme - The FieldLayoutScheme
      Throws:
      DataAccessException - If there is a Data Layer error.
      UnsupportedOperationException - If this is executed against standard edition
    • deleteFieldLayoutScheme

      void deleteFieldLayoutScheme(FieldLayoutScheme fieldLayoutScheme)
      Removes the FieldLayoutScheme supplied.
      Parameters:
      fieldLayoutScheme - The FieldLayoutScheme
      Throws:
      DataAccessException - If there is a Data Layer error.
      UnsupportedOperationException - If this is executed against standard edition
    • getFieldConfigurationScheme

      FieldConfigurationScheme getFieldConfigurationScheme(Project project)
      Retrieves the Field Configuration Scheme associated with the supplied project.
      Parameters:
      project - A project
      Returns:
      A FieldConfigurationScheme or null if none exists.
    • getFieldConfigurationSchemeForProject

      FieldConfigurationScheme getFieldConfigurationSchemeForProject(@Nonnull Long projectId)
      Retrieves the Field Configuration Scheme associated with the supplied project.
      Parameters:
      projectId - The project ID
      Returns:
      A FieldConfigurationScheme or null if none exists.
      Since:
      6.4
    • getUniqueFieldLayouts

      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.
      Throws:
      DataAccessException - If there is a Data Layer error.
    • getUniqueFieldLayouts

      @Nonnull Set<FieldLayout> getUniqueFieldLayouts(@Nonnull Collection<Project> projects, @Nonnull 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.
      Since:
      v6.4
    • addSchemeAssociation

      void addSchemeAssociation(org.ofbiz.core.entity.GenericValue project, Long fieldLayoutSchemeId)
      Associates a FieldLayoutScheme to the project supplied.
      Parameters:
      project - A project GenericValue
      fieldLayoutSchemeId - ID of the FieldLayoutScheme
      Throws:
      DataAccessException - If there is an error in the DB layer
      UnsupportedOperationException - If this is executed against standard edition
      IllegalArgumentException - If the project supplied is null.
    • removeSchemeAssociation

      void removeSchemeAssociation(org.ofbiz.core.entity.GenericValue project, Long fieldLayoutSchemeId)
      Removes an association between a particular project and field configuration scheme.
      Parameters:
      project - A project GenericValue
      fieldLayoutSchemeId - The fieldLayoutScheme ID
      Throws:
      UnsupportedOperationException - If this is executed against standard edition
      DataAccessException - If there is an error in the DB layer.
    • addSchemeAssociation

      void addSchemeAssociation(Project project, Long fieldLayoutSchemeId)
      Associates a FieldLayoutScheme to the project supplied.
      Parameters:
      project - The project
      fieldLayoutSchemeId - ID of the FieldLayoutScheme
      Throws:
      IllegalArgumentException - If the project supplied is null.
    • removeSchemeAssociation

      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
    • getFieldLayout

      FieldLayout getFieldLayout()
      Used to retrieve FieldLayout information when rendering a screen.
      Returns:
      the default FieldLayout
      Throws:
      DataAccessException - If there is a Data Layer error.
    • getFieldLayout

      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:
      The FieldLayout
      Throws:
      UnsupportedOperationException - If this is executed against standard edition
    • getFieldLayout

      FieldLayout getFieldLayout(org.ofbiz.core.entity.GenericValue issue)
      Deprecated.
      Returns the fieldLayout for an issue.
      Parameters:
      issue - An issue GenericValue
      Returns:
      A FieldLayout
      Throws:
      DataAccessException - If there is a Data Layer error.
    • getFieldLayout

      FieldLayout getFieldLayout(Issue issue)
      Returns the fieldLayout for an issue.
      Parameters:
      issue - An Issue
      Returns:
      A FieldLayout
    • getFieldLayout

      FieldLayout getFieldLayout(Project project, String issueTypeId)
      Parameters:
      project - A project
      issueTypeId - The IssueType id of the issue.
      Returns:
      A FieldLayout
      Throws:
      DataAccessException - If there is a Data Layer error.
      See Also:
    • getFieldLayout

      FieldLayout getFieldLayout(@Nonnull Long projectId, @Nonnull 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.
    • getEditableDefaultFieldLayout

      EditableDefaultFieldLayout getEditableDefaultFieldLayout()
      Returns the default EditableDefaultFieldLayout.
      Returns:
      the default EditableDefaultFieldLayout.
      Throws:
      DataAccessException - If there is a Data Layer error.
    • storeEditableDefaultFieldLayout

      void storeEditableDefaultFieldLayout(EditableDefaultFieldLayout editableDefaultFieldLayout)
      Persist the given default EditableDefaultFieldLayout
      Parameters:
      editableDefaultFieldLayout - The EditableDefaultFieldLayout.
      Throws:
      DataAccessException - If there is a Data Layer error.
    • storeEditableFieldLayout

      void storeEditableFieldLayout(EditableFieldLayout editableFieldLayout)
      Persists the EditableFieldLayout provided.
      Parameters:
      editableFieldLayout - the EditableFieldLayout.
      Throws:
      DataAccessException - If there is a Data Layer error.
    • storeAndReturnEditableFieldLayout

      EditableFieldLayout storeAndReturnEditableFieldLayout(EditableFieldLayout editableFieldLayout)
      Persists the EditableFieldLayout provided and returns a new instance as stored in the database.
      Parameters:
      editableFieldLayout - the EditableFieldLayout.
      Returns:
      the layout as stored in the database.
      Throws:
      DataAccessException - If there is a Data Layer error.
    • restoreDefaultFieldLayout

      void restoreDefaultFieldLayout()
      This method can be used to rollback any changes to the default field configuration.
      Throws:
      DataAccessException - If there is a Data Layer error.
    • hasDefaultFieldLayout

      boolean hasDefaultFieldLayout()
      Checks to see if a FieldLayout entity with type TYPE_DEFAULT exists
      Returns:
      True if a default FieldLayout exists, false otherwise.
      Throws:
      DataAccessException - If there is a Data Layer error.
    • getProjects

      Collection<org.ofbiz.core.entity.GenericValue> getProjects(FieldConfigurationScheme fieldConfigurationScheme)
      Deprecated.
      Returns all projects that use the given FieldConfigurationScheme.
      Parameters:
      fieldConfigurationScheme - the FieldConfigurationScheme
      Returns:
      A list of projects that use the given FieldConfigurationScheme.
    • getProjectsUsing

      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.
    • getProjects

      Collection<org.ofbiz.core.entity.GenericValue> getProjects(FieldLayoutScheme fieldLayoutScheme)
      Deprecated.
      Use getProjectsUsing(FieldLayoutScheme) instead. Since v6.4.
      Returns all associated projects for the FieldLayoutScheme supplied.
      Parameters:
      fieldLayoutScheme - the FieldLayoutScheme
      Returns:
      A list of project GenericValues
      Throws:
      DataAccessException - If there is a Data Layer error.
      UnsupportedOperationException - If this is executed against standard edition
    • getProjectsUsing

      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.
    • refresh

      void refresh()
      Clears all local caches.
    • getEditableFieldLayout

      EditableFieldLayout getEditableFieldLayout(Long id)
      Returns an EditableFieldLayout for the id supplied.
      Parameters:
      id - If the id is NULL, the default layout is returned.
      Returns:
      An EditableFieldLayout
      Throws:
      UnsupportedOperationException - If this is executed against standard edition
    • deleteFieldLayout

      void deleteFieldLayout(FieldLayout fieldLayout)
      Deletes a custom FieldLayout
      Parameters:
      fieldLayout - The FieldLayout
      Throws:
      UnsupportedOperationException - If this is executed against standard edition
    • getFieldLayoutSchemeEntities

      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:
      A collection of FieldLayoutSchemeEntitys.
      Throws:
      UnsupportedOperationException - If this is executed against standard edition
    • createFieldLayoutSchemeEntity

      void createFieldLayoutSchemeEntity(FieldLayoutSchemeEntity fieldLayoutSchemeEntity)
      Persists a new FieldLayoutSchemeEntity for a particular FieldLayoutScheme. The appropriate scheme is retrieved using FieldLayoutSchemeEntity.getFieldLayoutScheme()
      Parameters:
      fieldLayoutSchemeEntity - The FieldLayoutSchemeEntity
      Throws:
      UnsupportedOperationException - If this is executed against standard edition
    • createFieldLayoutSchemeEntity

      FieldLayoutSchemeEntity createFieldLayoutSchemeEntity(FieldLayoutScheme fieldLayoutScheme, String issueTypeId, Long fieldConfigurationId)
      Persists a new FieldLayoutSchemeEntity for a particular FieldLayoutScheme. The appropriate scheme is retrieved using FieldLayoutSchemeEntity.getFieldLayoutScheme()
      Parameters:
      fieldLayoutScheme - the FieldLayoutScheme
      issueTypeId - the Issue Type
      fieldConfigurationId - the FieldConfig
      Throws:
      UnsupportedOperationException - If this is executed against standard edition
    • updateFieldLayoutSchemeEntity

      void updateFieldLayoutSchemeEntity(FieldLayoutSchemeEntity fieldLayoutSchemeEntity)
      Parameters:
      fieldLayoutSchemeEntity - The FieldLayoutSchemeEntity
      Throws:
      UnsupportedOperationException - If this is executed against standard edition
    • removeFieldLayoutSchemeEntity

      void removeFieldLayoutSchemeEntity(FieldLayoutSchemeEntity fieldLayoutSchemeEntity)
      Parameters:
      fieldLayoutSchemeEntity - The FieldLayoutSchemeEntity
      Throws:
      UnsupportedOperationException - If this is executed against standard edition
    • removeFieldLayoutScheme

      void removeFieldLayoutScheme(FieldLayoutScheme fieldLayoutScheme)
      Parameters:
      fieldLayoutScheme - The FieldLayoutScheme
      Throws:
      UnsupportedOperationException - If this is executed against standard edition
    • getFieldConfigurationSchemes

      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:
      A collection of FieldConfigurationSchemes
      Throws:
      UnsupportedOperationException - If this is executed against standard edition
    • getRelatedProjects

      Collection<org.ofbiz.core.entity.GenericValue> getRelatedProjects(FieldLayout fieldLayout)
      Deprecated.
      Use getProjectsUsing(FieldLayout) instead. Since v6.4.
      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.
    • getProjectsUsing

      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.
    • isFieldLayoutSchemesVisiblyEquivalent

      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
      Throws:
      DataAccessException - If there is a Data Layer error.
    • isFieldLayoutsVisiblyEquivalent

      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
    • updateFieldLayoutItemAttributesForCustomField

      void updateFieldLayoutItemAttributesForCustomField(@Nonnull CustomField customField, @Nonnull String description, boolean isRequired, boolean isHidden)
      Update the description, isHidden and isRequired columns of all the fieldlayoutitem rows associated with this custom field.
      Parameters:
      customField - a CustomField which owns the affected fieldlayoutitems
      description - a String containing the new description
      isRequired - a boolean containing the new value
      isHidden - a boolean containing the new value.