2 * Copyright (C) 2005 The Mir-coders group
4 * This file is part of Mir.
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.
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.
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
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.
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;
36 import java.util.ArrayList;
37 import java.util.List;
42 * Container class for lists of Entities.
43 * Now implements @see mir.database.store.StorableObject.
46 * first version 27.6.1999
48 * @version 1.1 (cleaned up)
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;
59 logger = new LoggerWrapper("Entity.List");
62 public void setStorage(Database aStorage) {
66 public Database getStorage() {
70 public void setLimit(int aLimit) {
75 * Sets the WHERE clause that fetched the Entities of this EntityList from the database.
77 * @param wc The string that contains the WHERE clause
79 public void setWhere(String wc) {
80 this.whereClause = wc;
84 * Sets the sorting criterium of this EntityList
88 public void setOrder(String oc) {
89 this.orderClause = oc;
97 public void setOffset(int i) {
106 public int getOffset() {
111 * Sets the offset of the next batch of Entities.
113 * @param i The next offset
115 public void setNextBatch(int i) {
120 * Returns the offset of the next batch of Entities.
122 * @return offset of the next batch
124 public int getNextBatch() {
129 * Returns whether there is a next batch within the WHERE clause
131 * @return true if yes, false if no.
133 public boolean hasNextBatch() {
134 return (nextOffset >= 0);
138 * Inserts an Entity into the EntityList.
140 * @param anEntity The entity to be inserted.
143 public void add (Entity anEntity) {
145 entities.add(anEntity);
147 logger.warn("EntityList: add called with empty Entity");
152 * @return The number of Entities in the EntityList.
156 return entities.size();
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.
166 public Entity elementAt(int i) {
167 return (Entity) entities.get(i);
172 // Methods to implement StorableObject
174 public Set getNotifyOnReleaseSet() { return null; }
176 public StoreIdentifier getStoreIdentifier() {
177 if ( storage!=null ) {
180 this, StoreContainerType.STOC_TYPE_ENTITYLIST,
181 StoreUtil.getEntityListUniqueIdentifierFor( storage.getTableName(),
182 whereClause, orderClause, offset, limit ));
184 logger.warn("EntityList could not return StoreIdentifier");