1.1 restoration
[mir.git] / source / mir / module / AbstractModule.java
index a010a85..aea424b 100755 (executable)
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2001, 2002  The Mir-coders group
+ * Copyright (C) 2001, 2002 The Mir-coders group
  *
  * This file is part of Mir.
  *
  * 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.
+ * the code of this program with  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.module;
 
+import java.util.Map;
 import java.sql.SQLException;
-import java.util.HashMap;
-
-import freemarker.template.SimpleHash;
 
 import mir.entity.Entity;
 import mir.entity.EntityList;
 import mir.storage.StorageObject;
-import mir.storage.StorageObjectExc;
-import mir.storage.StorageObjectFailure;
 
 
 /**
@@ -56,121 +50,78 @@ import mir.storage.StorageObjectFailure;
  */
 
 public class AbstractModule {
-  protected StorageObject theStorage;
+  protected StorageObject storage;
 
-  public void setStorage(StorageObject storage) {
-    this.theStorage = storage;
+  public AbstractModule(StorageObject aStorageObject) {
+    storage = aStorageObject;
   }
 
   /**
-   * Liefert das Standard-StorageObject zur?ck, mit dem das Module assoziiert ist.
-   * @return Standard-StorageObject
+   * Returns the storage object associated with this module
    */
   public StorageObject getStorageObject () {
-    return theStorage;
+    return storage;
   }
 
-  /**
-   *   Holt eine Entity anhand der Id via StorageObject
-   *   @param String der Entity
-   *   @return Entity
-   */
-  public Entity getById (String id) throws ModuleException {
+  public Entity getById (String id) throws ModuleExc, ModuleFailure {
     try {
-      if (theStorage == null)
-        throw  new ModuleException("No StorageObject set!");
-      Entity entity = (Entity)theStorage.selectById(id);
+      if (storage == null)
+        throw  new ModuleExc("AbstractModule.getById: No StorageObject set!");
+      Entity entity = storage.selectById(id);
+
       if (entity == null)
-        throw new ModuleException("No object for id = " + id);
-      else return entity;
+        throw new ModuleExc("AbstractModule.getById: No object for id = " + id);
+      else
+        return entity;
     }
-    catch (StorageObjectExc e){
-      throw new ModuleException(e.toString());
+    catch (Throwable e) {
+      throw new ModuleFailure(e);
     }
   }
 
-  /**
-   *   Holt eine EntityListe anhand des WhereClause via StorageObject
-   *   @param String whereclause
-   *   @param offset - ab welchem Datensatz die gematchten Entities zurueckgeliefert werden
-   *   @return EntityList Liste der gematchten Datens?tze
-   */
-  public EntityList getByWhereClause (String whereClause, int offset) throws ModuleException {
+  public EntityList getByWhereClause (String whereClause, int offset) throws ModuleExc, ModuleFailure {
     try {
-      if (theStorage == null)
-        throw  new ModuleException("Kein StorageObject gesetzt");
-      return theStorage.selectByWhereClause(whereClause, offset);
-    }
-    catch (StorageObjectFailure e){
-      throw new ModuleException(e.toString());
-    }
-  }
+      if (storage == null)
+        throw  new ModuleExc("AbstractModule.getByWhereClause: No StorageObject set!");
 
-  /**
-   *   Holt eine EntityListe anhand des WhereClause aus dem StorageObject
-   *   @param String where WhereClause
-   *   @param String order Sortierreihenfolge
-   *   @param offset - ab welchem Datensatz die gematchten Entities zurueckgeliefert werden
-   *   @return EntityList Liste der gematchten Datens?tze
-   */
-  public EntityList getByWhereClause (String where, String order, int offset) throws ModuleException {
-    try {
-      if (theStorage==null) throw new ModuleException("Kein StorageObject gesetzt");
-      return theStorage.selectByWhereClause(where, order, offset);
+      return storage.selectByWhereClause(whereClause, offset);
     }
-    catch (StorageObjectFailure e){
-      throw new ModuleException(e.toString());
+    catch (Throwable e) {
+      throw new ModuleFailure(e);
     }
   }
+
   /**
-   *   Executes a where clause on the StorageObject with order criteria
-   *   fetching from offset the number of limit objects
-   *
-   *   @param String where
-   *   @param String order
-   *   @param int offset
-   *   @param int limit
-   *   @return EntityList
+   *    * Standardfunktion, um einen Datensatz via StorageObject einzuf?gen
+   * @param theValues Hash mit Spalte/Wert-Paaren
+   * @return Id des eingef?gten Objekts
+   * @exception ModuleExc
+   * @exception ModuleFailure
    */
-
-  public EntityList getByWhereClause(String where, String order, int offset, int limit) throws ModuleException
-  {
+  public String add (Map theValues) throws ModuleExc, ModuleFailure {
     try {
-      if (theStorage==null) throw new ModuleException("StorageObject not set!");
-      return theStorage.selectByWhereClause(where, order, offset, limit);
+      Entity theEntity = (Entity)storage.getEntityClass().newInstance();
+      theEntity.setStorage(storage);
+      theEntity.setFieldValues(theValues);
+      return theEntity.insert();
     }
-    catch (StorageObjectFailure e){
-      throw new ModuleException(e.toString());
+    catch (Throwable e) {
+      throw new ModuleFailure(e);
     }
   }
 
   /**
-   *   Holt eine EntityListe anhand des Wertes aValue von Feld aField aus dem StorageObject
-   *   @param String aField - Feldname im StorageObject
-   *   @param String aValue - Wert in Feld im StorageObject
-   *   @param offset - ab welchem Datensatz die gematchten Entities zurueckgeliefert werden
-   *   @return EntityList Liste der gematchten Datens?tze
+   * This function creates an Entity without yet storing it in the database
    */
-  public EntityList getByFieldValue (String aField, String aValue, int offset) throws ModuleException {
-    String whereClause;
-    whereClause = aField + " like '%" + aValue + "%'";
-    return getByWhereClause(whereClause, offset);
-  }
-
-  /**
-   * Standardfunktion, um einen Datensatz via StorageObject einzuf?gen
-   * @param theValues Hash mit Spalte/Wert-Paaren
-   * @return Id des eingef?gten Objekts
-   * @exception ModuleException
-   */
-  public String add (HashMap theValues) throws ModuleException {
+  public Entity createNew() throws ModuleExc, ModuleFailure {
     try {
-      Entity theEntity = (Entity)theStorage.getEntityClass().newInstance();
-      theEntity.setStorage(theStorage);
-      theEntity.setValues(theValues);
-      return theEntity.insert();
-    } catch (Exception e) {
-      throw new ModuleException(e.toString());
+      Entity result = (Entity)storage.getEntityClass().newInstance();
+      result.setStorage(storage);
+
+      return result;
+    }
+    catch (Throwable e) {
+      throw new ModuleFailure(e);
     }
   }
 
@@ -178,49 +129,48 @@ public class AbstractModule {
    * Standardfunktion, um einen Datensatz via StorageObject zu aktualisieren
    * @param theValues Hash mit Spalte/Wert-Paaren
    * @return Id des eingef?gten Objekts
-   * @exception ModuleException
+   * @exception ModuleExc
+   * @exception ModuleFailure
    */
-  public String set (HashMap theValues) throws ModuleException {
+  public String set (Map theValues) throws ModuleExc, ModuleFailure {
     try {
-      Entity theEntity = theStorage.selectById((String)theValues.get("id"));
+      Entity theEntity = storage.selectById((String)theValues.get("id"));
       if (theEntity == null)
-        throw new ModuleException("Kein Objekt mit id in Datenbank id: " + theValues.get("id"));
-      theEntity.setValues(theValues);
+        throw new ModuleExc("No object found with id " + theValues.get("id"));
+      theEntity.setFieldValues(theValues);
       theEntity.update();
       return theEntity.getId();
     }
-    catch (StorageObjectExc e){
-      throw new ModuleException(e.toString());
+    catch (Throwable e) {
+      throw new ModuleFailure(e);
     }
   }
 
   /**
    * Deletes a record using an id
    * @param idParam
-   * @exception ModuleException
+   * @exception ModuleExc
+   * @exception ModuleFailure
    */
-  public void deleteById (String idParam) throws ModuleException {
+  public void deleteById (String idParam) throws ModuleExc, ModuleFailure {
     try {
-      theStorage.delete(idParam);
-    } catch (StorageObjectFailure e){
-      throw new ModuleException(e.toString());
+      storage.delete(idParam);
+    }
+    catch (Throwable e) {
+      throw new ModuleFailure(e);
     }
-  }
-
-  /**
-   * Liefert den Lookuptable aller Objekte des StorageObjects
-   * @return freemarker.template.SimpleHash
-   */
-  public SimpleHash getHashData() {
-    return theStorage.getHashData();
   }
 
   /**
    * returns the number of rows
    */
-  public int getSize(String where)
-      throws SQLException,StorageObjectFailure {
-    return theStorage.getSize(where);
+  public int getSize(String where) throws ModuleExc, ModuleFailure {
+    try {
+      return storage.getSize(where);
+    }
+    catch (SQLException e) {
+      throw new ModuleFailure("Can't retrieve number of entities: " + e.toString(), e);
+    }
   }
 
 }