/*
- * The former (German) documentation of this classe
- * stated that this class is an abstract one. There is,
- * however, not a single abstract method in this class.
+ * Copyright (C) 2001, 2002 The Mir-coders group
+ *
+ * This file is part of Mir.
+ *
+ * Mir is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * Mir is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with Mir; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ *
+ * In addition, as a special exception, The Mir-coders gives permission to link
+ * the code of this program with the com.oreilly.servlet library, any library
+ * licensed under the Apache Software License, The Sun (tm) Java Advanced
+ * Imaging library (JAI), The Sun JIMI library (or with modified versions of
+ * the above that use the same license as the above), and distribute linked
+ * combinations including the two. You must obey the GNU General Public
+ * License in all respects for all of the code used other than the above
+ * mentioned libraries. If you modify this file, you may extend this exception
+ * to your version of the file, but you are not obligated to do so. If you do
+ * not wish to do so, delete this exception statement from your version.
*/
-
package mir.entity;
-import java.lang.*;
-import java.util.*;
-
-import freemarker.template.*;
+import java.lang.*;
+import java.util.*;
-import mir.misc.*;
+import freemarker.template.*;
+import mir.misc.*;
+import mir.storage.*;
+import mir.storage.store.*;
/**
*
* Container class for lists of Entities.
+ * Now implements freemarker.template.TemplateListModel
+ * and @see mir.storage.store.StorableObject.
*
* @author <RK>
- * @version 27.6.1999
+ * first version 27.6.1999
+ *
+ * @version 1.0 (freemarker compliant & and storable in ObjectStore)
*/
-public class EntityList implements TemplateListModel {
+public class EntityList implements TemplateListModel, StorableObject {
- private static Logfile theLog;
- private ArrayList theEntityArrayList;
- private String whereClause;
- private String orderClause;
- private int count;
- private int offset;
- private int offsetnext = -1;
- private int offsetprev = -1;
- private int freemarkerListPointer=-1;
+ private static Logfile theLog;
+ private ArrayList theEntityArrayList = new ArrayList();
+ private String whereClause, orderClause;
+ private StorageObject theStorage;
+ private int count, offset, limit;
+ private int offsetnext = -1, offsetprev = -1;
+ private int freemarkerListPointer=-1;
static {
}
/**
- * Constructor. Creates an empty EntityList
+ * Constructor.
*/
- public EntityList(){
- this.theEntityArrayList = new ArrayList();
- }
+ public EntityList(){ }
+ /* get/set EntityClass of Objects stored in EntityList */
+ public void setStorage(StorageObject storage) { this.theStorage=storage; }
+ public StorageObject getStorage() { return theStorage; }
+
+ public void setLimit(int limit) { this.limit = limit; }
/**
* Sets the WHERE clause that fetched the Entities of this EntityList from the database.
/**
* Returns whether there is a next batch within the WHERE clause
- * @return true if yes, false if no.
+ * @return true if yes, false if no.
*/
public boolean hasNextBatch() {
return (offsetnext >= 0);
* Inserts an Entity into the EntityList.
* @param anEntity The entity to be inserted.
*/
-
+
public void add (Entity anEntity) {
if (anEntity!=null)
theEntityArrayList.add(anEntity);
/**
* @return The number of Entities in the EntityList.
*/
-
+
public int size() {
return theEntityArrayList.size();
}
else return false;
}
+
+ // Methods to implement StorableObject
+
+ public Set getNotifyOnReleaseSet() { return null; }
+
+ public StoreIdentifier getStoreIdentifier() {
+ if ( theStorage!=null ) {
+ return
+ new StoreIdentifier( this, StoreContainerType.STOC_TYPE_ENTITYLIST,
+ StoreUtil.getEntityListUniqueIdentifierFor( theStorage.getTableName(),
+ whereClause, orderClause, offset, limit ));
+ }
+ theLog.printWarning("EntityList could not return StoreIdentifier");
+ return null;
+ }
+
}