Package org.eclipse.viatra.query.runtime.base.api

## Class BaseIndexOptions

- java.lang.Object
- - org.eclipse.viatra.query.runtime.base.api.BaseIndexOptions

-     public class BaseIndexOptions
      extends java.lang.Object

  The base index options indicate how the indices are built.

  One of the options is to build indices in wildcard mode, meaning that all EClasses, EDataTypes, EReferences and EAttributes are indexed. This is convenient, but comes at a high memory cost. To save memory, one can disable wildcard mode and manually register those EClasses, EDataTypes, EReferences and EAttributes that should be indexed.

  Another choice is whether to build indices in dynamic EMF mode, meaning that types are identified by the String IDs that are ultimately derived from the nsURI of the EPackage. Multiple types with the same ID are treated as the same. This is useful if dynamic EMF is used, where there can be multiple copies (instantiations) of the same EPackage, representing essentially the same metamodel. If one disables dynamic EMF mode, an error is logged if duplicate EPackages with the same nsURI are encountered.

  No Implement:
    This class is not intended to be subclasses outside of VIATRA runtime

- - ### Field Summary

    Fields
    Modifier and Type | Field | Description
    --- | --- | ---
    `protected static boolean` | `DANGLING_FREE_ASSUMPTION_DEFAULT` | By default, the scope will make the assumption that it is free from dangling edges.
    `protected boolean` | `danglingFreeAssumption` |
    `protected static boolean` | `DYNAMIC_EMF_MODE_DEFAULT` | By default, base indices will be constructed with dynamic EMF mode set as false.
    `protected boolean` | `dynamicEMFMode` |
    `protected IBaseIndexFeatureFilter` | `featureFilterConfiguration` |
    `protected static ProfilerMode` | `INDEX_PROFILER_MODE_DEFAULT` |
    `protected ProfilerMode` | `indexerProfilerMode` | Returns whether base index profiling should be turned on.
    `protected IBaseIndexObjectFilter` | `notifierFilterConfiguration` |
    `protected IBaseIndexResourceFilter` | `resourceFilterConfiguration` |
    `protected static boolean` | `STRICT_NOTIFICATION_MODE_DEFAULT` | By default, duplicate notifications are only logged.
    `protected boolean` | `strictNotificationMode` | If strict notification mode is turned on, errors related to inconsistent notifications, e.g.
    `protected boolean` | `traverseOnlyWellBehavingDerivedFeatures` |
    `protected static IndexingLevel` | `WILDCARD_MODE_DEFAULT` | By default, base indices will be constructed with wildcard mode set as false.
    `protected IndexingLevel` | `wildcardMode` |

  - ### Constructor Summary

    Constructors
    Constructor | Description
    --- | ---
    `BaseIndexOptions()` | Creates a base index options with the default values.
    `BaseIndexOptions​(boolean dynamicEMFMode, IndexingLevel wildcardMode)` | Creates a base index options using the provided values for dynamic EMF mode and wildcard mode.

  - ### Method Summary

    All Methods Instance Methods Concrete Methods
    Modifier and Type | Method | Description
    --- | --- | ---
    `BaseIndexOptions` | `copy()` | Creates an independent copy of itself.
    `boolean` | `equals​(java.lang.Object obj)` |
    `IBaseIndexFeatureFilter` | `getFeatureFilterConfiguration()` |
    `ProfilerMode` | `getIndexerProfilerMode()` | Returns whether base indexer profiling is enabled.
    `IBaseIndexObjectFilter` | `getObjectFilterConfiguration()` |
    `IBaseIndexResourceFilter` | `getResourceFilterConfiguration()` |
    `IndexingLevel` | `getWildcardLevel()` |
    `int` | `hashCode()` |
    `boolean` | `isDanglingFreeAssumption()` |
    `boolean` | `isDynamicEMFMode()` |
    `boolean` | `isStrictNotificationMode()` | If strict notification mode is turned on, errors related to inconsistent notifications, e.g.
    `boolean` | `isTraverseOnlyWellBehavingDerivedFeatures()` |
    `boolean` | `isWildcardMode()` |
    `java.lang.String` | `toString()` |
    `BaseIndexOptions` | `withDanglingFreeAssumption​(boolean danglingFreeAssumption)` | Sets the dangling edge handling property of the index option.
    `BaseIndexOptions` | `withDynamicEMFMode​(boolean dynamicEMFMode)` |
    `BaseIndexOptions` | `withFeatureFilterConfiguration​(IBaseIndexFeatureFilter filter)` | Returns a copy of the configuration with a specified feature filter
    `BaseIndexOptions` | `withIndexProfilerMode​(ProfilerMode indexerProfilerMode)` |
    `BaseIndexOptions` | `withObjectFilterConfiguration​(IBaseIndexObjectFilter filter)` | Adds an object-level filter to the indexer configuration.
    `BaseIndexOptions` | `withResourceFilterConfiguration​(IBaseIndexResourceFilter filter)` | Returns a copy of the configuration with a specified resource filter
    `BaseIndexOptions` | `withStrictNotificationMode​(boolean strictNotificationMode)` |
    `BaseIndexOptions` | `withWildcardLevel​(IndexingLevel wildcardLevel)` |

    - ### Methods inherited from class java.lang.Object

      `clone, finalize, getClass, notify, notifyAll, wait, wait, wait`

