public class Indexer2 extends Object implements TagValueListener
Listens to tag-value events and passes on indexing events to an IndexStore. This is an update to Indexer that understands that indexed properties may not be at the top level.
This class is provided to allow the indexing of arbitrary record-based text files. Indexer objects are built for a single file and the indexes are written to a single index store. To keep all of the reader offsets in sync with one another, you will almost certainly wish to use the getReader() method to retrieve a CountedBufferedReader instance if you want to read the byte-offset between calls to Parser.read(). Below is an example of how to index a file.
File fileToIndex; // get this from somewhere // don't forget to register all the apropreate keys to the factory first. BioIndexStore indexStore = bioIndxStrFact.createBioStore(); Indexer indexer = new Indexer(fileToIndex, indexStore); indexer.setPrimaryKeyName("foo", new String[] { "foo" }); indexer.addSecondaryKey("bar", new String[] { "x", "y", "bar"}); indexer.addSecondaryKey("baz", new String[] { "z" }); TagValueParser tvParser; // make this appropriate for your format TagValueListener listener; // make this appropriate for your format // and forward all events to indexer Parser parser = new Parser(); while( parser.read(indexer.getReader(), tvParser, listener) ) { System.out.print("."); }
Constructor and Description |
---|
Indexer2(File file,
IndexStore indexStore,
Index2Model model)
Build a new Indexer.
|
Modifier and Type | Method and Description |
---|---|
void |
endRecord()
The current record has ended.
|
void |
endTag()
End the current tag.
|
CountedBufferedReader |
getReader()
Retrieve the reader that can be safely used to index this file.
|
void |
startRecord()
A new record is about to start.
|
void |
startTag(Object tag)
Start a new tag.
|
void |
value(TagValueContext ctxt,
Object value)
A value has been seen.
|
public Indexer2(File file, IndexStore indexStore, Index2Model model) throws FileNotFoundException
file
- the file to be processedindexStore
- the IndexStore to write toFileNotFoundException
public CountedBufferedReader getReader()
public void startRecord()
TagValueListener
startRecord
in interface TagValueListener
public void startTag(Object tag)
TagValueListener
startTag
in interface TagValueListener
tag
- the Object representing the new tagpublic void value(TagValueContext ctxt, Object value)
TagValueListener
value
in interface TagValueListener
ctxt
- a TagValueContext that could be used to push a sub-documentvalue
- the value Object observedpublic void endTag()
TagValueListener
endTag
in interface TagValueListener
public void endRecord() throws ParserException
TagValueListener
endRecord
in interface TagValueListener
ParserException
- if the record can not be endedCopyright © 2020 BioJava. All rights reserved.