X-Git-Url: http://erislabs.net/gitweb/?a=blobdiff_plain;f=source%2Fmir%2Fmodule%2FAbstractModule.java;h=d65dd2b331c920ad328463e71549c709a002dda0;hb=42680c1f9fe3250bcbd0f9ed5d9dee6188333b15;hp=0a70fca26178405a7de356ad62c4d3be2ea61cc6;hpb=73c423d3e1b4f3300b84c1a51d6f798adfdfd228;p=mir.git diff --git a/source/mir/module/AbstractModule.java b/source/mir/module/AbstractModule.java index 0a70fca2..d65dd2b3 100755 --- a/source/mir/module/AbstractModule.java +++ b/source/mir/module/AbstractModule.java @@ -1,5 +1,5 @@ /* - * Copyright (C) 2001, 2002 The Mir-coders group + * Copyright (C) 2001-2006 The Mir-coders group * * This file is part of Mir. * @@ -18,30 +18,22 @@ * 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, + * 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.sql.SQLException; -import java.util.Map; - -import freemarker.template.SimpleHash; - import mir.entity.Entity; import mir.entity.EntityList; -import mir.storage.StorageObject; -import mir.storage.StorageObjectExc; -import mir.storage.StorageObjectFailure; +import mir.storage.Database; +import mir.storage.DatabaseExc; +import java.util.Map; /** * This class provides the base functionality for the derived Module-Classes. @@ -56,172 +48,88 @@ import mir.storage.StorageObjectFailure; */ public class AbstractModule { - protected StorageObject theStorage; + protected Database database; - public void setStorage(StorageObject storage) { - this.theStorage = storage; + public AbstractModule(Database aDatabase) { + database = aDatabase; } /** - * Liefert das Standard-StorageObject zur?ck, mit dem das Module assoziiert ist. - * @return Standard-StorageObject + * Returns the database object associated with this module */ - public StorageObject getStorageObject () { - return theStorage; + public Database getStorageObject () { + return database; } - /** - * Holt eine Entity anhand der Id via StorageObject - * @param String der Entity - * @return Entity - */ - public Entity getById (String id) throws ModuleException { - try { - if (theStorage == null) - throw new ModuleException("No StorageObject set!"); - Entity entity = (Entity)theStorage.selectById(id); - if (entity == null) - throw new ModuleException("No object for id = " + id); - else return entity; - } - catch (StorageObjectExc e){ - throw new ModuleException(e.toString()); - } - } + public Entity getById (String anId) throws ModuleFailure, EntityNotFoundExc { + if (database == null) { + throw new ModuleFailure("AbstractModule.getById: No Database set!"); + } - /** - * 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 { - try { - if (theStorage == null) - throw new ModuleException("Kein StorageObject gesetzt"); - return theStorage.selectByWhereClause(whereClause, offset); - } - catch (StorageObjectFailure e){ - throw new ModuleException(e.toString()); - } - } + try { + Entity result = database.selectById(anId); - /** - * 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); - } - catch (StorageObjectFailure e){ - throw new ModuleException(e.toString()); - } + if (result == null) { + throw new EntityNotFoundExc("AbstractModule.getById: No object for id = " + anId); + } + + return result; + } + catch (DatabaseExc e) { + throw new ModuleFailure("Database exception while retrieving entity with id " + anId); + } } - /** - * 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 - */ - public EntityList getByWhereClause(String where, String order, int offset, int limit) throws ModuleException - { + public EntityList getByWhereClause (String whereClause, int offset) throws ModuleExc, ModuleFailure { try { - if (theStorage==null) throw new ModuleException("StorageObject not set!"); - return theStorage.selectByWhereClause(where, order, offset, limit); + if (database == null) + throw new ModuleExc("AbstractModule.getByWhereClause: No Database set!"); + + return database.selectByWhereClause(whereClause, offset); } - 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 - */ - 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 (Map theValues) throws ModuleException { + public String add(Map theValues) throws ModuleExc, ModuleFailure { try { - Entity theEntity = (Entity)theStorage.getEntityClass().newInstance(); - theEntity.setStorage(theStorage); - theEntity.setValues(theValues); - return theEntity.insert(); + Entity entity = database.createNewEntity(); + entity.setFieldValues(theValues); + + return entity.insert(); } - catch (Exception e) { - throw new ModuleException(e.toString()); + catch (Throwable e) { + throw new ModuleFailure(e); } } - /** - * Standardfunktion, um einen Datensatz via StorageObject zu aktualisieren - * @param theValues Hash mit Spalte/Wert-Paaren - * @return Id des eingef?gten Objekts - * @exception ModuleException - */ - public String set (Map theValues) throws ModuleException { + public String set (Map theValues) throws ModuleExc, ModuleFailure { try { - Entity theEntity = theStorage.selectById((String)theValues.get("id")); + Entity theEntity = database.selectById((String) theValues.get("id")); if (theEntity == null) - throw new ModuleException("No object found with 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()); + database.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); - } - }