Class Indexer2

  • All Implemented Interfaces:
    TagValueListener

    public class Indexer2
    extends java.lang.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(".");
     }
     
    Since:
    1.2
    Author:
    Matthew Pocock
    • Constructor Summary

      Constructors 
      Constructor Description
      Indexer2​(java.io.File file, IndexStore indexStore, Index2Model model)
      Build a new Indexer.
    • Method Summary

      All Methods Instance Methods Concrete Methods 
      Modifier and Type Method 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​(java.lang.Object tag)
      Start a new tag.
      void value​(TagValueContext ctxt, java.lang.Object value)
      A value has been seen.
      • Methods inherited from class java.lang.Object

        clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    • Constructor Detail

      • Indexer2

        public Indexer2​(java.io.File file,
                        IndexStore indexStore,
                        Index2Model model)
                 throws java.io.FileNotFoundException
        Build a new Indexer.
        Parameters:
        file - the file to be processed
        indexStore - the IndexStore to write to
        Throws:
        java.io.FileNotFoundException