- - ### Field Detail

    - #### WILDCARD_MODE_DEFAULT

          protected static final IndexingLevel WILDCARD_MODE_DEFAULT

      By default, base indices will be constructed with wildcard mode set as false.

    - #### DYNAMIC_EMF_MODE_DEFAULT

          protected static final boolean DYNAMIC_EMF_MODE_DEFAULT

      By default, base indices will be constructed with dynamic EMF mode set as false.
      See Also:
        Constant Field Values

    - #### DANGLING_FREE_ASSUMPTION_DEFAULT

          protected static final boolean DANGLING_FREE_ASSUMPTION_DEFAULT

      By default, the scope will make the assumption that it is free from dangling edges.
      Since:
        1.6
      See Also:
        Constant Field Values

    - #### STRICT_NOTIFICATION_MODE_DEFAULT

          protected static final boolean STRICT_NOTIFICATION_MODE_DEFAULT

      By default, duplicate notifications are only logged.
      Since:
        1.6
      See Also:
        Constant Field Values

    - #### INDEX_PROFILER_MODE_DEFAULT

          protected static final ProfilerMode INDEX_PROFILER_MODE_DEFAULT

      Since:
        2.3

    - #### danglingFreeAssumption

          protected boolean danglingFreeAssumption

      Since:
        1.6

    - #### dynamicEMFMode

          protected boolean dynamicEMFMode

    - #### traverseOnlyWellBehavingDerivedFeatures

          protected boolean traverseOnlyWellBehavingDerivedFeatures

    - #### wildcardMode

          protected IndexingLevel wildcardMode

    - #### notifierFilterConfiguration

          protected IBaseIndexObjectFilter notifierFilterConfiguration

    - #### resourceFilterConfiguration

          protected IBaseIndexResourceFilter resourceFilterConfiguration

    - #### featureFilterConfiguration

          protected IBaseIndexFeatureFilter featureFilterConfiguration

      Since:
        1.5

    - #### strictNotificationMode

          protected boolean strictNotificationMode

      If strict notification mode is turned on, errors related to inconsistent notifications, e.g. duplicate deletions cause the entire Base index to be considered invalid, e.g. the query engine on top of the index should become tainted.
      Since:
        1.6

    - #### indexerProfilerMode

          protected ProfilerMode indexerProfilerMode

      Returns whether base index profiling should be turned on.
      Since:
        2.3

  - ### Constructor Detail

    - #### BaseIndexOptions

          public BaseIndexOptions()

      Creates a base index options with the default values.

    - #### BaseIndexOptions

          public BaseIndexOptions​(boolean dynamicEMFMode,
                                  IndexingLevel wildcardMode)

      Creates a base index options using the provided values for dynamic EMF mode and wildcard mode.
      Since:
        1.4

  - ### Method Detail

    - #### withDynamicEMFMode

          public BaseIndexOptions withDynamicEMFMode​(boolean dynamicEMFMode)

      Parameters:
        `dynamicEMFMode` -
      Since:
        0.9

    - #### withDanglingFreeAssumption

          public BaseIndexOptions withDanglingFreeAssumption​(boolean danglingFreeAssumption)

      Sets the dangling edge handling property of the index option. If not set explicitly, it is considered as `true`.
      Parameters:
        `danglingFreeAssumption` - if true, the base index will assume that there are no dangling references (pointing out of scope or to proxies)
      Since:
        1.6

    - #### withObjectFilterConfiguration

          public BaseIndexOptions withObjectFilterConfiguration​(IBaseIndexObjectFilter filter)

      Adds an object-level filter to the indexer configuration. Warning - object-level indexing can increase indexing time noticeably. If possibly, use `withResourceFilterConfiguration(IBaseIndexResourceFilter)` instead.
      Parameters:
        `filter` -
      Since:
        0.9

    - #### getObjectFilterConfiguration

          public IBaseIndexObjectFilter getObjectFilterConfiguration()

      Returns:
        the selected object filter configuration, or null if not set

    - #### withResourceFilterConfiguration

          public BaseIndexOptions withResourceFilterConfiguration​(IBaseIndexResourceFilter filter)

      Returns a copy of the configuration with a specified resource filter
      Parameters:
        `filter` -
      Since:
        0.9

    - #### getResourceFilterConfiguration

          public IBaseIndexResourceFilter getResourceFilterConfiguration()

      Returns:
        the selected resource filter, or null if not set

    - #### withFeatureFilterConfiguration

          public BaseIndexOptions withFeatureFilterConfiguration​(IBaseIndexFeatureFilter filter)

      Returns a copy of the configuration with a specified feature filter
      Parameters:
        `filter` -
      Since:
        1.5

    - #### getFeatureFilterConfiguration

          public IBaseIndexFeatureFilter getFeatureFilterConfiguration()

      Returns:
        the selected feature filter, or null if not set
      Since:
        1.5

    - #### isDynamicEMFMode

          public boolean isDynamicEMFMode()

      Returns:
        whether the base index option has dynamic EMF mode set

    - #### isDanglingFreeAssumption

          public boolean isDanglingFreeAssumption()

      Returns:
        whether the base index makes the assumption that there can be no dangling edges
      Since:
        1.6

    - #### isTraverseOnlyWellBehavingDerivedFeatures

          public boolean isTraverseOnlyWellBehavingDerivedFeatures()

      Returns:
        whether the base index option has traverse only well-behaving derived features set

    - #### withWildcardLevel

          public BaseIndexOptions withWildcardLevel​(IndexingLevel wildcardLevel)

      Parameters:
        `wildcardMode` -
      Since:
        1.4

    - #### withStrictNotificationMode

          public BaseIndexOptions withStrictNotificationMode​(boolean strictNotificationMode)

      Since:
        1.6

    - #### withIndexProfilerMode

          public BaseIndexOptions withIndexProfilerMode​(ProfilerMode indexerProfilerMode)

      Since:
        2.3

    - #### isWildcardMode

          public boolean isWildcardMode()

      Returns:
        whether the base index option has wildcard mode set

    - #### getWildcardLevel

          public IndexingLevel getWildcardLevel()

      Returns:
        the wildcardMode level
      Since:
        1.4

    - #### isStrictNotificationMode

          public boolean isStrictNotificationMode()

      If strict notification mode is turned on, errors related to inconsistent notifications, e.g. duplicate deletions cause the entire Base index to be considered invalid, e.g. the query engine on top of the index should become tainted.
      Since:
        1.6

    - #### getIndexerProfilerMode

          public ProfilerMode getIndexerProfilerMode()

      Returns whether base indexer profiling is enabled. The profiling causes some slowdown, but provides information about how much time the base indexer takes for initialization and updates.
      Since:
        2.3

    - #### copy

          public BaseIndexOptions copy()

      Creates an independent copy of itself. The values of each option will be the same as this options. This method is used when a provided option must be copied to avoid external option changes afterward.
      Returns:
        the copy of this options

    - #### hashCode

          public int hashCode()

      Overrides:
        `hashCode` in class `java.lang.Object`

    - #### equals

          public boolean equals​(java.lang.Object obj)

      Overrides:
        `equals` in class `java.lang.Object`

    - #### toString

          public java.lang.String toString()

      Overrides:
        `toString` in class `java.lang.Object`