Class AbstractDBObject

All Implemented Interfaces:
GenericObject, Changeable, DBObject, Transactionable, Serializable, Remote
Direct Known Subclasses:
AbstractDBObjectNode

public abstract class AbstractDBObject extends UnicastRemoteObject implements DBObject
Basisklasse fuer alle Business-Objekte
Author:
willuhn
See Also:
  • Constructor Details

  • Method Details

    • setService

      protected void setService(DBServiceImpl service) throws Exception
      Speichert den Service-Provider.
      Parameters:
      service -
      Throws:
      Exception
    • getService

      protected DBServiceImpl getService()
      Liefert den Service-Provider.
      Returns:
      Service.
    • init

      protected void init() throws SQLException
      Holt sich die Meta-Daten der Tabelle und erzeugt die Properties.
      Throws:
      SQLException - Wenn beim Laden der Meta-Daten ein Datenbank-Fehler auftrat.
    • load

      public final void load(String id) throws RemoteException
      Description copied from interface: DBObject
      Laedt die Eigenschaften des Datensatzes mit der angegebenen ID aus der Datenbank.
      Specified by:
      load in interface DBObject
      Parameters:
      id - ID des zu ladenden Objektes.
      Throws:
      RemoteException - im Fehlerfall.
      See Also:
    • store

      public void store() throws RemoteException, de.willuhn.util.ApplicationException
      Description copied from interface: Changeable
      Speichert das Objekt in der Datenbank. Die Funktion prueft selbst, ob es sich um ein neues Objekt handelt und entscheidet, ob ein insert oder update durchgefuehrt werden muss.
      Specified by:
      store in interface Changeable
      Throws:
      RemoteException - im Fehlerfall.
      de.willuhn.util.ApplicationException - Wenn das Objekt nicht gespeichert werden darf. Der Grund hierfuer findet sich im Fehlertext der Exception.
      See Also:
    • clear

      public final void clear() throws RemoteException
      Description copied from interface: Changeable
      Loescht alle Eigenschaften (incl. ID) aus dem Objekt. Es kann nun erneut befuellt und als neues Objekt in der Datenbank gespeichert werden.
      Specified by:
      clear in interface Changeable
      Throws:
      RemoteException - im Fehlerfall.
      See Also:
    • delete

      public void delete() throws RemoteException, de.willuhn.util.ApplicationException
      Description copied from interface: Changeable
      Loescht das Objekt aus der Datenbank.
      Specified by:
      delete in interface Changeable
      Throws:
      RemoteException - im Fehlerfall.
      de.willuhn.util.ApplicationException - Wenn das Objekt nicht geloescht werden darf. Der Grund hierfuer findet sich im Fehlertext der Exception.
      See Also:
    • getID

      public final String getID() throws RemoteException
      Description copied from interface: GenericObject
      Liefert einen Identifier fuer dieses Objekt. Dieser muss innerhalb des gesamten Systems/Services fuer diese Objektart eindeutig sein.
      Specified by:
      getID in interface GenericObject
      Returns:
      der Identifier des Objektes.
      Throws:
      RemoteException
      See Also:
    • setID

      public final void setID(String id)
      Speichert die uebergeben ID in diesem Objekt. Diese Funktion ist mit aeusserster Vorsicht zu geniessen. Sie wird z.Bsp. dann gebraucht, wenn ein Objekt von einer DB auf eine andere kopiert wird und dabei zwingend mit der ID der Ursprungs-Datenbank angelegt werden muss.
      Parameters:
      id -
    • getAttribute

      public Object getAttribute(String fieldName) throws RemoteException
      Description copied from interface: DBObject
      Liefert den Wert des angegebenen Attributes. Aber die Funktion ist richtig schlau ;) Sie checkt naemlich den Typ des Feldes in der Datenbank und liefert nicht nur einen String sondern den korrespondierenden Java-Typ. Insofern die Businessklasse die Funktion getForeignObject(String field) sinnvoll uberschrieben hat, liefert die Funktion bei Fremdschluesseln sogar gleich das entsprechende Objekt aus der Verknuepfungstabelle.
      Specified by:
      getAttribute in interface DBObject
      Specified by:
      getAttribute in interface GenericObject
      Parameters:
      fieldName - Name des Feldes.
      Returns:
      Wert des Feldes.
      Throws:
      RemoteException - im Fehlerfall.
      See Also:
    • getAttributeType

      public final String getAttributeType(String attributeName) throws RemoteException
      Description copied from interface: DBObject
      Liefert den Attributtyp des uebergebenen Feldes. Siehe DBObject.ATTRIBUTETYPE_*.
      Specified by:
      getAttributeType in interface DBObject
      Parameters:
      attributeName - Name des Attributes.
      Returns:
      Konstante fuer den Attributtyp. Siehe DBObject.ATTRIBUTETYPE_*.
      Throws:
      RemoteException - im Fehlerfall.
      See Also:
    • hasChanged

      protected boolean hasChanged()
      Prueft, ob das Objekt seit dem Laden geaendert wurde.
      Returns:
      true, wenn es geaendert wurde.
    • hasChanged

      protected boolean hasChanged(String attribute)
      Prueft, ob sich der Wert des genannten Attributs seit dem Laden geaendert hat.
      Parameters:
      attribute - Name des Attributes.
      Returns:
      true, wenn es sich geaendert hat.
    • setAttribute

      public Object setAttribute(String fieldName, Object value) throws RemoteException
      Speichert einen neuen Wert in den Properties und liefert den vorherigen zurueck.
      Parameters:
      fieldName - Name des Feldes.
      value - neuer Wert des Feldes. Muss vom Typ String, Date, Timestamp, Double, Integer oder DBObject sein.
      Ist der Parameter vom Typ dbObject nimmt die Funktion an, dass es sich um einen Fremdschluessel handelt und speichert automatisch statt des Objektes selbst nur dessen ID mittels new Integer(((DBObject)value).getID()).
      Returns:
      vorheriger Wert des Feldes.
      Throws:
      RemoteException
    • getAttributeNames

      public final String[] getAttributeNames() throws RemoteException
      Description copied from interface: GenericObject
      Liefert ein String-Array mit allen verfuegbaren Attribut-Namen.
      Specified by:
      getAttributeNames in interface GenericObject
      Returns:
      Liste aller Attribut-Namen.
      Throws:
      RemoteException
      See Also:
    • insert

      public void insert() throws RemoteException, de.willuhn.util.ApplicationException
      Speichert das Objekt explizit als neuen Datensatz in der Datenbank. Die Funktion wird auch dann ein Insert versuchen, wenn das Objekt bereits eine ID besitzt. Das ist z.Bsp. sinnvoll, wenn das Objekt von einer Datenbank auf eine andere kopiert werden soll. Es kann jedoch durchaus fehlschlagen, wenn ein Objekt mit dieser ID bereits in der Datenbank existiert.
      Throws:
      RemoteException - Wenn beim Speichern Fehler aufgetreten sind.
      de.willuhn.util.ApplicationException - Durch insertCheck() erzeugte Benutzerfehler.
    • getUpdateSQL

      protected PreparedStatement getUpdateSQL() throws RemoteException
      Liefert das automatisch erzeugte SQL-Statement fuer ein Update. Kann bei Bedarf ueberschrieben um ein vom dynamisch erzeugten abweichendes Statement f�r die Speicherung zu verwenden. Die Funktion darf zurueckliefern, wenn nichts zu aendern ist.
      Returns:
      das erzeugte SQL-Statement.
      Throws:
      RemoteException - wenn beim Erzugen des Statements ein Fehler auftrat.
    • getInsertSQL

      protected PreparedStatement getInsertSQL() throws RemoteException
      Liefert das automatisch erzeugte SQL-Statement fuer ein Insert. Kann bei Bedarf ueberschrieben um ein vom dynamisch erzeugten abweichendes Statement fuer die Speicherung zu verwenden.
      Returns:
      das erzeugte SQL-Statement.
      Throws:
      RemoteException - Wenn beim Erzeugen des Statements ein Fehler auftrat.
    • getListQuery

      protected String getListQuery()
      Liefert das automatisch erzeugte SQL-Statement fuer die Erzeugung einer Liste dieses Typs. ACHTUNG: Das Statement muss ein Feld mit der Bezeichnung zurueckgeben, die getIDField auch liefert, da das von DBIteratorImpl gelesen wird. Also z.Bsp. "select " + getIDField() + " from " + getTableName(). Kann bei Bedarf �berschrieben um ein abweichendes Statement zu verwenden. Die Funktion muss das Statement nur dewegen als String zurueckliefern, weil es typischerweise von DBIterator weiterverwendet wird und dort eventuell noch weitere Filterkriterien hinzugefuegt werden koennen muessen.
      Returns:
      das erzeugte SQL-Statement.
    • getLoadQuery

      protected String getLoadQuery() throws RemoteException
      Liefert das automatisch erzeugte SQL-Statement zum Laden des Objektes. Hierbei werden die Eigenschaften des Objektes geladen, dessen ID aktuell von getID() geliefert wird. ACHTUNG: Das Statement muss alle Felder selecten (*). Also z.Bsp. "select * from " + getTableName() + " where " + getIDField() + " = " + getID(); Kann bei Bedarf �berschrieben um ein abweichendes Statement zu verwenden.
      Returns:
      das erzeugte SQL-Statement.
      Throws:
      RemoteException - Wenn beim Erzeugen des Statements ein Fehler auftrat.
    • isNewObject

      public final boolean isNewObject() throws RemoteException
      Description copied from interface: Changeable
      Prueft, ob es sich um ein neues Objekt oder ein bereits in der Datenbank existierendes handelt.
      Specified by:
      isNewObject in interface Changeable
      Returns:
      true, wenn es neu ist, andernfalls false.
      Throws:
      RemoteException - im Fehlerfall.
      See Also:
    • getIDField

      protected String getIDField()
      Liefert den Namen der Spalte, in der sich der Primary-Key befindet. Default: "id".
      Returns:
      Name der Spalte mit dem Primary-Key.
    • getTableName

      protected abstract String getTableName()
      Liefert den Namen der repraesentierenden SQL-Tabelle. Muss von allen abgeleiteten Klassen implementiert werden.
      Returns:
      Name der repraesentierenden SQL-Tabelle.
    • getPrimaryAttribute

      public abstract String getPrimaryAttribute() throws RemoteException
      Description copied from interface: GenericObject
      Liefert den Namen des Primaer-Attributes dieses Objektes. Hintergrund: Wenn man z.Bsp. in einer Select-Box nur einen Wert anzeigen kann, dann wird dieser genommen. Achtung: Die Funktion liefert nicht den Wert des Attributes sondern nur dessen Namen.
      Specified by:
      getPrimaryAttribute in interface DBObject
      Specified by:
      getPrimaryAttribute in interface GenericObject
      Returns:
      Name des Primaer-Attributes.
      Throws:
      RemoteException - im Fehlerfall.
      See Also:
    • deleteCheck

      protected void deleteCheck() throws de.willuhn.util.ApplicationException
      Diese Methode wird intern vor der Ausfuehrung von delete() aufgerufen. Sie muss �berschrieben werden, damit das Fachobjekt vor dem Durchf�hren der L�schaktion Pr�fungen vornehmen kann. Z.Bsp. ob eventuell noch Abhaengigkeiten existieren und das Objekt daher nicht gel�scht werden kann.
      Throws:
      de.willuhn.util.ApplicationException - wenn das Objekt nicht gel�scht werden darf.
    • insertCheck

      protected void insertCheck() throws de.willuhn.util.ApplicationException
      Diese Methode wird intern vor der Ausfuehrung von insert() aufgerufen. Sie muss �berschrieben werden, damit das Fachobjekt vor dem Durchf�hren der Speicherung Pr�fungen vornehmen kann. Z.Bsp. ob alle Pflichtfelder ausgef�llt sind und korrekte Werte enthalten.
      Throws:
      de.willuhn.util.ApplicationException - wenn das Objekt nicht gespeichert werden darf.
    • updateCheck

      protected void updateCheck() throws de.willuhn.util.ApplicationException
      Diese Methode wird intern vor der Ausfuehrung von update() aufgerufen. Sie muss �berschrieben werden, damit das Fachobjekt vor dem Durchf�hren der Speicherung Pr�fungen vornehmen kann. Z.Bsp. ob alle Pflichtfelder ausgef�llt sind und korrekte Werte enthalten.
      Throws:
      de.willuhn.util.ApplicationException - wenn das Objekt nicht gespeichert werden darf.
    • getForeignObject

      protected Class getForeignObject(String field) throws RemoteException
      Prueft, ob das angegebene Feld ein Fremschluessel zu einer anderen Tabelle ist. Wenn das der Fall ist, liefert es die Klasse, die die Fremd-Tabelle abbildet. Andernfalls null.
      Parameters:
      field - das zu pruefende Feld.
      Returns:
      Klasse (abgeleitet von DBObject) welche den Fremdschluessel abbildet oder null.
      Throws:
      RemoteException - im Fehlerfall.
    • transactionBegin

      public final void transactionBegin() throws RemoteException
      Description copied from interface: Transactionable
      Damit kann man manuell eine Transaktion starten. Normalerweise wir bei store() oder delete() sofort bei Erfolg ein commit gemacht. Wenn man aber von aussen das Transaktionsverhalten beeinflussen will, kann man diese Methode aufrufen. Hat man dies getan, werden store() und delete() erst dann in der Datenbank ausgefuehrt, wenn man anschliessend transactionCommit() aufruft.
      Specified by:
      transactionBegin in interface Transactionable
      Throws:
      RemoteException - im Fehlerfall.
      See Also:
    • transactionRollback

      public final void transactionRollback() throws RemoteException
      Description copied from interface: Transactionable
      Rollt die angefangene Transaktion manuell zurueck.
      Specified by:
      transactionRollback in interface Transactionable
      Throws:
      RemoteException - im Fehlerfall.
      See Also:
    • transactionCommit

      public final void transactionCommit() throws RemoteException
      Description copied from interface: Transactionable
      Beendet eine manuell gestartete Transaktion. Wenn vorher kein transactionBegin() aufgerufen wurde, wird dieser Aufruf ignoriert.
      Specified by:
      transactionCommit in interface Transactionable
      Throws:
      RemoteException - im Fehlerfall.
      See Also:
    • getList

      public DBIterator getList() throws RemoteException
      Description copied from interface: DBObject
      Liefert eine Liste aller Objekte des aktuellen Types.
      Specified by:
      getList in interface DBObject
      Returns:
      Liste mit allen Objekten dieser Tabelle.
      Throws:
      RemoteException
      See Also:
    • overwrite

      public void overwrite(DBObject object) throws RemoteException
      Description copied from interface: Changeable
      Ueberschreibt dieses Objekt mit den Attributen des uebergebenen. Dabei werden nur die Werte der Attribute ueberschrieben - nichts anderes. Also auch keine Meta-Daten oder aehnliches. Handelt es sich bei der Quelle um ein Objekt fremden Typs, wird nichts ueberschrieben. Hinweis: Es werden nur die Attribute ueberschrieben, es wird jedoch noch nicht gespeichert. Sollen die Aenderungen also dauerhaft uebernommen werden, muss anschliessend noch ein store() aufgerufen werden.
      Specified by:
      overwrite in interface Changeable
      Parameters:
      object - das Objekt, welches als Quelle verwendet werden soll.
      Throws:
      RemoteException - im Fehlerfall.
      See Also:
    • equals

      public boolean equals(GenericObject other) throws RemoteException
      Description copied from interface: DBObject
      Vergleicht dieses Objekt mit dem uebergebenen. Hinweis: Es wird nicht der Inhalt verglichen sondern nur die ID und der Typ.
      Specified by:
      equals in interface DBObject
      Specified by:
      equals in interface GenericObject
      Parameters:
      other - das zu vergleichende Objekt.
      Returns:
      true, wenn sie vom gleichen Typ sind und die selbe ID haben.
      Throws:
      RemoteException
      See Also:
    • addDeleteListener

      public void addDeleteListener(Listener l) throws RemoteException
      Description copied from interface: DBObject
      Fuegt dem Objekt einen Listener hinzu, der ausgeloest wird, wenn das Objekt gerade geloescht wurde. Hinweis: Das Event wird unmittelbar nach dem Loeschen ausgeloest, jedoch noch bevor die ID auf null gesetzt wurde.
      Specified by:
      addDeleteListener in interface DBObject
      Parameters:
      l - der Listener.
      Throws:
      RemoteException
      See Also:
    • addStoreListener

      public void addStoreListener(Listener l) throws RemoteException
      Description copied from interface: DBObject
      Fuegt dem Objekt einen Listener hinzu, der ausgeloest wird, wenn das Objekt gespeichert wurde. Hinweis: Das Event wird nach dem Speichern ausgeloest.
      Specified by:
      addStoreListener in interface DBObject
      Parameters:
      l - der Listener.
      Throws:
      RemoteException
      See Also:
    • removeDeleteListener

      public void removeDeleteListener(Listener l) throws RemoteException
      Description copied from interface: DBObject
      Entfernt den Listener wieder.
      Specified by:
      removeDeleteListener in interface DBObject
      Parameters:
      l - der Listener.
      Throws:
      RemoteException
      See Also:
    • removeStoreListener

      public void removeStoreListener(Listener l) throws RemoteException
      Description copied from interface: DBObject
      Entfernt den Listener wieder.
      Specified by:
      removeStoreListener in interface DBObject
      Parameters:
      l - der Listener.
      Throws:
      RemoteException
      See Also: