From: adam Date: Sat, 2 Dec 2006 08:14:11 +0000 (+0000) Subject: added sorting to FileBasedMailbox so it works on weird underlying fses like afs X-Git-Url: http://git.megacz.com/?p=org.ibex.mail.git;a=commitdiff_plain;h=5a119a5969c6d21397531cf5f655b7913cfefa04 added sorting to FileBasedMailbox so it works on weird underlying fses like afs darcs-hash:20061202081411-5007d-c2d3758ccc9333de2b73eb1dce2059b29316af12.gz --- diff --git a/src/org/ibex/mail/target/FileBasedMailbox.java b/src/org/ibex/mail/target/FileBasedMailbox.java index e5a420a..c2868b3 100644 --- a/src/org/ibex/mail/target/FileBasedMailbox.java +++ b/src/org/ibex/mail/target/FileBasedMailbox.java @@ -72,16 +72,36 @@ public class FileBasedMailbox extends Mailbox.Default { if (files[i].indexOf('.') != -1) files[i] = files[i].substring(0, files[i].indexOf('.')); int n = Integer.parseInt(files[i]); if (n>=uidNext) uidNext = n; - } catch(Exception e) { /* DELIBERATE */ } + } catch(Exception e) { Log.error(this, e); } } } + public String[] sort(String[] s) { + Arrays.sort(s); + return s; + } + + public String[] files() { + String[] s = path.list(filter); + Arrays.sort(s, comparator); + return s; + } + + private static Comparator comparator = new Comparator() { + public int compare(String a, String b) { + if (a.indexOf('.')==-1) return a.compareTo(b); + if (b.indexOf('.')==-1) return a.compareTo(a); + int ai = Integer.parseInt(a.substring(0, a.indexOf('.'))); + int bi = Integer.parseInt(b.substring(0, b.indexOf('.'))); + return aibi ? 1 : 0; + } + }; public Mailbox.Iterator iterator() { return new Iterator(); } public synchronized void add(Message message) { add(message, Mailbox.Flag.RECENT); } public String[] children() { Vec vec = new Vec(); - String[] list = path.list(); + String[] list = sort(path.list()); for(int i=0; i= files.length; } public boolean next() { cur++; return !done(); }