package de.linwave.gtm.query;
import java.io.File;
import java.io.FileFilter;
import java.util.Calendar;
import java.util.Date;
import org.odbms.OP;
import org.odbms.ObjectContainer;
import org.odbms.ObjectSet;
import org.odbms.Query;
import de.linwave.gtm.GTM;
public class FileTree
{
private static ObjectContainer db = GTM.getInstance();
private Calendar cal = Calendar.getInstance();
private Date currentTime = cal.getTime();
private int cnt = 0;
private void create()
{
File root = new File("/");
listFiles(root);
}
private void listFiles(File dir)
{
dir.listFiles(new FileFilter() {
public boolean accept(File pathname)
{
if (pathname.isDirectory()) {
if (pathname.getPath().startsWith("/proc"))
return false;
if (pathname.getPath().startsWith("/sys"))
return false;
listFiles(pathname);
} else {
if (pathname.getPath().endsWith(".java")) {
FileEntry entry = new FileEntry(pathname);
db.store(entry);
if ((++cnt) % 250 == 0)
System.out.println(cnt + ": " + pathname);
}
}
return false;
}
});
}
private void query()
{
Query q1 = db.query(LogEntry.class);
q1.constrain("date", OP.GREATER, currentTime);
ObjectSet<LogEntry> entries = q1.execute();
for (LogEntry entry : entries) {
System.out.println(entry + " exists=" + entry.getFile().exists());
}
q1.printConstraintInfo();
db.printCacheStatistics();
}
public static void main(String[] args)
{
db.deleteClass(LogEntry.class);
db.deleteClass(FileEntry.class);
FileTree test = new FileTree();
test.create();
test.query();
}
}