1/*- 2 * See the file LICENSE for redistribution information. 3 * 4 * Copyright (c) 2002,2008 Oracle. All rights reserved. 5 * 6 * $Id: KeySelector.java,v 1.1 2008/02/07 17:12:26 mark Exp $ 7 */ 8 9package com.sleepycat.persist; 10 11/** 12 * This is package-private to hide it until we implemented unsorted access. 13 * 14 * Implemented to select keys to be returned by an unsorted {@code 15 * ForwardCursor}. 16 * 17 * <p>The reason for implementing a selector, rather than filtering the objects 18 * returned by the {@link ForwardCursor}, is to improve performance when not 19 * all keys are to be processed. Keys are passed to this interface without 20 * retrieving record data or locking, so it is less expensive to return false 21 * from this method than to retrieve the object from the cursor.</p> 22 * 23 * see EntityIndex#unsortedKeys 24 * see EntityIndex#unsortedEntities 25 * 26 * @author Mark Hayes 27 */ 28interface KeySelector<K> { 29 30 /** 31 * Returns whether a given key should be returned via the cursor. 32 * 33 * <p>This method should not assume that the given key is for a committed 34 * record or not, nor should it assume that the key will be returned via 35 * the cursor if this method returns true. The record for this key will 36 * not be locked until this method returns. If, when the record is locked, 37 * the record is found to be uncommitted or deleted, the key will not be 38 * returned via the cursor.</p> 39 */ 40 boolean selectKey(K key); 41} 42