Class ContentTypeBasedDataFetcher
- java.lang.Object
-
- org.craftercms.engine.graphql.impl.fetchers.RequestAwareDataFetcher<Object>
-
- org.craftercms.engine.graphql.impl.fetchers.ContentTypeBasedDataFetcher
-
- All Implemented Interfaces:
graphql.schema.DataFetcher<Object>
public class ContentTypeBasedDataFetcher extends RequestAwareDataFetcher<Object>
Implementation ofDataFetcher
that queries Elasticsearch to retrieve content based on a content type.- Since:
- 3.1
- Author:
- joseross
-
-
Field Summary
Fields Modifier and Type Field Description static String
COMPONENT_INCLUDE_REGEX
static String
CONTENT_TYPE_REGEX_COMPONENT
static String
CONTENT_TYPE_REGEX_PAGE
protected int
defaultLimit
The default value for the 'limit' argumentprotected String
defaultSortField
The default value for the 'sortBy' argumentprotected String
defaultSortOrder
The default value for the 'sortOrder' argumentprotected org.craftercms.search.elasticsearch.client.ElasticsearchClientWrapper
elasticsearchClient
The instance ofElasticsearchClientWrapper
-
Constructor Summary
Constructors Constructor Description ContentTypeBasedDataFetcher()
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description protected void
addFieldFilterFromMapEntry(String path, Map.Entry<String,Object> filter, co.elastic.clients.elasticsearch._types.query_dsl.BoolQuery.Builder query, graphql.schema.DataFetchingEnvironment env)
protected void
addFieldFilterFromObjectField(String path, graphql.language.ObjectField filter, co.elastic.clients.elasticsearch._types.query_dsl.BoolQuery.Builder query, graphql.schema.DataFetchingEnvironment env)
Object
doGet(graphql.schema.DataFetchingEnvironment env)
Performs the actual fetching of the requested fields.protected Map<String,Object>
fixItems(Map<String,Object> map)
Checks for fields containing the 'item' keyword and makes sure they are always a list even if there is only one value.protected co.elastic.clients.elasticsearch._types.query_dsl.Query
getFilterQueryFromMapEntry(String fieldPath, Map.Entry<String,Object> filter)
protected co.elastic.clients.elasticsearch._types.query_dsl.Query
getFilterQueryFromObjectField(String fieldPath, graphql.language.ObjectField filter, graphql.schema.DataFetchingEnvironment env)
protected Object
getRealValue(graphql.language.Value value, graphql.schema.DataFetchingEnvironment env)
Extracts a scalar value, this is needed because of GraphQL strict typesprotected void
processSelection(String path, graphql.language.Selection currentSelection, co.elastic.clients.elasticsearch._types.query_dsl.BoolQuery.Builder query, List<String> queryFieldIncludes, graphql.schema.DataFetchingEnvironment env)
Adds the required filters to the ES query for the given fieldvoid
setDefaultLimit(int defaultLimit)
void
setDefaultSortField(String defaultSortField)
void
setDefaultSortOrder(String defaultSortOrder)
void
setElasticsearchClient(org.craftercms.search.elasticsearch.client.ElasticsearchClientWrapper elasticsearchClient)
-
Methods inherited from class org.craftercms.engine.graphql.impl.fetchers.RequestAwareDataFetcher
get
-
-
-
-
Field Detail
-
CONTENT_TYPE_REGEX_PAGE
public static final String CONTENT_TYPE_REGEX_PAGE
- See Also:
- Constant Field Values
-
CONTENT_TYPE_REGEX_COMPONENT
public static final String CONTENT_TYPE_REGEX_COMPONENT
- See Also:
- Constant Field Values
-
COMPONENT_INCLUDE_REGEX
public static final String COMPONENT_INCLUDE_REGEX
- See Also:
- Constant Field Values
-
defaultLimit
protected int defaultLimit
The default value for the 'limit' argument
-
defaultSortField
protected String defaultSortField
The default value for the 'sortBy' argument
-
defaultSortOrder
protected String defaultSortOrder
The default value for the 'sortOrder' argument
-
elasticsearchClient
protected org.craftercms.search.elasticsearch.client.ElasticsearchClientWrapper elasticsearchClient
The instance ofElasticsearchClientWrapper
-
-
Method Detail
-
setDefaultLimit
public void setDefaultLimit(int defaultLimit)
-
setDefaultSortField
public void setDefaultSortField(String defaultSortField)
-
setDefaultSortOrder
public void setDefaultSortOrder(String defaultSortOrder)
-
setElasticsearchClient
public void setElasticsearchClient(org.craftercms.search.elasticsearch.client.ElasticsearchClientWrapper elasticsearchClient)
-
doGet
public Object doGet(graphql.schema.DataFetchingEnvironment env) throws IOException
Performs the actual fetching of the requested fields.- Specified by:
doGet
in classRequestAwareDataFetcher<Object>
- Parameters:
env
- theDataFetchingEnvironment
- Returns:
- the resolved value
- Throws:
IOException
-
processSelection
protected void processSelection(String path, graphql.language.Selection currentSelection, co.elastic.clients.elasticsearch._types.query_dsl.BoolQuery.Builder query, List<String> queryFieldIncludes, graphql.schema.DataFetchingEnvironment env)
Adds the required filters to the ES query for the given field
-
addFieldFilterFromObjectField
protected void addFieldFilterFromObjectField(String path, graphql.language.ObjectField filter, co.elastic.clients.elasticsearch._types.query_dsl.BoolQuery.Builder query, graphql.schema.DataFetchingEnvironment env)
-
addFieldFilterFromMapEntry
protected void addFieldFilterFromMapEntry(String path, Map.Entry<String,Object> filter, co.elastic.clients.elasticsearch._types.query_dsl.BoolQuery.Builder query, graphql.schema.DataFetchingEnvironment env)
-
getFilterQueryFromObjectField
protected co.elastic.clients.elasticsearch._types.query_dsl.Query getFilterQueryFromObjectField(String fieldPath, graphql.language.ObjectField filter, graphql.schema.DataFetchingEnvironment env)
-
getFilterQueryFromMapEntry
protected co.elastic.clients.elasticsearch._types.query_dsl.Query getFilterQueryFromMapEntry(String fieldPath, Map.Entry<String,Object> filter)
-
getRealValue
protected Object getRealValue(graphql.language.Value value, graphql.schema.DataFetchingEnvironment env)
Extracts a scalar value, this is needed because of GraphQL strict types
-
-