switch getMailExchangerIPs() to DNSUtil
[org.ibex.mail.git] / src / org / ibex / mail / SqliteMailbox.java
index 5f23706..f656f68 100644 (file)
@@ -48,7 +48,7 @@ public class SqliteMailbox extends Mailbox.Default implements MailTree {
      */
     // FIXME: should messageid_ be decared unique?
     private static final String columns_ =
-        "uid_ INTEGER PRIMARY KEY AUTOINCREMENT, messageid_ unique,from_,to_,date_,subject_,headers_,body_,flags_";
+        "uid_ INTEGER PRIMARY KEY AUTOINCREMENT, messageid_,from_,to_,date_,subject_,headers_,body_,flags_";
 
     private final int uidValidity;
     private final File file;
@@ -237,6 +237,7 @@ public class SqliteMailbox extends Mailbox.Default implements MailTree {
     }
     public void             insert(Message m, int flags) {
         try {
+            /*
             PreparedStatement query = conn.prepareStatement("select headers_,body_,flags_ from 'mail' where messageid_=?");
             query.setString(1, m.messageid);
             Log.warn("SQL", "select headers_,body_,flags_ from 'mail' where messageid_="+m.messageid);
@@ -260,6 +261,7 @@ public class SqliteMailbox extends Mailbox.Default implements MailTree {
                     return;
                 }
             }
+            */
             PreparedStatement add =
                 conn.prepareStatement("insert "+/*"or replace "+*/"into 'mail' ("+columns+") values (?,?,?,?,?,?,?,?)");
             add.setString(1, m.messageid+"");
@@ -301,9 +303,9 @@ public class SqliteMailbox extends Mailbox.Default implements MailTree {
         public Headers head()   {
             if (m != null) return m.headers;
             try {
-                PreparedStatement query = conn.prepareStatement("select headers_,flags_ from 'mail' where messageid_=?");
-                query.setString(1, rs.getString(1));
-                Log.warn("SQL", "select headers_,flags_ from 'mail' where messageid_="+rs.getString(1));
+                PreparedStatement query = conn.prepareStatement("select headers_,flags_ from 'mail' where uid_=?");
+                query.setString(1, rs.getString(2));
+                Log.warn("SQL", "select headers_,flags_ from 'mail' where uid_="+rs.getString(2));
 
                 ResultSet rs2 = query.executeQuery();
                 if (!rs2.next()) { Log.error("XXX", "should not happen"); return null; }
@@ -314,9 +316,9 @@ public class SqliteMailbox extends Mailbox.Default implements MailTree {
         public Message cur()    {
             try {
                 if (m!=null) return m;
-                PreparedStatement query = conn.prepareStatement("select headers_,body_,flags_ from 'mail' where messageid_=?");
-                query.setString(1, rs.getString(1));
-                Log.warn("SQL", "select headers_,body_,flags_ from 'mail' where messageid_="+rs.getString(1));
+                PreparedStatement query = conn.prepareStatement("select headers_,body_,flags_ from 'mail' where uid_=?");
+                query.setString(1, rs.getString(2));
+                Log.warn("SQL", "select headers_,body_,flags_ from 'mail' where uid_="+rs.getString(2));
 
                 ResultSet rs2 = query.executeQuery();
                 if (!rs2.next()) { Log.error("XXX", "should not happen"); return null; }
@@ -335,6 +337,7 @@ public class SqliteMailbox extends Mailbox.Default implements MailTree {
                 int oldflags = rs.getInt("flags_");
                 if (oldflags==flags) return;
                 Log.info(this, "setflags (old="+oldflags+")" + "update mail set flags_="+(flags)+" where uid_="+uid()+"");
+                if ((flags & Mailbox.Flag.DELETED) != 0) Log.printStackTrace("deletion", Log.WARN);
                 PreparedStatement update = conn.prepareStatement("update mail set flags_=? where uid_=?");
                 update.setInt(1, flags);
                 update.setInt(2, uid());
@@ -353,11 +356,7 @@ public class SqliteMailbox extends Mailbox.Default implements MailTree {
         }
         public int     imapNumber() {
             if ("".equals(whereClause)) return count;
-            try {
-                ResultSet rs = conn.prepareStatement("select count(*) from mail where uid_ <= " + uid()).executeQuery();
-                rs.next();
-                return rs.getInt(1);
-            } catch (Exception e) { throw new RuntimeException(e); }
+            try { return queryImapNumberCache(uid()); } catch (SQLException s) { throw new RuntimeException(s); }
         }
         public int     nntpNumber() { return uid(); }
         public void    delete()     {