Package org.apache.uima.cas.impl
Class FSIndexRepositoryImpl
java.lang.Object
org.apache.uima.cas.impl.FSIndexRepositoryImpl
- All Implemented Interfaces:
FSIndexRepositoryMgr,FSIndexRepository,LowLevelIndexRepository
public class FSIndexRepositoryImpl
extends Object
implements FSIndexRepositoryMgr, LowLevelIndexRepository
There is one instance of this class per CAS View.
Some parts of the data here are shared between all views of a CAS.
Many things refer to specific types, and their associated Java Cover classes.
Java impl classes are always used for each type;
If there is no JCas cover class defined for a type, then
the most specific superclass which has a JCas defined class is used;
this is the class TOP or one of its subclasses.
Generic typing:
User facing APIs can make use of the (JCas) Java cover types, for indexes and iterators over them
The general generic type used is typically written here as T extends FeatureStructure, where
FeatureStructure is the super interface of all JCas types.
APIs having no reference to Java cover types (i.e., low level iterators) are not generic, unless
they are needed to be to pass along the associated type to other APIs.
-
Field Summary
FieldsModifier and TypeFieldDescriptionstatic final StringDefine this JVM property to allow adding the same identical FS to Set and Sorted indexes more than once.static final intThe default size of an index.static final Stringstatic final booleanstatic final booleanstatic final booleanstatic final booleanflag used when removing FSs due to corruption avoidancestatic final booleanset next to true to debug issues with different treatment of no type priorities in v3 -
Method Summary
Modifier and TypeMethodDescription<T extends TOP>
voidaddback(T fs) voidaddFS(int fsRef) <T extends FeatureStructure>
voidaddFS(T fs) Add a feature structure to all appropriate indexes in the repository.voidcommit()Commit this repository instance.Create a new comparator to define a new index.booleancreateIndex(FSIndexComparator comp, String label) Create a new sorted index.booleancreateIndex(FSIndexComparator comp, String label, int indexType) Create a new index.<T extends FeatureStructure>
booleancreateIndexNoQuestionsAsked(FSIndexComparator comp, String label, int indexType) This is public only until the xml specifier format supports specifying index kinds (set, bag etc.).Currently not useful.voidflush()Reset all indexes, in one view.<T extends FeatureStructure>
LowLevelIterator<T>getAllIndexedFS(Type type) Gets an iterator over all indexed (in this View) FeatureStructures of the specified Type (and any of its subtypes).getAnnotationFsComparator(FSComparators withId, FSComparators withTypeOrder) Get the default type order builder.Get the default type order.<T extends FeatureStructure>
LowLevelIndex<T>Retrieve an index according to a label.<T extends FeatureStructure>
FSIndex<T>Retrieve an index according to a label and a type.<T extends FeatureStructure>
org.apache.uima.cas.impl.FsIndex_iicp<T>getIndexBySpec(int typeCode, int indexingStrategy, FSIndexComparatorImpl comp) Get the FsIndex_iicp for a given typeCode, indexingStrategy, and comparator (type ignored)Returns an unmodifiable collection of all of the FSs that are indexed in this view, in an arbitrary order.<T extends TOP>
Collection<T>getIndexedFSs(Class<T> clazz) Returns an unmodifiable collection of all the FSs of this type and its subtypes, that are indexed in this view, in an arbitrary order.<T extends TOP>
Collection<T>getIndexedFSs(Type type) Returns an unmodifiable collection of all the FSs of this type and its subtypes, that are indexed in this view, in an arbitrary order.Get all indexes in this repository.Get all labels for all indexes.<T extends FeatureStructure>
Iterator<String>getLabels(FSIndexComparator comp) Get the labels for a specific comparator.getNonSetSingleIndexForType(int typecode) getUpdatedFSs(Set<TOP> items) booleanCheck if this instance has been committed.booleanvoidll_addFS(int fsRef) Add a FS reference to all appropriate indexes in the repository.final voidll_addFS(int fsRef, boolean doChecks) Add a FS reference to all appropriate indexes in the repository.<T extends FeatureStructure>
LowLevelIterator<T>ll_getAllIndexedFS(Type type) <T extends FeatureStructure>
LowLevelIndex<T>ll_getIndex(String indexName) Get an index by its name.<T extends FeatureStructure>
LowLevelIndex<T>ll_getIndex(String indexName, int typeCode) Get an index by a name and type.Get all indexes in this repository as low level indexesvoidll_removeFS(int fsRef) Remove a FS reference from all indexes in the repository.voidRemove all instances of a particular type (but not its subtypes) from all indexesvoidRemove all instances of a particular type (including its subtypes) from all indexesvoidremoveFS(int fsRef) voidRemove a feature structure from all indexes in the repository.voidremoveIndex(String label) just for testing purposes removes the named index Also removes indexes for all subtypes.streamNonEmptyIndexes(Class<? extends TOP> clazz) streamNonEmptyIndexes(Type type) Stream instances of all of the non-empty indexes themselvestoString()voidwalkIndexedFSs(Consumer<TOP> action) For this view, walk the indexed FSs in arbitrary order.voidwalkSortedIndexedFSs(Consumer<TOP> action) For this view, walk the indexed FSs, sorted by id (e.g.Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, waitMethods inherited from interface org.apache.uima.cas.FSIndexRepository
getAllIndexedFS, removeAllExcludingSubtypes, removeAllIncludingSubtypes
-
Field Details
-
ITEM_ADDED_TO_INDEX
public static final boolean ITEM_ADDED_TO_INDEX- See Also:
-
ITEM_REMOVED_FROM_INDEX
public static final boolean ITEM_REMOVED_FROM_INDEX- See Also:
-
V2_ANNOTATION_COMPARE_TYPE_ORDER
public static final boolean V2_ANNOTATION_COMPARE_TYPE_ORDERset next to true to debug issues with different treatment of no type priorities in v3- See Also:
-
DEFAULT_INDEX_SIZE
public static final int DEFAULT_INDEX_SIZEThe default size of an index.- See Also:
-
SKIP_BAG_INDEXES
public static final boolean SKIP_BAG_INDEXESflag used when removing FSs due to corruption avoidance- See Also:
-
INCLUDE_BAG_INDEXES
public static final boolean INCLUDE_BAG_INDEXES- See Also:
-
ALLOW_DUP_ADD_TO_INDEXES
Define this JVM property to allow adding the same identical FS to Set and Sorted indexes more than once.- See Also:
-
DISABLE_ENHANCED_WRONG_INDEX
- See Also:
-
-
Method Details
-
createIndex
public boolean createIndex(FSIndexComparator comp, String label, int indexType) throws CASAdminException Description copied from interface:FSIndexRepositoryMgrCreate a new index. Note: if you creata a BAG_INDEX, the comparator will be ignored.- Specified by:
createIndexin interfaceFSIndexRepositoryMgr- Parameters:
comp- The comparator for the new index.label- The name of the new index.indexType- The kind of index (sorted, set, bag).- Returns:
falseiff an index with the samelabelalready exists.- Throws:
CASAdminException- If the repository is locked (after callingcommit()).- See Also:
-
createIndexNoQuestionsAsked
public <T extends FeatureStructure> boolean createIndexNoQuestionsAsked(FSIndexComparator comp, String label, int indexType) This is public only until the xml specifier format supports specifying index kinds (set, bag etc.).- Type Parameters:
T- -- Parameters:
comp- -label- -indexType- -- Returns:
- -
-
removeIndex
just for testing purposes removes the named index Also removes indexes for all subtypes. - NOTE this might remove another index definition's index, if it matches Only valid if no add-to-index operations have happened.- Parameters:
label- the name of the index to remove
-
flush
public void flush()Reset all indexes, in one view. -
commit
public void commit()Description copied from interface:FSIndexRepositoryMgrCommit this repository instance. No more additions will be allowed.- Specified by:
commitin interfaceFSIndexRepositoryMgr- See Also:
-
getDefaultTypeOrder
Description copied from interface:FSIndexRepositoryMgrGet the default type order.- Specified by:
getDefaultTypeOrderin interfaceFSIndexRepositoryMgr- Returns:
- The default type order.
-
getDefaultOrderBuilder
Description copied from interface:FSIndexRepositoryMgrGet the default type order builder.- Specified by:
getDefaultOrderBuilderin interfaceFSIndexRepositoryMgr- Returns:
- The default type order builder.
-
getIndexes
Description copied from interface:FSIndexRepositoryGet all indexes in this repository.- Specified by:
getIndexesin interfaceFSIndexRepository- Returns:
- All indexes.
- See Also:
-
ll_getIndexes
Description copied from interface:FSIndexRepositoryGet all indexes in this repository as low level indexes- Specified by:
ll_getIndexesin interfaceFSIndexRepository- Returns:
- All indexes.
-
getLabels
Description copied from interface:FSIndexRepositoryGet all labels for all indexes.- Specified by:
getLabelsin interfaceFSIndexRepository- Returns:
- All labels.
- See Also:
-
getLabels
Get the labels for a specific comparator.- Type Parameters:
T- type of Feature Structure- Parameters:
comp- The comparator.- Returns:
- An iterator over the labels.
-
getIndex
Description copied from interface:FSIndexRepositoryRetrieve an index according to a label and a type. The type is used to narrow down the index of a more general type to a more specific one. Generics: T is the associated Java cover class for the type.- Specified by:
getIndexin interfaceFSIndexRepository- Type Parameters:
T- The Java class associated with the type- Parameters:
label- The name of the index.type- A subtype of the type of the index.- Returns:
- The specified, or
nullif an index with that name doesn't exist. - See Also:
-
getIndex
Description copied from interface:FSIndexRepositoryRetrieve an index according to a label. Generics: T is the associated Java cover class for the top type defined for this index name.- Specified by:
getIndexin interfaceFSIndexRepository- Type Parameters:
T- the Java class associated with the top-most type of the index- Parameters:
label- The name of the index.- Returns:
- The index with the name
label, ornullif no such index is defined. - See Also:
-
removeAllExcludingSubtypes
Remove all instances of a particular type (but not its subtypes) from all indexes- Specified by:
removeAllExcludingSubtypesin interfaceFSIndexRepository- Parameters:
type- -
-
removeAllIncludingSubtypes
Remove all instances of a particular type (including its subtypes) from all indexes- Specified by:
removeAllIncludingSubtypesin interfaceFSIndexRepository- Parameters:
type- Type to remove (including all its subtypes) from this particular view.
-
createComparator
Description copied from interface:FSIndexRepositoryMgrCreate a new comparator to define a new index.- Specified by:
createComparatorin interfaceFSIndexRepositoryMgr- Returns:
- A new comparator instance.
- See Also:
-
isCommitted
public boolean isCommitted()Description copied from interface:FSIndexRepositoryMgrCheck if this instance has been committed.- Specified by:
isCommittedin interfaceFSIndexRepositoryMgr- Returns:
trueiff this instance has been committed.- See Also:
-
createIndex
Description copied from interface:FSIndexRepositoryMgrCreate a new sorted index.- Specified by:
createIndexin interfaceFSIndexRepositoryMgr- Parameters:
comp- The comparator for the new index.label- The name of the new index.- Returns:
falseiff an index with the samelabelalready exists.- Throws:
CASAdminException- If the repository is locked (after callingcommit()).- See Also:
-
walkIndexedFSs
For this view, walk the indexed FSs in arbitrary order.- Parameters:
action- the action to do on each FS
-
walkSortedIndexedFSs
For this view, walk the indexed FSs, sorted by id (e.g. creation time)- Parameters:
action- -
-
getNonSetSingleIndexForType
-
getNonSetSingleIndexForUsedType
-
addFS
public void addFS(int fsRef) -
ll_addFS
public void ll_addFS(int fsRef) Description copied from interface:LowLevelIndexRepositoryAdd a FS reference to all appropriate indexes in the repository.- Specified by:
ll_addFSin interfaceLowLevelIndexRepository- Parameters:
fsRef- The FS reference to be added to the repository. IffsRefis not a valid FS reference, the subsequent behavior of the system is undefined.
-
ll_removeFS
public void ll_removeFS(int fsRef) Description copied from interface:LowLevelIndexRepositoryRemove a FS reference from all indexes in the repository. Note that this only removes the reference from the index repository, it does not free memory on the heap.- Specified by:
ll_removeFSin interfaceLowLevelIndexRepository- Parameters:
fsRef- The FS reference to be removed from the indexes.
-
addFS
Description copied from interface:FSIndexRepositoryAdd a feature structure to all appropriate indexes in the repository. If no indexes exist for the type of FS that you are adding, then a bag (unsorted) index will be automatically created.Important: after you have called
addFS()on a FS, do not change the values of any features used for indexing. If you do, the index will become corrupted and may be unusable. If you need to change an index feature value, first callremoveFS()on the FS, change the feature values, then calladdFS()again.- Specified by:
addFSin interfaceFSIndexRepository- Type Parameters:
T- the generic type of the FeatureStructure- Parameters:
fs- The FS to be added.- See Also:
-
removeFS
Description copied from interface:FSIndexRepositoryRemove a feature structure from all indexes in the repository.- Specified by:
removeFSin interfaceFSIndexRepository- Parameters:
fs- The FS to be removed. The fs must be the exact FS to remove, not just one which compares "equal" using the index's comparator.- See Also:
-
removeFS
public void removeFS(int fsRef) -
createTypeSortOrder
Description copied from interface:FSIndexRepositoryMgrCurrently not useful.- Specified by:
createTypeSortOrderin interfaceFSIndexRepositoryMgr- Returns:
- A new type order builder.
-
ll_getIndex
Description copied from interface:LowLevelIndexRepositoryGet an index by its name.- Specified by:
ll_getIndexin interfaceLowLevelIndexRepository- Type Parameters:
T- type of Feature Structure- Parameters:
indexName- The name of the index.- Returns:
- The corresponding index, or
nullif no such index exists.
-
ll_getIndex
Description copied from interface:LowLevelIndexRepositoryGet an index by a name and type. The type must be a subtype of the index's type. Note that there is no special checked version of this method, the type parameters are always checked.- Specified by:
ll_getIndexin interfaceLowLevelIndexRepository- Type Parameters:
T- type of Feature Structure- Parameters:
indexName- The name of the index.typeCode- The code of the desired subtype.- Returns:
- The corresponding index, or
nullif no such index exists.
-
ll_addFS
public final void ll_addFS(int fsRef, boolean doChecks) Description copied from interface:LowLevelIndexRepositoryAdd a FS reference to all appropriate indexes in the repository.- Specified by:
ll_addFSin interfaceLowLevelIndexRepository- Parameters:
fsRef- The FS reference to be added to the repository. IffsRefis not a valid FS reference, the subsequent behavior of the system is undefined.doChecks- Check if the FS reference argument is a valid reference.
-
addback
-
ll_getAllIndexedFS
-
getAllIndexedFS
Description copied from interface:FSIndexRepositoryGets an iterator over all indexed (in this View) FeatureStructures of the specified Type (and any of its subtypes). The elements are returned in arbitrary order. Generics: T is the Java class for aType.- Specified by:
getAllIndexedFSin interfaceFSIndexRepository- Type Parameters:
T- The Java class associated with aType- Parameters:
type- The type- Returns:
- An iterator that returns all indexed FeatureStructures of type
aTypeand its subtypes, in no particular order.
-
getIndexedFSs
Description copied from interface:FSIndexRepositoryReturns an unmodifiable collection of all of the FSs that are indexed in this view, in an arbitrary order. Subsequent modifications to the indexes do not affect this collection.- Specified by:
getIndexedFSsin interfaceFSIndexRepository- Returns:
- an unmodifiable, unordered collection of all indexed (in this view) Feature Structures of the specified type (including subtypes)
-
getIndexedFSs
Description copied from interface:FSIndexRepositoryReturns an unmodifiable collection of all the FSs of this type and its subtypes, that are indexed in this view, in an arbitrary order. Subsequent modifications to the indexes do not affect this collection.- Specified by:
getIndexedFSsin interfaceFSIndexRepository- Type Parameters:
T- The Java class associated with type- Parameters:
clazz- The JCas class corresponding to the type- Returns:
- an unmodifiable, unordered collection of all indexed (in this view) Feature Structures of the specified type (including subtypes)
-
getIndexedFSs
Description copied from interface:FSIndexRepositoryReturns an unmodifiable collection of all the FSs of this type and its subtypes, that are indexed in this view, in an arbitrary order. Subsequent modifications to the indexes do not affect this collection.- Specified by:
getIndexedFSsin interfaceFSIndexRepository- Type Parameters:
T- The Java class associated with type- Parameters:
type- the type of Feature Structures to include (including subtypes)- Returns:
- an unmodifiable, unordered set of all indexed (in this view) Feature Structures of the specified type (including subtypes)
-
streamNonEmptyIndexes
Stream instances of all of the non-empty indexes themselves- Parameters:
type- - the type to filter the indexes with- Returns:
- all of the non-empty indexes, one for each sorted or default bag per type
-
streamNonEmptyIndexes
-
getUpdatedFSs
-
getAddedFSs
-
getDeletedFSs
-
getReindexedFSs
-
isModified
public boolean isModified() -
toString
-
getAnnotationFsComparator
-
getAnnotationFsComparatorWithoutId
-
getIndexBySpec
public <T extends FeatureStructure> org.apache.uima.cas.impl.FsIndex_iicp<T> getIndexBySpec(int typeCode, int indexingStrategy, FSIndexComparatorImpl comp) Get the FsIndex_iicp for a given typeCode, indexingStrategy, and comparator (type ignored)- Type Parameters:
T- type of Feature Structure- Parameters:
typeCode- -indexingStrategy- -comp- -- Returns:
- -
-
getTypeSystemImpl
-
getCasImpl
-