Interface CustomField

All Superinterfaces:
Comparable, ConfigurableField<Object>, DefaultValueField<Object>, Field, HideableField, NavigableField, OrderableField<Object>, RenderableField, RequirableField, RestAwareField, RestFieldOperations, SearchableField
All Known Implementing Classes:
ImmutableCustomField, MockCustomField

See Also:
  • Field Details

  • Method Details

    • isInScope

      boolean isInScope(Project project, List<String> issueTypeIds)
      Determines if this custom field is within the scope of the given project, and list of Issue Types.
      Parameters:
      project - The project.
      issueTypeIds - A list of IssueType ids.
      Returns:
      true if this custom field is within the given scope.
    • isInScope

      boolean isInScope(long projectId, String issueTypeId)
      Determines if this custom field is within the scope of the given project, and Issue Type.
      Parameters:
      projectId - The project.
      issueTypeId - The issueTypeId
      Returns:
      true if this custom field is within the given scope.
      See Also:
    • isInScopeForSearch

      boolean isInScopeForSearch(@Nullable Project project, @Nullable List<String> issueTypeIds)
      Determines if this custom field is within the scope of the given project, and list of Issue Types.

      If the project is null, then it is treated as any project. If the issueTypeIds list is null or an empty list, then it is treated as any issue type.

      If the passed project is any project, this method will search in all the FieldConfigScheme of this custom field, ignoring the projects that they apply to (since the given project is any) and looking for at least one of them that applies to at least one of the given issue type ids.

      If the passed list of issue types is any issue type, this method will search for at least one FieldConfigScheme that applies to the given project, ignoring the issue types that it applies to (since the given issue type ids are any).

      If both the project and issue types are any, the question being asked is "is this custom field in the scope of any project and any issue type?", which will always be true.

    • isInScope

      boolean isInScope(SearchContext searchContext)
      Determines whether this custom field is in scope.
      Parameters:
      searchContext - search context
      Returns:
      true if this field is in scope
    • getGenericValue

      @Deprecated org.ofbiz.core.entity.GenericValue getGenericValue()
      Deprecated.
      Use Field.getName(), getDescription(), etc. Since v3.0.
      Returns a generic value that represents this custom field
      Returns:
      generic value of this custom field
    • compare

      int compare(Issue issue1, Issue issue2) throws IllegalArgumentException
      This method compares the values of this custom field in two given issues.

      Returns a negative integer, zero, or a positive integer as the value of first issue is less than, equal to, or greater than the value of the second issue.

      If either of given issues is null a IllegalArgumentException is thrown.

      Parameters:
      issue1 - issue to compare
      issue2 - issue to compare
      Returns:
      a negative integer, zero, or a positive integer as the value of first issue is less than, equal to, or greater than the value of the second issue
      Throws:
      IllegalArgumentException - if any of given issues is null
    • getCustomFieldValues

      CustomFieldParams getCustomFieldValues(Map customFieldValuesHolder)
      Get the custom field string values that are relevant to this particular custom field
      Parameters:
      customFieldValuesHolder - containing all params
      Returns:
      a CustomFieldParams of String objects
    • getValue

      Object getValue(Issue issue)
      Retrieves and returns the Object representing the this CustomField value for the given issue. See CustomFieldType.getValueFromIssue(CustomField, Issue). This is only used to communicate with the 'view' JSP. Multiselects will return a list, dates a date, etc.
      Parameters:
      issue - issue to retrieve the value from
      Returns:
      Object representing the this CustomField value for the given issue
      See Also:
    • remove

      @Deprecated Set<Long> remove()
      Deprecated.
      Removes this custom field and returns a set of issue IDs of all issues that are affected by removal of this custom field.
      Returns:
      a set of issue IDs of affected issues
      Throws:
      DataAccessException - if removal of generic value fails
    • getOptions

      @Deprecated Options getOptions(String key, JiraContextNode jiraContextNode)
      Deprecated.
      As of 9.17.0, please use getOptions(JiraContextNode) instead
      Returns options for this custom field if it is of MultipleCustomFieldType type. Otherwise, returns null.

      As this is just used by the view layer, it can be a list of objects

      Parameters:
      key - not used
      jiraContextNode - Jira's context node - used to retrieve the relevant config
      Returns:
      options for this custom field if it is of MultipleCustomFieldType type, null otherwise
    • getOptions

      default Options getOptions(JiraContextNode jiraContextNode)
      Returns options for this custom field if it is of MultipleCustomFieldType type. Otherwise, returns null.

      As this is just used by the view layer, it can be a list of objects

      Parameters:
      jiraContextNode - Jira's context node - used to retrieve the relevant config
      Returns:
      options for this custom field if it is of MultipleCustomFieldType type, null otherwise since v9.17.0
    • getDescription

      String getDescription()
      Returns the 1i8n'ed description of this custom field. To render views for the custom field description, prefer getDescriptionProperty().
      Returns:
      the description of this custom field
    • getUntranslatedDescription

      String getUntranslatedDescription()
      Returns the description of this custom field by reading ENTITY_DESCRIPTION of the underlying generic value.
      Returns:
      the description of this custom field
    • getFieldName

      String getFieldName()
      Returns the title of this custom field.
      Returns:
      the title of this custom field
    • getUntranslatedName

      String getUntranslatedName()
      Returns the name of this custom field by reading ENTITY_NAME of the underlying generic value.
      Returns:
      the name of this custom field
    • getDescriptionProperty

      @Nonnull RenderableProperty getDescriptionProperty()
      Returns a RenderableProperty for rendering this custom field's description.
      Returns:
      a read-only RenderableProperty
      Since:
      v5.0.7
    • getUntranslatedDescriptionProperty

      @Nonnull RenderableProperty getUntranslatedDescriptionProperty()
      Returns a RenderableProperty for rendering this custom field's untranslated description, for admin.
      Returns:
      a read-only RenderableProperty
      Since:
      v5.0.7
    • getCustomFieldSearcher

      CustomFieldSearcher getCustomFieldSearcher()
      Retrieves the CustomFieldSearcher for this custom field. The searcher, if found is initialized with this custom field before it is returned.
      Returns:
      found custom field searcher or null, if none found
    • isEditable

      boolean isEditable()
      Returns true if this custom field can be edited, false otherwise.
      Returns:
      true if this custom field can be edited, false otherwise
    • getIdAsLong

      Long getIdAsLong()
      Returns ID of this custom field.
      Returns:
      ID of this custom field
    • getLastValueUpdate

      default Timestamp getLastValueUpdate()
      Returns the latest date of either: - creation date of an issue with a non default value of the custom field - issue update date when value of the custom field has been changed
      Returns:
      last update of the custom field
    • getIssuesWithValue

      default Long getIssuesWithValue()
      Returns number of issues containing at least one non empty value for the custom field.
      Returns:
      number of issues with the non empty custom field
    • getConfigurationSchemes

      @Nonnull List<FieldConfigScheme> getConfigurationSchemes()
      Returns a list of configuration schemes.
      Returns:
      a list of FieldConfigScheme objects.
    • getOptions

      @Deprecated Options getOptions(String key, FieldConfig config, JiraContextNode contextNode)
      Deprecated.
      As of 9.17.0, please use getOptions(FieldConfig) instead
      Returns options for this custom field if it is of MultipleCustomFieldType type. Otherwise returns null.

      As this is just used by the view layer, it can be a list of objects

      Parameters:
      key - not used
      config - relevant field config
      contextNode - JIRA context node
      Returns:
      options for this custom field if it is of MultipleCustomFieldType type, null otherwise
    • getOptions

      default Options getOptions(FieldConfig config)
      Returns options for this custom field if it is of MultipleCustomFieldType type. Null otherwise.

      As this is just used by the view layer, it can be a list of objects

      Parameters:
      config - relevant field config
      Returns:
      options for this custom field if it is of MultipleCustomFieldType type, null otherwise
    • getRelevantConfig

      FieldConfig getRelevantConfig(Issue issue)
      Returns a relevant FieldConfig for the given issue. If the field has a config for the issue then one will be returned, otherwise null is returned.

      For example, if we have 2 projects: project A and project B, and a custom field is configured to be only applicable to project A, calling getRelevantConfig with an issue from project A should return the config (i.e. not null). Calling this method with an issue from project B should return null.

      Parameters:
      issue - issue whose project and issue type will be used to check if the field has a config
      Returns:
      an instance of FieldConfig representing the configuration of the field for issue's project/issue type. If the field does not have a config for issue's project/issue type, null is returned.
      See Also:
    • validateFromActionParams

      void validateFromActionParams(Map actionParameters, ErrorCollection errorCollection, FieldConfig config)
      Validates relevant parameters on custom field type of this custom field. Any errors found are added to the given errorCollection. See CustomFieldType.validateFromParams(CustomFieldParams, ErrorCollection, FieldConfig)
      Parameters:
      actionParameters - action parameters
      errorCollection - error collection to add errors to
      config - field config
    • getAssociatedProjectObjects

      @Nonnull List<Project> getAssociatedProjectObjects()
      Returns a list of Projects directly associated with this CustomField.

      This method can return an empty result when the CustomField is associated with all Projects. Please use isAllProjects() prior to this method to detect this."

      Specified by:
      getAssociatedProjectObjects in interface ConfigurableField<Object>
      Returns:
      a list of Projects directly associated with this CustomField.
    • getAssociatedIssueTypes

      @Nonnull List<IssueType> getAssociatedIssueTypes()
      Returns a list of IssueTypes directly associated with this CustomField.

      In case when this CustomField isAllIssueTypes() it will be associated with all IssueTypes but this method can still return empty result.

      Returns:
      a list of IssueTypes directly associated with this CustomField.
    • getAssociatedIssueTypeObjects

      @Deprecated List<IssueType> getAssociatedIssueTypeObjects()
      Deprecated.
      As of 7.2, please use getAssociatedIssueTypes()
      See Also:
    • isGlobal

      boolean isGlobal()
      Returns true if this custom field applies for all projects and all issue types.
      Returns:
      true if it is in all projects and all issue types, false otherwise.
    • isAllProjects

      boolean isAllProjects()
      Checks whether this custom field applies for all projects. It returns true if it applies for all projects for any field configuration scheme, false otherwise.
      Returns:
      true if it applies for all projects for any field configuration scheme, false otherwise.
    • isAllIssueTypes

      boolean isAllIssueTypes()
      Returns true if it applies for all issue types, false otherwise.
      Returns:
      true if it applies for all issue types, false otherwise.
    • isEnabled

      boolean isEnabled()
      Returns true if any configuration scheme returned by getConfigurationSchemes() is enabled.
      Returns:
      true if any configuration scheme is enabled, false otherwise
    • getCustomFieldType

      CustomFieldType getCustomFieldType()
      Looks up the CustomFieldType. It can return null if the custom field type cannot be found in the CustomFieldManager.
      Returns:
      custom field type
    • isRelevantForIssueContext

      boolean isRelevantForIssueContext(IssueContext issueContext)
      Returns true if the custom field has a config for the Project and Issue Type of the given IssueContext.

      This is equivalent to calling

        getRelevantConfig(issueContext) != null
      but in general can run faster because it does not have to resolve the actual FieldConfig.
      Parameters:
      issueContext - IssueContext whose project and issue type will be used to check if the field has a config
      Returns:
      an instance of FieldConfig representing the configuration of the field for issue's project/issue type. If the field does not have a config for issue's project/issue type, null is returned.
      See Also:
    • getRelevantConfig

      FieldConfig getRelevantConfig(IssueContext issueContext)
      Returns the relevant field config of this custom field for the give issue context
      Specified by:
      getRelevantConfig in interface ConfigurableField<Object>
      Parameters:
      issueContext - issue context to find the relevant field config for
      Returns:
      the relevant field config of this custom field for the give issue context
      See Also:
    • getReleventConfig

      FieldConfig getReleventConfig(SearchContext searchContext)
      The FieldConfig that is relevent to all issue contexts in the search context Checks that all configs within search context are the same - i.e. all null or all the same config.

      Returns null if any two configs are different.

      Note: null config is not equal to non-null config. Previously, a non-null config was returned even if the first config(s) was null.

      Parameters:
      searchContext - search context
      Returns:
      null if any two configs are different
    • getClauseNames

      ClauseNames getClauseNames()
      Return the JQL clause names that this custom field should be recognized by.
      Returns:
      the clause names this custom field should be recognized by.
    • getPropertySet

      com.opensymphony.module.propertyset.PropertySet getPropertySet()