public List < Data > select ( byte [ ] ... keys ) throws DRUMSException { List < Data > result = new ArrayList < Data > ( ) ; IntObjectOpenHashMap < ArrayList < byte [ ] > > bucketKeyMapping = getBucketKeyMapping ( keys ) ; String filename ; for ( IntObjectCursor < ArrayList < byte [ ] > > entry : bucketKeyMapping ) { filename = gp . DATABASE_DIRECTORY + "/" + hashFunction . getFilename ( entry . key ) ; HeaderIndexFile < Data > indexFile = null ; try { indexFile = new HeaderIndexFile < Data > ( filename , HeaderIndexFile . AccessMode . READ_ONLY , gp . HEADER_FILE_LOCK_RETRY , gp ) ; ArrayList < byte [ ] > keyList = entry . value ; result . addAll ( searchForData ( indexFile , keyList . toArray ( new byte [ keyList . size ( ) ] [ ] ) ) ) ; } catch ( FileLockException ex ) { logger . error ( "Could not access the file {} within {} retries. The file seems to be locked." , filename , gp . HEADER_FILE_LOCK_RETRY ) ; throw new DRUMSException ( ex ) ; } catch ( IOException ex ) { logger . error ( "An exception occurred while trying to get objects from the file {}." , filename , ex ) ; throw new DRUMSException ( ex ) ; } finally { if ( indexFile != null ) { indexFile . close ( ) ; } } } return result ; }
Selects all existing records to the keys in the given array .