Momenteel ben ik bezig met Java een file browser te maken, hiervoor maak ik gebruik van het JTree component. Ik ben al een heel eind gekomen, maar loop nu steeds vast.
Ipv. dat de bestanden op de hdd staan staan ze geindexeerd in een database:
Database layout:
Ik gebruik hiervoor de volgende code om de JTree op te bouwen:
De JTree wordt nu netjes opgebouwd met de bestanden onder de map, dit gaat allemaal goed. Helaas gaat het niet goed als er submappen in een map aanwezig zijn. Dan blijven deze allemaal onder de root van de JTree hangen ipv. de goede map....
Iemand een idee wat ik over het hoofd zie?
Ik heb deze URL: http://www.rgagnon.com/javadetails/java-0324.html gebruikt als voorbeeld, hier gaat het wel goed.
Ipv. dat de bestanden op de hdd staan staan ze geindexeerd in een database:
Database layout:
code:
1
2
3
4
5
6
7
8
9
| dirname: filename:
D:/testmap - file1.pl
D:/testmap - file2.txt
D:/testmap - file3.txt
D:/testmap/testscripts - file1.pl
D:/testmap/testscripts - file2.txt
D:/testmap/testscripts/map1 - file4.txt
D:/testmap/testscripts/map1/ab - file5.txt |
Ik gebruik hiervoor de volgende code om de JTree op te bouwen:
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
| // Build Tree
Statement st = database1.createStatement();
ResultSet rs = st.executeQuery("SELECT DISTINCT dirname FROM file;");
while (rs.next()) {
String path = rs.getString("dirname");
File dir = new File(path);
// Get COUNT
Statement st1 = database1.createStatement();
ResultSet rs1 = st1.executeQuery("SELECT COUNT (filename) FROM files WHERE dirname='" + path + "';");
rs1.next();
int count = rs1.getInt(1) + 1;
// Get Files for directory
rs1 = st1.executeQuery("SELECT * FROM files WHERE dirname='" + path + "';");
rs1.next();
String files[] = new String[count];
for (int index = 1; index < count; index++) {
files[index] = rs1.getString("dirname") + "/" + rs1.getString("filename");
rs1.next();
}
rs1.close();
st1.close();
setDir(dbTree, dir, files);
}
rs.close();
st.close();
public void setFile(CheckTreeNode node, File f) {
CheckTreeNode child = new CheckTreeNode(f.getName());
node.add(child);
}
public void setDir(CheckTreeNode node, File dir, String file[]) {
CheckTreeNode child = new CheckTreeNode(dir);
node.add(child);
for(int i = 1; i < file.length; i++) {
File f = new File(file[i]);
setFile(child, f);
}
} |
De JTree wordt nu netjes opgebouwd met de bestanden onder de map, dit gaat allemaal goed. Helaas gaat het niet goed als er submappen in een map aanwezig zijn. Dan blijven deze allemaal onder de root van de JTree hangen ipv. de goede map....
Iemand een idee wat ik over het hoofd zie?
Ik heb deze URL: http://www.rgagnon.com/javadetails/java-0324.html gebruikt als voorbeeld, hier gaat het wel goed.
huh, heb ik dat gedaan?