merge media InputStream changes from MIR_1_0 branch
[mir.git] / source / mir / entity / EntityList.java
index bf41e8f..81e64fd 100755 (executable)
@@ -1,38 +1,65 @@
 /*
- * 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 {
@@ -40,12 +67,15 @@ public class EntityList implements TemplateListModel {
   }
 
        /**
-        * 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.
@@ -130,7 +160,7 @@ public class EntityList implements TemplateListModel {
 
        /**
         * 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);
@@ -183,7 +213,7 @@ public class EntityList implements TemplateListModel {
    * Inserts an Entity into the EntityList.
    * @param anEntity The entity to be inserted.
    */
-   
+
   public void add (Entity anEntity) {
     if (anEntity!=null)
         theEntityArrayList.add(anEntity);
@@ -195,7 +225,7 @@ public class EntityList implements TemplateListModel {
   /**
    * @return The number of Entities in the EntityList.
    */
-   
+
   public int size() {
     return theEntityArrayList.size();
   }
@@ -249,4 +279,20 @@ public class EntityList implements TemplateListModel {
     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;
+  }
+
 }