01: /*
02: * Copyright (c) 2004-2005, Hewlett-Packard Company and Massachusetts
03: * Institute of Technology. All rights reserved.
04: *
05: * Redistribution and use in source and binary forms, with or without
06: * modification, are permitted provided that the following conditions are
07: * met:
08: *
09: * - Redistributions of source code must retain the above copyright
10: * notice, this list of conditions and the following disclaimer.
11: *
12: * - Redistributions in binary form must reproduce the above copyright
13: * notice, this list of conditions and the following disclaimer in the
14: * documentation and/or other materials provided with the distribution.
15: *
16: * - Neither the name of the Hewlett-Packard Company nor the name of the
17: * Massachusetts Institute of Technology nor the names of their
18: * contributors may be used to endorse or promote products derived from
19: * this software without specific prior written permission.
20: *
21: * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
22: * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
23: * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
24: * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
25: * HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
26: * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
27: * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
28: * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
29: * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR
30: * TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE
31: * USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH
32: * DAMAGE.
33: */
34: package org.dspace.checker;
35:
36: /**
37: * <p>
38: * BitstreamDispatchers are strategy objects that hand bitstream ids out to
39: * workers. Implementations must be threadsafe.
40: * </p>
41: *
42: * <p>
43: * The rationale behind the use of the Sentinel pattern (rather than the more
44: * traditional iterator pattern or a cursor c.f. java.sql.ResultSet): -
45: * </p>
46: * <ol>
47: * <li>To make it easy to make implementations thread safe - multithreaded
48: * invocation of the dispatchers is seen as a next step use case. In simple
49: * terms, this requires that a single method does all the work.</li>
50: * <li>Shouldn't an exception as the sentinel, as reaching the end of a loop is
51: * not an exceptional condition.</li>
52: * </ol>
53: *
54: *
55: * @author Jim Downing
56: * @author Grace Carpenter
57: * @author Nathan Sarr
58: *
59: */
60: public interface BitstreamDispatcher {
61: /**
62: * This value should be returned by <code>next()</code> to indicate that
63: * there are no more values.
64: */
65: public static int SENTINEL = -1;
66:
67: /**
68: * Returns the next id for checking, or a sentinel value if there are no
69: * more to check.
70: *
71: * @return the next bitstream id, or BitstreamDispatcher.SENTINEL if there
72: * isn't another value
73: *
74: */
75: public int next();
76: }
|