Author: batosai
Date: 2008-08-10 14:36:54 +0000 (Sun, 10 Aug 2008)
New Revision: 21713

Modified:
   trunk/apps/WoT/src/plugins/WoT/IdentityFetcher.java
   trunk/apps/WoT/src/plugins/WoT/IdentityParser.java
   trunk/apps/WoT/src/plugins/WoT/WoTplugin.java
Log:
Efforts to keep database consistency. 

Modified: trunk/apps/WoT/src/plugins/WoT/IdentityFetcher.java
===================================================================
--- trunk/apps/WoT/src/plugins/WoT/IdentityFetcher.java 2008-08-10 14:14:57 UTC 
(rev 21712)
+++ trunk/apps/WoT/src/plugins/WoT/IdentityFetcher.java 2008-08-10 14:36:54 UTC 
(rev 21713)
@@ -9,6 +9,7 @@
 import java.io.InputStream;

 import com.db4o.ObjectContainer;
+import com.db4o.ObjectSet;

 import freenet.client.FetchContext;
 import freenet.client.FetchException;
@@ -80,14 +81,32 @@

        @Override
        public void onSuccess(FetchResult result, ClientGetter state) {
+               
+               // Find the identity we just fetched
+               Identity identity = null;
+               
+               // This is ugly, I could not find a request able to find the 
good identity 
+               ObjectSet<Identity> search = db.queryByExample(Identity.class);
+               while (search.hasNext()) {
+                       Identity id = search.next();
+                       
if(id.getRequestURI().getRoutingKey().equals(state.getURI().getRoutingKey()))
+                               identity = id;
+               }
+               if (identity == null) {
+                       System.out.println("Error, identity not found");
+                       return;
+               }

                try {
-                       parser.parse(result.asBucket().getInputStream(), 
state.getURI());
+                       parser.parse(result.asBucket().getInputStream(), 
identity);

                } catch (Exception e) {
                        e.printStackTrace();
                }

+               db.store(identity);
+               db.commit();
+               
        }

        @Override

Modified: trunk/apps/WoT/src/plugins/WoT/IdentityParser.java
===================================================================
--- trunk/apps/WoT/src/plugins/WoT/IdentityParser.java  2008-08-10 14:14:57 UTC 
(rev 21712)
+++ trunk/apps/WoT/src/plugins/WoT/IdentityParser.java  2008-08-10 14:36:54 UTC 
(rev 21713)
@@ -41,21 +41,9 @@
                saxParser = factory.newSAXParser();
        }

-       public void parse (InputStream is, FreenetURI fetchedURI) throws 
Exception {
-               
-               // Find the identity we just fetched
-               // This is ugly, I could not find a request able to find the 
good identity 
-               ObjectSet<Identity> result = db.queryByExample(Identity.class);
-               while (result.hasNext()) {
-                       Identity id = result.next();
-                       
if(id.getRequestURI().getRoutingKey().equals(fetchedURI.getRoutingKey()))
-                               identity = id;
-               }
-               if (identity == null) {
-                       System.out.println("Error, identity not found");
-                       return;
-               }
+       public void parse (InputStream is, Identity id) throws Exception {

+               this.identity = id;
                identity.setLastChange(new Date());

                try {
@@ -65,10 +53,6 @@
                        err.printStackTrace ();
                        throw new Exception("Could not parse XML: 
"+err.toString());
                }
-       
-               db.store(identity);
-               db.commit();
-
        }

        public class IdentityHandler extends DefaultHandler {

Modified: trunk/apps/WoT/src/plugins/WoT/WoTplugin.java
===================================================================
--- trunk/apps/WoT/src/plugins/WoT/WoTplugin.java       2008-08-10 14:14:57 UTC 
(rev 21712)
+++ trunk/apps/WoT/src/plugins/WoT/WoTplugin.java       2008-08-10 14:36:54 UTC 
(rev 21713)
@@ -69,6 +69,7 @@
        }

        public void terminate() {
+               db.commit();
                db.close();
        }



Reply via email to