KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > dspace > content > ItemIterator


1 /*
2  * ItemIterator.java
3  *
4  * Version: $Revision: 1.6 $
5  *
6  * Date: $Date: 2005/04/20 14:22:32 $
7  *
8  * Copyright (c) 2002-2005, Hewlett-Packard Company and Massachusetts
9  * Institute of Technology. All rights reserved.
10  *
11  * Redistribution and use in source and binary forms, with or without
12  * modification, are permitted provided that the following conditions are
13  * met:
14  *
15  * - Redistributions of source code must retain the above copyright
16  * notice, this list of conditions and the following disclaimer.
17  *
18  * - Redistributions in binary form must reproduce the above copyright
19  * notice, this list of conditions and the following disclaimer in the
20  * documentation and/or other materials provided with the distribution.
21  *
22  * - Neither the name of the Hewlett-Packard Company nor the name of the
23  * Massachusetts Institute of Technology nor the names of their
24  * contributors may be used to endorse or promote products derived from
25  * this software without specific prior written permission.
26  *
27  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
28  * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
29  * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
30  * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
31  * HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
32  * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
33  * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
34  * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
35  * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR
36  * TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE
37  * USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH
38  * DAMAGE.
39  */

40 package org.dspace.content;
41
42 import java.sql.SQLException JavaDoc;
43
44 import org.dspace.core.Context;
45 import org.dspace.storage.rdbms.TableRow;
46 import org.dspace.storage.rdbms.TableRowIterator;
47
48 /**
49  * Specialized iterator for DSpace Items. This iterator is used for loading
50  * items into memory one by one, since in many cases, it would not make sense to
51  * load a set of items into memory all at once. For example, loading in an
52  * entire community or site's worth of items wouldn't make sense.
53  *
54  * @author Robert Tansley
55  * @version $Revision: 1.6 $
56  */

57 public class ItemIterator
58 {
59     /*
60      * This class basically wraps a TableRowIterator.
61      */

62
63     /** Our context */
64     private Context ourContext;
65
66     /** The table row iterator of Item rows */
67     private TableRowIterator itemRows;
68
69     /**
70      * Construct an item iterator. This is not a public method, since this
71      * iterator is only created by CM API methods.
72      *
73      * @param context
74      * our context
75      * @param rows
76      * the rows that correspond to the Items to be iterated over
77      */

78     ItemIterator(Context context, TableRowIterator rows)
79     {
80         ourContext = context;
81         itemRows = rows;
82     }
83
84     /**
85      * Find out if there are any more items to iterate over
86      *
87      * @return <code>true</code> if there are more items
88      */

89     public boolean hasNext() throws SQLException JavaDoc
90     {
91         return itemRows.hasNext();
92     }
93
94     /**
95      * Get the next item in the iterator. Returns <code>null</code> if there
96      * are no more items.
97      *
98      * @return the next item, or <code>null</code>
99      */

100     public Item next() throws SQLException JavaDoc
101     {
102         if (itemRows.hasNext())
103         {
104             // Convert the row into an Item object
105
TableRow row = itemRows.next();
106
107             // Check cache
108
Item fromCache = (Item) ourContext.fromCache(Item.class, row
109                     .getIntColumn("item_id"));
110
111             if (fromCache != null)
112             {
113                 return fromCache;
114             }
115             else
116             {
117                 return new Item(ourContext, row);
118             }
119         }
120         else
121         {
122             return null;
123         }
124     }
125 }
126
Popular Tags