Package de.willuhn.datasource.db
Class AbstractDBObjectNode
java.lang.Object
java.rmi.server.RemoteObject
java.rmi.server.RemoteServer
java.rmi.server.UnicastRemoteObject
de.willuhn.datasource.db.AbstractDBObject
de.willuhn.datasource.db.AbstractDBObjectNode
- All Implemented Interfaces:
GenericObject
,GenericObjectNode
,Changeable
,DBObject
,DBObjectNode
,Transactionable
,Serializable
,Remote
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:
-
Field Summary
Fields inherited from class java.rmi.server.RemoteObject
ref
-
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionprotected void
Da Objekte in einem Baum Abhaengigkeiten untereinander haben, muessen diese vorm Loeschen geprueft werden.Liefert einen Iterator mit allen direkten Kind-Objekten des aktuellen Objektes.protected String
Liefert den Namen der Spalte, in dem sich die ID des �bergeordneten Objektes befindet.Liefert das Eltern-Element des aktuellen oder null, wenn es sich bereits auf oberster Ebene befindet.getPath()
Liefert eine Liste mit allen Eltern-Objekten bis hoch zum Root-Objekt.Liefert alle moeglichen Eltern-Objekte dieses Objektes.Liefert einen Iterator mit allen Root-Objekten.boolean
hasChild
(GenericObjectNode object) Prueft, ob das uebergeben Node-Objekt ein Kind des aktuellen ist.protected void
Prueft, ob das angegebene Eltern-Objekt (insofern vorhanden) erlaubt ist.void
setParent
(DBObjectNode parent) Speichert das Eltern-Element.protected void
Diese Methode wird intern vor der Ausfuehrung von update() aufgerufen.Methods inherited from class de.willuhn.datasource.db.AbstractDBObject
addDeleteListener, addStoreListener, clear, delete, equals, getAttribute, getAttributeNames, getAttributeType, getForeignObject, getID, getIDField, getInsertSQL, getList, getListQuery, getLoadQuery, getPrimaryAttribute, getService, getTableName, getUpdateSQL, hasChanged, hasChanged, init, insert, isNewObject, load, overwrite, removeDeleteListener, removeStoreListener, setAttribute, setID, setService, store, transactionBegin, transactionCommit, transactionRollback
Methods inherited from class java.rmi.server.UnicastRemoteObject
clone, exportObject, exportObject, exportObject, exportObject, exportObject, unexportObject
Methods inherited from class java.rmi.server.RemoteServer
getClientHost, getLog, setLog
Methods inherited from class java.rmi.server.RemoteObject
equals, getRef, hashCode, toString, toStub
Methods inherited from class java.lang.Object
finalize, getClass, notify, notifyAll, wait, wait, wait
Methods inherited from interface de.willuhn.datasource.rmi.Changeable
clear, delete, isNewObject, overwrite, store
Methods inherited from interface de.willuhn.datasource.rmi.DBObject
addDeleteListener, addStoreListener, equals, getAttribute, getAttributeType, getList, getPrimaryAttribute, load, removeDeleteListener, removeStoreListener
Methods inherited from interface de.willuhn.datasource.GenericObject
getAttributeNames, getID
Methods inherited from interface de.willuhn.datasource.rmi.Transactionable
transactionBegin, transactionCommit, transactionRollback
-
Constructor Details
-
AbstractDBObjectNode
- Throws:
RemoteException
-
-
Method Details
-
getNodeField
Liefert den Namen der Spalte, in dem sich die ID des �bergeordneten Objektes befindet.- Returns:
- Spalten-Name mit der ID des uebergeordneten Objektes.
-
getChildren
Description copied from interface:GenericObjectNode
Liefert einen Iterator mit allen direkten Kind-Objekten des aktuellen Objektes. Jedoch keine Kindes-Kinder.- Specified by:
getChildren
in interfaceGenericObjectNode
- Returns:
- Iterator mit den direkten Kind-Objekten.
- Throws:
RemoteException
- See Also:
-
getTopLevelList
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 interfaceDBObjectNode
- Returns:
- Iterator mit den Root-Objekten.
- Throws:
RemoteException
- See Also:
-
hasChild
Description copied from interface:GenericObjectNode
Prueft, ob das uebergeben Node-Objekt ein Kind des aktuellen ist. Dabei wird der gesamte Baum ab hier rekursiv durchsucht.- Specified by:
hasChild
in interfaceGenericObjectNode
- Parameters:
object
- das zu testende Objekt.- Returns:
- true wenn es ein Kind ist, sonst false.
- Throws:
RemoteException
- See Also:
-
getParent
Description copied from interface:GenericObjectNode
Liefert das Eltern-Element des aktuellen oder null, wenn es sich bereits auf oberster Ebene befindet.- Specified by:
getParent
in interfaceGenericObjectNode
- Returns:
- das Eltern-Objekt oder null.
- Throws:
RemoteException
- See Also:
-
getPossibleParents
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 interfaceGenericObjectNode
- Returns:
- Liste der moeglichen Eltern-Objekte.
- Throws:
RemoteException
- See Also:
-
getPath
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 interfaceGenericObjectNode
- Returns:
- Liste aller Elternobjekte bis zum Root-Objekt.
- Throws:
RemoteException
- See Also:
-
deleteCheck
protected void deleteCheck() throws de.willuhn.util.ApplicationExceptionDa 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 classAbstractDBObject
- Throws:
de.willuhn.util.ApplicationException
- wenn das Objekt nicht gel�scht werden darf.- See Also:
-
insertCheck
protected void insertCheck() throws de.willuhn.util.ApplicationExceptionPrueft, 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 classAbstractDBObject
- Throws:
de.willuhn.util.ApplicationException
- wenn das Objekt nicht gespeichert werden darf.- See Also:
-
updateCheck
protected void updateCheck() throws de.willuhn.util.ApplicationExceptionDescription 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 classAbstractDBObject
- Throws:
de.willuhn.util.ApplicationException
- wenn das Objekt nicht gespeichert werden darf.- See Also:
-
setParent
Description copied from interface:DBObjectNode
Speichert das Eltern-Element.- Specified by:
setParent
in interfaceDBObjectNode
- Parameters:
parent
- Eltern-Element.- Throws:
RemoteException
- See Also:
-