jai removed from license part 1
[mir.git] / source / mir / entity / EntityList.java
1 /*
2  * Copyright (C) 2005 The Mir-coders group
3  *
4  * This file is part of Mir.
5  *
6  * Mir is free software; you can redistribute it and/or modify
7  * it under the terms of the GNU General Public License as published by
8  * the Free Software Foundation; either version 2 of the License, or
9  * (at your option) any later version.
10  *
11  * Mir is distributed in the hope that it will be useful,
12  * but WITHOUT ANY WARRANTY; without even the implied warranty of
13  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
14  * GNU General Public License for more details.
15  *
16  * You should have received a copy of the GNU General Public License
17  * along with Mir; if not, write to the Free Software
18  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
19  *
20  * In addition, as a special exception, The Mir-coders gives permission to link
21  * the code of this program with  any library licensed under the Apache Software License.
22  * You must obey the GNU General Public License in all respects for all of the code used
23  * other than the above mentioned libraries.  If you modify this file, you may extend this
24  * exception to your version of the file, but you are not obligated to do so.
25  * If you do not wish to do so, delete this exception statement from your version.
26  */
27 package mir.entity;
28
29 import mir.log.LoggerWrapper;
30 import mir.storage.Database;
31 import mir.storage.store.StorableObject;
32 import mir.storage.store.StoreContainerType;
33 import mir.storage.store.StoreIdentifier;
34 import mir.storage.store.StoreUtil;
35
36 import java.util.ArrayList;
37 import java.util.List;
38 import java.util.Set;
39
40 /**
41  *
42  * Container class for lists of Entities.
43  * Now implements @see mir.database.store.StorableObject.
44  *
45  * @author rk
46  * first version        27.6.1999
47  *
48  * @version 1.1 (cleaned up)
49  */
50 public class EntityList implements StorableObject {
51   protected LoggerWrapper logger;
52   private List                entities = new ArrayList();
53   private String              whereClause, orderClause;
54   private Database            storage;
55   private int                 offset, limit;
56   private int                 nextOffset = -1;
57
58   public EntityList(){
59     logger = new LoggerWrapper("Entity.List");
60   }
61
62   public void setStorage(Database aStorage) {
63     storage=aStorage;
64   }
65
66   public Database getStorage() {
67     return storage;
68   }
69
70   public void setLimit(int aLimit) {
71     limit = aLimit;
72   }
73
74   /**
75    * Sets the WHERE clause that fetched the Entities of this EntityList from the database.
76    *
77    * @param wc The string that contains the WHERE clause
78    */
79   public void setWhere(String wc) {
80     this.whereClause = wc;
81   }
82
83   /**
84    * Sets the sorting criterium of this EntityList
85    *
86    * @param oc
87    */
88   public void setOrder(String oc) {
89     this.orderClause = oc;
90   }
91
92   /**
93    * Sets the offset
94    *
95    * @param i The offset
96    */
97   public void setOffset(int i) {
98     offset = i;
99   }
100
101   /**
102    * Returns the offset
103    *
104    * @return offset
105    */
106   public int getOffset() {
107     return offset;
108   }
109
110   /**
111    * Sets the offset of the next batch of Entities.
112    *
113    * @param i The next offset
114    */
115   public void setNextBatch(int i) {
116     nextOffset = i;
117   }
118
119   /**
120    * Returns the offset of the next batch of Entities.
121    *
122    * @return offset of the next batch
123    */
124   public int getNextBatch() {
125     return nextOffset;
126   }
127
128   /**
129    * Returns whether there is a next batch within the WHERE clause
130    *
131    * @return true if yes, false if no.
132    */
133   public boolean hasNextBatch() {
134     return (nextOffset >= 0);
135   }
136
137   /**
138    * Inserts an Entity into the EntityList.
139    *
140    * @param anEntity The entity to be inserted.
141    */
142
143   public void add (Entity anEntity) {
144     if (anEntity!=null)
145       entities.add(anEntity);
146     else
147       logger.warn("EntityList: add called with empty Entity");
148   }
149
150
151   /**
152    * @return The number of Entities in the EntityList.
153    */
154
155   public int size() {
156     return entities.size();
157   }
158
159
160   /**
161    * Returns the element at position i in the EntityList as Entity
162    * @param i the position of the element in question
163    * @return The element at position i.
164    */
165
166   public Entity elementAt(int i) {
167     return (Entity) entities.get(i);
168   }
169
170
171
172 // Methods to implement StorableObject
173
174   public Set getNotifyOnReleaseSet() { return null; }
175
176   public StoreIdentifier getStoreIdentifier() {
177     if ( storage!=null ) {
178       return
179         new StoreIdentifier(
180                 this, StoreContainerType.STOC_TYPE_ENTITYLIST,
181                 StoreUtil.getEntityListUniqueIdentifierFor( storage.getTableName(),
182                 whereClause, orderClause, offset, limit ));
183     }
184                 logger.warn("EntityList could not return StoreIdentifier");
185                 
186                 return null;
187   }
188
189 }