Class CruxQuery

  • Direct Known Subclasses:
    CruxGraphQuery

    public class CruxQuery
    extends Object
    Captures the structure of a query against Crux.
    • 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
      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.
      void addConditions​(List<clojure.lang.IPersistentCollection> cruxConditions)
      Add the provided list of conditions to those to be included in the query.
      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)
      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.
      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.
      void addRelationshipEndpointConditions​(String reference)
      Add a condition to match either endpoint of a relationship to the provided reference (primary key).
      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.
      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.
      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.
      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.IPersistentMap getQuery()
      Retrieve the query object, as ready-to-be-submitted to Crux API's query method.
      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).
      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
    • Constructor Detail

      • CruxQuery

        public CruxQuery()
        Default constructor for a new query.
    • 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 match
        reference - 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 results
        typeGuid - 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 type
        category - by which to limit results
        typeGuid - by which to limit the results
        subtypeLimits - 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 translate
        namespace - by which to qualify properties
        typeNames - of all of the types we are including in the search
        cruxConnector - connectivity to the repository
        luceneEnabled - 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 translate
        typeNames - of all of the types we are including in the search
        cruxConnector - connectivity to the repository
        luceneEnabled - 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 translate
        typeNames - of all of the types we are including in the search
        cruxConnector - connectivity to the repository
        luceneEnabled - 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 results
        toLimit - 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 limited
        limitResultsByStatus - 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 results
        sequencingProperty - 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 sort
        order - 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)