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
,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 Summary
Constructors Constructor Description AbstractDBObjectNode()
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description protected void
deleteCheck()
Da Objekte in einem Baum Abhaengigkeiten untereinander haben, muessen diese vorm Loeschen geprueft werden.GenericIterator
getChildren()
Liefert einen Iterator mit allen direkten Kind-Objekten des aktuellen Objektes.protected java.lang.String
getNodeField()
Liefert den Namen der Spalte, in dem sich die ID des �bergeordneten Objektes befindet.GenericObjectNode
getParent()
Liefert das Eltern-Element des aktuellen oder null, wenn es sich bereits auf oberster Ebene befindet.GenericIterator
getPath()
Liefert eine Liste mit allen Eltern-Objekten bis hoch zum Root-Objekt.GenericIterator
getPossibleParents()
Liefert alle moeglichen Eltern-Objekte dieses Objektes.GenericIterator
getTopLevelList()
Liefert einen Iterator mit allen Root-Objekten.boolean
hasChild(GenericObjectNode object)
Prueft, ob das uebergeben Node-Objekt ein Kind des aktuellen ist.protected void
insertCheck()
Prueft, ob das angegebene Eltern-Objekt (insofern vorhanden) erlaubt ist.void
setParent(DBObjectNode parent)
Speichert das Eltern-Element.protected void
updateCheck()
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.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
-
-
-
-
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.
-
getChildren
public GenericIterator getChildren() throws java.rmi.RemoteException
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:
java.rmi.RemoteException
- See Also:
GenericObjectNode.getChildren()
-
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 interfaceDBObjectNode
- Returns:
- Iterator mit den Root-Objekten.
- Throws:
java.rmi.RemoteException
- See Also:
DBObjectNode.getTopLevelList()
-
hasChild
public boolean hasChild(GenericObjectNode object) throws java.rmi.RemoteException
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:
java.rmi.RemoteException
- See Also:
GenericObjectNode.hasChild(de.willuhn.datasource.GenericObjectNode)
-
getParent
public GenericObjectNode getParent() throws java.rmi.RemoteException
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:
java.rmi.RemoteException
- See Also:
GenericObjectNode.getParent()
-
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 interfaceGenericObjectNode
- 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 interfaceGenericObjectNode
- 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 classAbstractDBObject
- 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 classAbstractDBObject
- 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 classAbstractDBObject
- Throws:
de.willuhn.util.ApplicationException
- wenn das Objekt nicht gespeichert werden darf.- See Also:
AbstractDBObject.updateCheck()
-
setParent
public void setParent(DBObjectNode parent) throws java.rmi.RemoteException
Description copied from interface:DBObjectNode
Speichert das Eltern-Element.- Specified by:
setParent
in interfaceDBObjectNode
- Parameters:
parent
- Eltern-Element.- Throws:
java.rmi.RemoteException
- See Also:
DBObjectNode.setParent(de.willuhn.datasource.rmi.DBObjectNode)
-
-