Hey ich hab mich seit einer Weile mit JTrees beschäftigt und nun eine Suche gebaut. Mein tree ist folgendermaßen aufgebaut:
root
--kunde1
---kundendaten
---angebote
-----angebot1
-------angebotsdaten1
-------Artikel
--------artikel1
--------artikel2
-----angebot2
-------angebotsdaten2
-------Artikel
--------artikel1
--------artikel2
usw usf
Der baum baut sich auf und wenn ich im Angebot eine änderung vornehme, kann es vorkommen, dass das Angebot danach einem ganz anderen Kunden gehört. In so einem Fall wird ein Listener aufgerufen und der Baum wird neuaufgebaut. So weit so gut.
Ich würde allerdings, nachdem der Baum wieder aufgebaut ist, den editierten Datensatz wieder öffnen, der nun ja woanders liegt.
Der Datensatz hat eine Id, die sich auch nach der Verschiebung nicht ändert und nach der kann ich an sich suchen.
Vorerst ist die Suche ohne ID realisiert, weil man ohne ID nach jedem beliebigen Objekt suchen kann und nicht nur nach meinem Datenmodell:
Ich bekomme also das Objekt, das geändert wurde und rufe die Suche auf mit
Problem: Es funktioniert nicht ^^
Er liefert immer keine Resultate zurück, er findet es also nicht.
Hat jemand eine Idee?
root
--kunde1
---kundendaten
---angebote
-----angebot1
-------angebotsdaten1
-------Artikel
--------artikel1
--------artikel2
-----angebot2
-------angebotsdaten2
-------Artikel
--------artikel1
--------artikel2
usw usf
Der baum baut sich auf und wenn ich im Angebot eine änderung vornehme, kann es vorkommen, dass das Angebot danach einem ganz anderen Kunden gehört. In so einem Fall wird ein Listener aufgerufen und der Baum wird neuaufgebaut. So weit so gut.
Ich würde allerdings, nachdem der Baum wieder aufgebaut ist, den editierten Datensatz wieder öffnen, der nun ja woanders liegt.
Der Datensatz hat eine Id, die sich auch nach der Verschiebung nicht ändert und nach der kann ich an sich suchen.
Vorerst ist die Suche ohne ID realisiert, weil man ohne ID nach jedem beliebigen Objekt suchen kann und nicht nur nach meinem Datenmodell:
Java:
private DefaultMutableTreeNode findNode( DefaultMutableTreeNode parent, Object object )
{
if ( object.equals( parent.getUserObject() ) )
return parent;
for ( int i=0; i<parent.getChildCount(); i++ ) {
DefaultMutableTreeNode child = (DefaultMutableTreeNode)parent.getChildAt( i );
DefaultMutableTreeNode childResult = findNode( child, object);
if (childResult != null)
return childResult;
}
return null;
}
Ich bekomme also das Objekt, das geändert wurde und rufe die Suche auf mit
Java:
DefaultMutableTreeNode newNode = findNode(startingNode, changedObject)
Problem: Es funktioniert nicht ^^
Er liefert immer keine Resultate zurück, er findet es also nicht.
Hat jemand eine Idee?