@PublicSpi public abstract class

AbstractCustomFieldSearchInputTransformer

extends Object
implements SearchInputTransformer
java.lang.Object
   ↳ com.atlassian.jira.issue.customfields.searchers.transformer.AbstractCustomFieldSearchInputTransformer
Known Direct Subclasses
Known Indirect Subclasses

@PublicSpi

This class is designed for plugins to implement.

Clients of @PublicSpi can expect that programs compiled against a given version will remain binary compatible with later versions of the @PublicSpi as per each product's API policy (clients should refer to each product's API policy for the exact guarantee -- usually binary compatibility is guaranteed at least across minor versions).

Note: @PublicSpi interfaces and classes are specifically designed to be implemented/extended by clients. Hence, the guarantee of binary compatibility is different to that of @PublicApi elements (if an element is both @PublicApi and @PublicSpi, both guarantees apply).

Class Overview

An abstract implementation for a search input transformer for custom fields. Assumes the custom field params contain a single mapping from field to value.

Summary

Public Constructors
AbstractCustomFieldSearchInputTransformer(CustomField field, String urlParameterName, CustomFieldInputHelper customFieldInputHelper)
Public Methods
Clause getSearchClause(ApplicationUser user, FieldValuesHolder fieldValuesHolder)
Gets the portion of the Search Query that this searcher is responsible for.
void populateFromParams(ApplicationUser user, FieldValuesHolder fieldValuesHolder, ActionParams actionParams)
Populate FieldValuesHolder object with whatever values the searcher is interested in from the ActionParams.
void populateFromQuery(ApplicationUser user, FieldValuesHolder fieldValuesHolder, Query query, SearchContext searchContext)
This method transforms any query information contained in the query that is relevant to this SearchInputTransformer into the values that the HTML rendering expects.
void validateParams(ApplicationUser user, SearchContext searchContext, FieldValuesHolder fieldValuesHolder, I18nHelper i18nHelper, ErrorCollection errors)
Adds error messages to the errors object if values in the fieldValuesHolder fails validation.
Protected Methods
abstract Clause getClauseFromParams(ApplicationUser user, CustomFieldParams customFieldParams)
Note: only provide a sensible implementation of this if you intend on using getSearchClause(com.atlassian.jira.user.ApplicationUser, com.atlassian.jira.issue.transport.FieldValuesHolder) as implemented here.
String getClauseName(ApplicationUser user, ClauseNames clauseNames)
CustomField getCustomField()
abstract CustomFieldParams getParamsFromSearchRequest(ApplicationUser user, Query query, SearchContext searchContext)
Gets CustomField search parameters from the given JQL Query.
[Expand]
Inherited Methods
From class java.lang.Object
From interface com.atlassian.jira.issue.search.searchers.transformer.SearchInputTransformer

Public Constructors

public AbstractCustomFieldSearchInputTransformer (CustomField field, String urlParameterName, CustomFieldInputHelper customFieldInputHelper)

Public Methods

public Clause getSearchClause (ApplicationUser user, FieldValuesHolder fieldValuesHolder)

Gets the portion of the Search Query that this searcher is responsible for.

Parameters
user performing this action.
fieldValuesHolder contains values populated by the searchers
Returns
  • a Clause that represents the users search based on the fieldValuesHolder; null if this searcher has no responsibility in the given input.

public void populateFromParams (ApplicationUser user, FieldValuesHolder fieldValuesHolder, ActionParams actionParams)

Populate FieldValuesHolder object with whatever values the searcher is interested in from the ActionParams. This transforms the "raw" request parameters into a form that the other processing methods can handle (usually a mapping of the fields name as the key and a list of the values as the value).

Parameters
user performing this action.
fieldValuesHolder is the object that should have its values set by this method and that will contain any other values that have been set by other SearchInputTransformers.
actionParams params from the webwork front end that contains a String[] of values as submitted via the

public void populateFromQuery (ApplicationUser user, FieldValuesHolder fieldValuesHolder, Query query, SearchContext searchContext)

This method transforms any query information contained in the query that is relevant to this SearchInputTransformer into the values that the HTML rendering expects. This should populate the FieldValuesHolder from the a query information in the query.
The query elements that are considered "relevant" to this method would be those that are produced by the getSearchClause(ApplicationUser, com.atlassian.jira.issue.transport.FieldValuesHolder) method.

Parameters
user performing this action.
fieldValuesHolder is the object that should have its values set by this method and that will contain any other values that have been set by other SearchInputTransformers.
query the search criteria used to populate the field values holder.
searchContext contains the projects and issue types that the search and filter form is restricted to

public void validateParams (ApplicationUser user, SearchContext searchContext, FieldValuesHolder fieldValuesHolder, I18nHelper i18nHelper, ErrorCollection errors)

Adds error messages to the errors object if values in the fieldValuesHolder fails validation. This should be called once the fieldValuesHolder has been populated.

Parameters
user performing this action.
searchContext the context of the search (i.e. projects and issue types selected).
fieldValuesHolder contains values populated by the populate methods of this input transformer.
i18nHelper used to internationalize error messages that we want to display to the users.
errors the ErrorCollection that contains the messages we want to display to the users.

Protected Methods

protected abstract Clause getClauseFromParams (ApplicationUser user, CustomFieldParams customFieldParams)

Note: only provide a sensible implementation of this if you intend on using getSearchClause(com.atlassian.jira.user.ApplicationUser, com.atlassian.jira.issue.transport.FieldValuesHolder) as implemented here. If you are overriding getSearchClause(com.atlassian.jira.user.ApplicationUser, com.atlassian.jira.issue.transport.FieldValuesHolder) then you do not have to implement this method sensibly.

Parameters
user the user performing the search
customFieldParams the custom field params
Returns
  • the clause that represents the params

protected String getClauseName (ApplicationUser user, ClauseNames clauseNames)

protected CustomField getCustomField ()

protected abstract CustomFieldParams getParamsFromSearchRequest (ApplicationUser user, Query query, SearchContext searchContext)

Gets CustomField search parameters from the given JQL Query.

It may return null, indicating no search parameters for this searcher were specified, or the query will not fit into the "simple navigator".

Parameters
user com.atlassian.jira.user.ApplicationUser
query JQL query
searchContext contains the projects and issue types that the search is restricted to
Returns
  • CustomField search parameters from the given JQL Query.