Class AbstractDBObjectNode

  • All Implemented Interfaces:
    GenericObject, GenericObjectNode, Changeable, DBObject, DBObjectNode, Transactionable, java.io.Serializable, java.rmi.Remote

    public abstract class AbstractDBObjectNode
    extends AbstractDBObject
    implements DBObjectNode
    Diese Klasse ist die ideale Basis-Klasse, wenn es gilt, Baum-Strukturen in einer Datenbank abzubilden. Man nehme eine SQL-Tabelle und erweitere sie um eine Spalte fuer das Eltern-Objekt. Diese heisst z.Bsp. "parent_id". Dieser Fremd-Schluessel zeigt auf die selbe Tabelle und dort auf das uebergeordnete Objekt. Ein solches Objekt laesst sich dann prima mit der GUI-Komponente "Tree" darstellen. Hinweis: Objekte, die sich bereits auf der obersten Ebene des Baumes befinden, muessen den Wert "0" im Feld fuer das Eltern-Objekt besitzen.
    Author:
    willuhn
    See Also:
    Serialized Form
    • Constructor Detail

      • AbstractDBObjectNode

        public AbstractDBObjectNode()
                             throws java.rmi.RemoteException
        Throws:
        java.rmi.RemoteException
    • Method Detail

      • getNodeField

        protected java.lang.String getNodeField()
        Liefert den Namen der Spalte, in dem sich die ID des �bergeordneten Objektes befindet.
        Returns:
        Spalten-Name mit der ID des uebergeordneten Objektes.
      • getTopLevelList

        public GenericIterator getTopLevelList()
                                        throws java.rmi.RemoteException
        Description copied from interface: DBObjectNode
        Liefert einen Iterator mit allen Root-Objekten. Das sind all die, welche sich auf oberster Ebene befinden.
        Specified by:
        getTopLevelList in interface DBObjectNode
        Returns:
        Iterator mit den Root-Objekten.
        Throws:
        java.rmi.RemoteException
        See Also:
        DBObjectNode.getTopLevelList()
      • getPossibleParents

        public GenericIterator getPossibleParents()
                                           throws java.rmi.RemoteException
        Description copied from interface: GenericObjectNode
        Liefert alle moeglichen Eltern-Objekte dieses Objektes. Das sind nicht die tatsaechlichen Eltern (denn jedes Objekt kann ja nur ein Eltern-Objekt haben) sondern eine Liste der Objekte, an die es als Kind gehangen werden werden. Das ist z.Bsp. sinnvoll, wenn man ein Kind-Element im Baum woanders hinhaengenn will. Da das Objekt jedoch nicht an eines seiner eigenen Kinder und auch nicht an sich selbst gehangen werden kann (Rekursion) liefert diese Funktion nur die moeglichen Eltern-Objekte.
        Specified by:
        getPossibleParents in interface GenericObjectNode
        Returns:
        Liste der moeglichen Eltern-Objekte.
        Throws:
        java.rmi.RemoteException
        See Also:
        GenericObjectNode.getPossibleParents()
      • getPath

        public GenericIterator getPath()
                                throws java.rmi.RemoteException
        Description copied from interface: GenericObjectNode
        Liefert eine Liste mit allen Eltern-Objekten bis hoch zum Root-Objekt. Also sowas wie ein voller Verzeichnisname, jedoch andersrum. Das oberste Element steht am Ende der Liste.
        Specified by:
        getPath in interface GenericObjectNode
        Returns:
        Liste aller Elternobjekte bis zum Root-Objekt.
        Throws:
        java.rmi.RemoteException
        See Also:
        GenericObjectNode.getPath()
      • deleteCheck

        protected void deleteCheck()
                            throws de.willuhn.util.ApplicationException
        Da Objekte in einem Baum Abhaengigkeiten untereinander haben, muessen diese vorm Loeschen geprueft werden. Grundsaetzliche Checks koennen wir bereits hier durchfuehren. Zum Beispiel ist es nicht moeglich, ein Objekt zu loeschen, wenn es Kind-Objekte hat.
        Overrides:
        deleteCheck in class AbstractDBObject
        Throws:
        de.willuhn.util.ApplicationException - wenn das Objekt nicht gel�scht werden darf.
        See Also:
        AbstractDBObject.deleteCheck()
      • insertCheck

        protected void insertCheck()
                            throws de.willuhn.util.ApplicationException
        Prueft, ob das angegebene Eltern-Objekt (insofern vorhanden) erlaubt ist. Sprich: Es wird geprueft, ob es nicht auf sich selbst zurueckzeigt und ob das Eltern-Element nicht gleichzeitig ein Kind-Element ist.
        Overrides:
        insertCheck in class AbstractDBObject
        Throws:
        de.willuhn.util.ApplicationException - wenn das Objekt nicht gespeichert werden darf.
        See Also:
        AbstractDBObject.insertCheck()
      • updateCheck

        protected void updateCheck()
                            throws de.willuhn.util.ApplicationException
        Description copied from class: AbstractDBObject
        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.
        Overrides:
        updateCheck in class AbstractDBObject
        Throws:
        de.willuhn.util.ApplicationException - wenn das Objekt nicht gespeichert werden darf.
        See Also:
        AbstractDBObject.updateCheck()