Author: jflesch
Date: 2007-04-21 15:19:02 +0000 (Sat, 21 Apr 2007)
New Revision: 12843

Modified:
   trunk/apps/Thaw/src/thaw/plugins/index/Index.java
   trunk/apps/Thaw/src/thaw/plugins/index/IndexManagementHelper.java
Log:
Fix unknown index detection

Modified: trunk/apps/Thaw/src/thaw/plugins/index/Index.java
===================================================================
--- trunk/apps/Thaw/src/thaw/plugins/index/Index.java   2007-04-21 14:50:07 UTC 
(rev 12842)
+++ trunk/apps/Thaw/src/thaw/plugins/index/Index.java   2007-04-21 15:19:02 UTC 
(rev 12843)
@@ -1531,10 +1531,14 @@
        }


+       public static int isAlreadyKnown(Hsqldb db, String key) {
+               return isAlreadyKnown(db, key, false);
+       }
+
        /**
         * @return the index id if found ; -1 else
         */
-       public static int isAlreadyKnown(Hsqldb db, String key) {
+       public static int isAlreadyKnown(Hsqldb db, String key, boolean strict) 
{
                if (key.length() < 40) {
                        Logger.error(new Index(), "isAlreadyKnown(): Invalid 
key: "+key);
                        return -1;
@@ -1546,22 +1550,30 @@
                        try {
                                PreparedStatement st;

-                               st = 
db.getConnection().prepareStatement("SELECT id, publicKey from indexes WHERE 
LOWER(publicKey) LIKE ?");
+                               st = 
db.getConnection().prepareStatement("SELECT id, publicKey from indexes WHERE 
LOWER(publicKey) LIKE ?"
+                                                                        + 
(strict ? "" : " LIMIT 1"));

                                st.setString(1, 
FreenetURIHelper.getComparablePart(key) +"%");

                                ResultSet res = st.executeQuery();

-                               while(res.next()) {
-                                       String pubKey = 
res.getString("publicKey").replaceAll(".xml", ".frdx");
+                               if (strict) {
+                                       while(res.next()) {
+                                               String pubKey = 
res.getString("publicKey").replaceAll(".xml", ".frdx");

-                                       if 
(FreenetURIHelper.compareKeys(pubKey, key)) {
-                                               return res.getInt("id");
+                                               if 
(FreenetURIHelper.compareKeys(pubKey, key)) {
+                                                       return res.getInt("id");
+                                               }
                                        }
+
+                                       return -1;
+                               } else {
+                                       if (!res.next())
+                                               return -1;
+
+                                       return res.getInt("id");
                                }

-                               return -1;
-
                        } catch(final SQLException e) {
                                Logger.error(new Index(), "isAlreadyKnown: 
Unable to check if link '"+key+"' point to a know index because: 
"+e.toString());
                        }

Modified: trunk/apps/Thaw/src/thaw/plugins/index/IndexManagementHelper.java
===================================================================
--- trunk/apps/Thaw/src/thaw/plugins/index/IndexManagementHelper.java   
2007-04-21 14:50:07 UTC (rev 12842)
+++ trunk/apps/Thaw/src/thaw/plugins/index/IndexManagementHelper.java   
2007-04-21 15:19:02 UTC (rev 12843)
@@ -565,7 +565,7 @@
                if (privateKey != null && privateKey.equals(""))
                        privateKey = null;

-               if (Index.isAlreadyKnown(indexBrowser.getDb(), publicKey) >= 0) 
{
+               if (Index.isAlreadyKnown(indexBrowser.getDb(), publicKey, true) 
>= 0) {
                        Logger.notice(new IndexManagementHelper(), "Index 
already added !");
                        return null;
                }


Reply via email to