1Danke
ERLEDIGT
JA
JA
ANTWORTEN
2
2
ZUGRIFFE
963
963
EMPFEHLEN
-
Hallo,
ich stehe vor einem Problem. Ich habe eine Datenbank in der Einträge sind, die Ordner bzw Unterordner darstellen. Sie ist nach dem "Nested Set Model" aufgebaut. Außerdem steht in jeder Tabellenzeile auch noch eine Folder-ID die ID des Parent-Ordner. Das will ich jetzt in einen TreeView hineinbekommen, bzw. eben einen Baum mit Objekten erstellen.
Dafür habe ich die Klasse "Node" erstellt, die wiederum in einem Array weitere Nodes aufnehmen kann. Das erstellen klappt auch zum Teil, sobald allerdings viele Unterordner hinzukommen, ist's vorbei.
Mit einer while-Schleife gehe ich durch das ResultSet, das mir die Tabelle liefert. Mit folgender Funktion versuche ich den Ordner zu finden, in den der neue hineinkommen soll:
parent ist immer der Root-Ordner (darin sind dann die anderen mit weiteren Unterordnern). Es sieht also ungefähr so aus:Code :1 2 3 4 5 6 7 8 9 10 11 12 13 14
public Node getNode(Node parent, int parentFolderID, String name) { for (Object o : parent.children) { if (o instanceof Node) { Node n = (Node)o; if (n.ID == parentFolderID) return n; else if (n.children.size() != 0) return getNode(n, parentFolderID, name); } } return null; }
root
- F1
-- F1.1
--- F1.3
-- F1.2
- F2
Wenn jetzt ein Ordner in F2 reingehört, startet die Funktion eben bei F1, geht die Unterordner durch und - aus ist's. Also nix bis F2...
-
Wenn du eine Datennbank verwendest, dann lasse dir den Pfad doch als einzelnen String von ihr liefern. Das kann man mit GROUP_CONCAT verwirklichen, hier ist ein gutes Beispiel von yaslaw.
Diesen Pfad kannst du dann als key für einen HashTree verwenden, und die einzelnen Bestandteile kannst du mit der split-Methode bekommen.Vielen Dank für die Nutzung des Bewerten- und Danke-Buttons
Wenn man sieht, dass man einen anderen glücklich gemacht hat, ist die Welt um zwei glückliche Menschen reicher.
-
29.04.10 17:50 #3
Das hat Spass gemacht.
Das Problem war, dass die letzte return Anweisung für den Fall dass der erste Zweig bis ins letzte Kindelement läuft null zurückgibt.
Code :1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51
import java.util.ArrayList; import java.util.List; public class Rekursiv { public Rekursiv() { Node root = new Node("root"); Node f1 = new Node("f1"); Node f11 = new Node("f11"); Node f12 = new Node("f12"); Node f13 = new Node("f13"); Node f2 = new Node("f2"); root.children.add(f1); f1.children.add(f11); f1.children.add(f12); f11.children.add(f13); root.children.add(f2); Node result = getNode(root, "f2", "bla"); System.out.println(result.id); } class Node { public String id; List<Node> children = new ArrayList<Node>(); public Node(String _id) { id = _id; } } public Node getNode(Node parent, String parentFolderID, String name) { for (Object o : parent.children) { if (o instanceof Node) { Node n = (Node) o; if (n.id.equals(parentFolderID)) return n; else if (n.children.size() != 0) { Node o1 = getNode(n, parentFolderID, name); if (null != o1) { return o1; } } } } return null; } public static void main(String[] args) { new Rekursiv(); } }Denken gefärdet die Gewohnheit
Ähnliche Themen
-
xml-tag bauen
Von P_H_I_L im Forum Algorithmen & Datenstrukturen mit JavaAntworten: 4Letzter Beitrag: 31.01.08, 10:25 -
SWT - Tree
Von mtk-flo im Forum Swing, Java2D/3D, SWT, JFaceAntworten: 1Letzter Beitrag: 08.12.06, 08:36 -
Tree
Von Albanos im Forum Hall of FameAntworten: 5Letzter Beitrag: 26.05.06, 12:53 -
schlüsselfertiges Bauen - Bauen aus einer Hand
Von Ben1st im Forum Creative LoungeAntworten: 8Letzter Beitrag: 09.08.05, 19:14 -
DLL bauen
Von Tharmy im Forum .NET ArchivAntworten: 4Letzter Beitrag: 15.03.05, 21:41





Zitieren
Login




