KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > com > Yasna > forum > database > DbCategoryIterator


1 /**
2  * Copyright (C) 2001 Yasna.com. All rights reserved.
3  *
4  * ===================================================================
5  * The Apache Software License, Version 1.1
6  *
7  * Redistribution and use in source and binary forms, with or without
8  * modification, are permitted provided that the following conditions
9  * are met:
10  *
11  * 1. Redistributions of source code must retain the above copyright
12  * notice, this list of conditions and the following disclaimer.
13  *
14  * 2. Redistributions in binary form must reproduce the above copyright
15  * notice, this list of conditions and the following disclaimer in
16  * the documentation and/or other materials provided with the
17  * distribution.
18  *
19  * 3. The end-user documentation included with the redistribution,
20  * if any, must include the following acknowledgment:
21  * "This product includes software developed by
22  * Yasna.com (http://www.yasna.com)."
23  * Alternately, this acknowledgment may appear in the software itself,
24  * if and wherever such third-party acknowledgments normally appear.
25  *
26  * 4. The names "Yazd" and "Yasna.com" must not be used to
27  * endorse or promote products derived from this software without
28  * prior written permission. For written permission, please
29  * contact yazd@yasna.com.
30  *
31  * 5. Products derived from this software may not be called "Yazd",
32  * nor may "Yazd" appear in their name, without prior written
33  * permission of Yasna.com.
34  *
35  * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
36  * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
37  * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
38  * DISCLAIMED. IN NO EVENT SHALL YASNA.COM OR
39  * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
40  * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
41  * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
42  * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
43  * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
44  * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
45  * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
46  * SUCH DAMAGE.
47  * ====================================================================
48  *
49  * This software consists of voluntary contributions made by many
50  * individuals on behalf of Yasna.com. For more information
51  * on Yasna.com, please see <http://www.yasna.com>.
52  */

53
54 package com.Yasna.forum.database;
55
56 import com.Yasna.forum.*;
57 import com.Yasna.util.*;
58 import java.util.*;
59 //JDK1.1// import com.sun.java.util.collections.*;
60
import java.sql.*;
61
62 /**
63  * Iterator for all category defined for a ForumFactory instance.
64  */

65 public class DbCategoryIterator implements Iterator, ListIterator {
66
67     /** DATABASE QUERIES **/
68     private static final String JavaDoc GET_CATEGORIES = "SELECT categoryID FROM yazdCategory ORDER BY catorder DESC";
69
70     private ForumFactory factory;
71     private int [] categories;
72     //The current index points to
73
int currentIndex = -1;
74
75     protected DbCategoryIterator(ForumFactory factory) {
76         this.factory = factory;
77         ArrayList allCategories = new ArrayList();
78         Connection con = null;
79         PreparedStatement pstmt = null;
80         try {
81             con = DbConnectionManager.getConnection();
82             pstmt = con.prepareStatement(GET_CATEGORIES);
83             ResultSet rs = pstmt.executeQuery();
84             while (rs.next()) {
85                 allCategories.add(new Integer JavaDoc(rs.getInt("categoryID")));
86             }
87         }
88         catch( SQLException sqle ) {
89             System.err.println("Error in DbCategoryFactoryIterator:constructor()-" + sqle);
90         }
91         finally {
92             try { pstmt.close(); }
93             catch (Exception JavaDoc e) { e.printStackTrace(); }
94             try { con.close(); }
95             catch (Exception JavaDoc e) { e.printStackTrace(); }
96         }
97         //Now, put in array
98
categories = new int[allCategories.size()];
99         for (int i=0; i<categories.length; i++) {
100             categories[i] = ((Integer JavaDoc)allCategories.get(i)).intValue();
101         }
102     }
103
104     /**
105      * Returns true if there are more categories left to iteratate through.
106      */

107     public boolean hasNext() {
108         return (currentIndex+1 < categories.length);
109     }
110
111     /**
112      * Returns the next Category.
113      */

114     public Object JavaDoc next() throws java.util.NoSuchElementException JavaDoc {
115         Category category = null;
116         currentIndex++;
117         if (currentIndex >= categories.length) {
118             throw new java.util.NoSuchElementException JavaDoc();
119         }
120         try {
121             category = factory.getCategory(categories[currentIndex]);
122         }
123         catch (Exception JavaDoc e) {
124             e.printStackTrace();
125         }
126         return category;
127     }
128
129
130     public void remove() {
131         throw new UnsupportedOperationException JavaDoc();
132     }
133
134     public void add(Object JavaDoc o) throws UnsupportedOperationException JavaDoc {
135         throw new UnsupportedOperationException JavaDoc();
136     }
137
138     public boolean hasPrevious() {
139         return (currentIndex > 0);
140     }
141
142     public int nextIndex() {
143         return currentIndex+1;
144     }
145
146     public Object JavaDoc previous() throws java.util.NoSuchElementException JavaDoc {
147         Category category = null;
148         currentIndex--;
149         if (currentIndex < 0) {
150             currentIndex++;
151             throw new java.util.NoSuchElementException JavaDoc();
152         }
153         try {
154             category = factory.getCategory(categories[currentIndex]);
155         }
156         catch (Exception JavaDoc e) {
157             e.printStackTrace();
158         }
159         return category;
160     }
161
162     public int previousIndex() {
163         return currentIndex-1;
164     }
165
166     public void set(Object JavaDoc o) throws UnsupportedOperationException JavaDoc {
167         throw new UnsupportedOperationException JavaDoc();
168     }
169 }
170
Popular Tags