Class CruxQuery
- java.lang.Object
-
- org.odpi.egeria.connectors.juxt.crux.model.search.CruxQuery
-
- Direct Known Subclasses:
CruxGraphQuery
public class CruxQuery extends Object
Captures the structure of a query against Crux.
-
-
Field Summary
Fields Modifier and Type Field Description protected List<clojure.lang.IPersistentCollection>conditionsstatic clojure.lang.SymbolCREATE_TIMEstatic clojure.lang.SymbolDOC_IDprotected List<clojure.lang.IPersistentCollection>rulesstatic clojure.lang.KeywordSORT_ASCENDINGstatic clojure.lang.KeywordSORT_DESCENDINGstatic clojure.lang.SymbolSORT_PROPERTYstatic clojure.lang.SymbolUPDATE_TIME
-
Constructor Summary
Constructors Constructor Description CruxQuery()Default constructor for a new query.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description voidaddClassificationConditions(org.odpi.openmetadata.repositoryservices.connectors.stores.metadatacollectionstore.properties.search.SearchClassifications searchClassifications, Set<String> typeNames, CruxOMRSRepositoryConnector cruxConnector, boolean luceneEnabled, boolean luceneRegexes)Retrieve the set of conditions appropriate to Crux for the provided Egeria conditions.voidaddConditions(List<clojure.lang.IPersistentCollection> cruxConditions)Add the provided list of conditions to those to be included in the query.protected voidaddFindElement(clojure.lang.Symbol element)Add the specified symbol to the list of those that are discovered by the search conditions (if not already in the list)protected voidaddPropertyBasedSorting(Set<clojure.lang.Keyword> qualifiedSortProperties, clojure.lang.Keyword order)Add the necessary conditions for sorting based on a property: somewhat complex as we need to ensure that the property being used in the sort is included in the search results themselves, and given the qualification of property names this could mean several different properties we ultimately need to attempt to sort by, and hence this separate method.voidaddPropertyConditions(org.odpi.openmetadata.repositoryservices.connectors.stores.metadatacollectionstore.properties.search.SearchProperties searchProperties, String namespace, Set<String> typeNames, CruxOMRSRepositoryConnector cruxConnector, boolean luceneEnabled, boolean luceneRegexes)Retrieve the set of conditions appropriate to Crux for the provided Egeria conditions.voidaddRelationshipEndpointConditions(String reference)Add a condition to match either endpoint of a relationship to the provided reference (primary key).voidaddSequencing(org.odpi.openmetadata.repositoryservices.connectors.stores.metadatacollectionstore.properties.SequencingOrder sequencingOrder, String sequencingProperty, String namespace, Set<String> typeNames, CruxOMRSRepositoryConnector cruxConnector)Add the sequencing information onto the query.voidaddStatusLimiters(List<org.odpi.openmetadata.repositoryservices.connectors.stores.metadatacollectionstore.properties.instances.InstanceStatus> limitResultsByStatus, clojure.lang.Symbol toLimit)Add the provided statuses as limiters on which results should be retrieved from the query.voidaddTypeCondition(org.odpi.openmetadata.repositoryservices.connectors.stores.metadatacollectionstore.properties.typedefs.TypeDefCategory category, String typeGuid, List<String> subtypeLimits)Add a condition to limit the type of the results by their TypeDef GUID.protected List<clojure.lang.IPersistentCollection>getClassificationConditions(org.odpi.openmetadata.repositoryservices.connectors.stores.metadatacollectionstore.properties.search.SearchClassifications searchClassifications, Set<String> typeNames, CruxOMRSRepositoryConnector cruxConnector, boolean luceneEnabled, boolean luceneRegexes)Retrieve a set of translated Crux conditions appropriate to the provided Egeria conditions.clojure.lang.IPersistentMapgetQuery()Retrieve the query object, as ready-to-be-submitted to Crux API's query method.protected clojure.lang.PersistentVectorgetReferenceCondition(clojure.lang.Keyword property, String reference)Add a condition to match the value of a property to a reference (primary key).protected List<clojure.lang.IPersistentCollection>getStatusLimiters(clojure.lang.Symbol variable, List<org.odpi.openmetadata.repositoryservices.connectors.stores.metadatacollectionstore.properties.instances.InstanceStatus> limitResultsByStatus)Retrieve the status condition(s) for the provided status limiters.protected List<clojure.lang.IPersistentCollection>getTypeCondition(clojure.lang.Symbol variable, org.odpi.openmetadata.repositoryservices.connectors.stores.metadatacollectionstore.properties.typedefs.TypeDefCategory category, String typeGuid, List<String> subtypeLimits)Add a condition to limit the type of the results by their TypeDef GUID.
-
-
-
Field Detail
-
DOC_ID
public static final clojure.lang.Symbol DOC_ID
-
CREATE_TIME
public static final clojure.lang.Symbol CREATE_TIME
-
UPDATE_TIME
public static final clojure.lang.Symbol UPDATE_TIME
-
SORT_PROPERTY
public static final clojure.lang.Symbol SORT_PROPERTY
-
SORT_ASCENDING
public static final clojure.lang.Keyword SORT_ASCENDING
-
SORT_DESCENDING
public static final clojure.lang.Keyword SORT_DESCENDING
-
conditions
protected final List<clojure.lang.IPersistentCollection> conditions
-
rules
protected final List<clojure.lang.IPersistentCollection> rules
-
-
Method Detail
-
addRelationshipEndpointConditions
public void addRelationshipEndpointConditions(String reference)
Add a condition to match either endpoint of a relationship to the provided reference (primary key).- Parameters:
reference- the primary key value of an entity, used to match either end of a relationship
-
getReferenceCondition
protected clojure.lang.PersistentVector getReferenceCondition(clojure.lang.Keyword property, String reference)Add a condition to match the value of a property to a reference (primary key).- Parameters:
property- to matchreference- the primary key value to which the property should refer- Returns:
- PersistentVector for the condition
-
addTypeCondition
public void addTypeCondition(org.odpi.openmetadata.repositoryservices.connectors.stores.metadatacollectionstore.properties.typedefs.TypeDefCategory category, String typeGuid, List<String> subtypeLimits)Add a condition to limit the type of the results by their TypeDef GUID.- Parameters:
category- by which to limit resultstypeGuid- by which to limit the results (if null, will be ignored)subtypeLimits- limit the results to only these subtypes (if provided: ignored if typeGuid is null)
-
getTypeCondition
protected List<clojure.lang.IPersistentCollection> getTypeCondition(clojure.lang.Symbol variable, org.odpi.openmetadata.repositoryservices.connectors.stores.metadatacollectionstore.properties.typedefs.TypeDefCategory category, String typeGuid, List<String> subtypeLimits)
Add a condition to limit the type of the results by their TypeDef GUID.- Parameters:
variable- to resolve against the typecategory- by which to limit resultstypeGuid- by which to limit the resultssubtypeLimits- limit the results to only these subtypes (if provided)- Returns:
List<IPersistentCollection>of the conditions
-
addConditions
public void addConditions(List<clojure.lang.IPersistentCollection> cruxConditions)
Add the provided list of conditions to those to be included in the query.- Parameters:
cruxConditions- list of conditions to add
-
addPropertyConditions
public void addPropertyConditions(org.odpi.openmetadata.repositoryservices.connectors.stores.metadatacollectionstore.properties.search.SearchProperties searchProperties, String namespace, Set<String> typeNames, CruxOMRSRepositoryConnector cruxConnector, boolean luceneEnabled, boolean luceneRegexes)Retrieve the set of conditions appropriate to Crux for the provided Egeria conditions.- Parameters:
searchProperties- to translatenamespace- by which to qualify propertiestypeNames- of all of the types we are including in the searchcruxConnector- connectivity to the repositoryluceneEnabled- indicates whether Lucene search index is configured (true) or not (false)luceneRegexes- indicates whether unquoted regexes should be treated as Lucene compatible (true) or not (false)
-
addClassificationConditions
public void addClassificationConditions(org.odpi.openmetadata.repositoryservices.connectors.stores.metadatacollectionstore.properties.search.SearchClassifications searchClassifications, Set<String> typeNames, CruxOMRSRepositoryConnector cruxConnector, boolean luceneEnabled, boolean luceneRegexes)Retrieve the set of conditions appropriate to Crux for the provided Egeria conditions.- Parameters:
searchClassifications- to translatetypeNames- of all of the types we are including in the searchcruxConnector- connectivity to the repositoryluceneEnabled- indicates whether Lucene search index is configured (true) or not (false)luceneRegexes- indicates whether unquoted regexes should be treated as Lucene compatible (true) or not (false)
-
getClassificationConditions
protected List<clojure.lang.IPersistentCollection> getClassificationConditions(org.odpi.openmetadata.repositoryservices.connectors.stores.metadatacollectionstore.properties.search.SearchClassifications searchClassifications, Set<String> typeNames, CruxOMRSRepositoryConnector cruxConnector, boolean luceneEnabled, boolean luceneRegexes)
Retrieve a set of translated Crux conditions appropriate to the provided Egeria conditions.- Parameters:
searchClassifications- to translatetypeNames- of all of the types we are including in the searchcruxConnector- connectivity to the repositoryluceneEnabled- indicates whether Lucene search index is configured (true) or not (false)luceneRegexes- indicates whether unquoted regexes should be treated as Lucene compatible (true) or not (false)- Returns:
List<IPersistentCollection>
-
addStatusLimiters
public void addStatusLimiters(List<org.odpi.openmetadata.repositoryservices.connectors.stores.metadatacollectionstore.properties.instances.InstanceStatus> limitResultsByStatus, clojure.lang.Symbol toLimit)
Add the provided statuses as limiters on which results should be retrieved from the query.- Parameters:
limitResultsByStatus- list of statuses by which to limit resultstoLimit- variable by which to limit by status (e.g. entity or relationship)
-
getStatusLimiters
protected List<clojure.lang.IPersistentCollection> getStatusLimiters(clojure.lang.Symbol variable, List<org.odpi.openmetadata.repositoryservices.connectors.stores.metadatacollectionstore.properties.instances.InstanceStatus> limitResultsByStatus)
Retrieve the status condition(s) for the provided status limiters.- Parameters:
variable- that should be limitedlimitResultsByStatus- list of statuses by which to limit results- Returns:
List<IPersistentCollection>of the condition(s)
-
addSequencing
public void addSequencing(org.odpi.openmetadata.repositoryservices.connectors.stores.metadatacollectionstore.properties.SequencingOrder sequencingOrder, String sequencingProperty, String namespace, Set<String> typeNames, CruxOMRSRepositoryConnector cruxConnector)Add the sequencing information onto the query. (If both are null, will default to sorting by GUID.)- Parameters:
sequencingOrder- by which to sequence the resultssequencingProperty- by which to sequence the results (required if sorting by property, otherwise ignored)namespace- by which to qualify the sorting property (required if sorting by property, otherwise ignored)typeNames- of all of the types we are including in the search (required if sorting by property, otherwise ignored)cruxConnector- connectivity to the repository
-
addPropertyBasedSorting
protected void addPropertyBasedSorting(Set<clojure.lang.Keyword> qualifiedSortProperties, clojure.lang.Keyword order)
Add the necessary conditions for sorting based on a property: somewhat complex as we need to ensure that the property being used in the sort is included in the search results themselves, and given the qualification of property names this could mean several different properties we ultimately need to attempt to sort by, and hence this separate method.- Parameters:
qualifiedSortProperties- the set of properties by which we will sortorder- indicating ascending or descending
-
getQuery
public clojure.lang.IPersistentMap getQuery()
Retrieve the query object, as ready-to-be-submitted to Crux API's query method.- Returns:
- IPersistentMap containing the query
-
addFindElement
protected void addFindElement(clojure.lang.Symbol element)
Add the specified symbol to the list of those that are discovered by the search conditions (if not already in the list)- Parameters:
element- to add (if not already in the list)
-
-