Author: xor
Date: 2008-11-13 19:59:26 +0000 (Thu, 13 Nov 2008)
New Revision: 23540

Modified:
   trunk/plugins/WoT/introduction/IntroductionClient.java
Log:
New function.

Modified: trunk/plugins/WoT/introduction/IntroductionClient.java
===================================================================
--- trunk/plugins/WoT/introduction/IntroductionClient.java      2008-11-13 
19:55:01 UTC (rev 23539)
+++ trunk/plugins/WoT/introduction/IntroductionClient.java      2008-11-13 
19:59:26 UTC (rev 23540)
@@ -9,10 +9,12 @@
 import java.util.Date;
 import java.util.HashSet;
 import java.util.Iterator;
+import java.util.List;
 import java.util.concurrent.ArrayBlockingQueue;
 
 import plugins.WoT.Identity;
 import plugins.WoT.OwnIdentity;
+import plugins.WoT.exceptions.NotInTrustTreeException;
 
 import com.db4o.ObjectContainer;
 import com.db4o.ObjectSet;
@@ -54,6 +56,8 @@
        public static final int MAX_PUZZLES_PER_IDENTITY = 
IntroductionServer.PUZZLE_COUNT;
 
        private static final int MINIMUM_SCORE_FOR_PUZZLE_DOWNLOAD = 10; /* 
FIXME: tweak before release */
+       
+       private static final int MINIMUM_SCORE_FOR_PUZZLE_DISPLAY = 50; /* 
FIXME: tweak before release */
 
        private Thread mThread;
        
@@ -139,6 +143,30 @@
                Logger.debug(this, "Stopped the introduction client.");
        }
        
+       public synchronized List<IntroductionPuzzle> getPuzzles(OwnIdentity id, 
int count) {
+               Query q = db.query();
+               q.constrain(IntroductionPuzzle.class);
+               q.descend("mSolution").constrain(null).identity(); /* FIXME: 
toad said constrain(null) is maybe broken. If this is true: Alternative would 
be: q.descend("mIdentity").constrain(OwnIdentity.class).not(); */
+               ObjectSet<IntroductionPuzzle> puzzles = q.execute();
+               ArrayList<IntroductionPuzzle> result = new 
ArrayList<IntroductionPuzzle>(count);
+               
+               for(IntroductionPuzzle p : puzzles) {
+                       try {
+                               int score = p.getInserter().getScore(id, 
db).getScore();
+                               if(score > MINIMUM_SCORE_FOR_PUZZLE_DISPLAY) { 
+                                       result.add(p);
+                                       if(result.size() == count)
+                                               break;
+                               }
+                       }
+                       catch(NotInTrustTreeException e) {
+                       }
+               }
+               
+               return result;
+       }
+       
+       
        private synchronized void cancelRequests() {
                Iterator<ClientGetter> i = mRequests.iterator();
                int counter = 0;

_______________________________________________
cvs mailing list
[email protected]
http://emu.freenetproject.org/cgi-bin/mailman/listinfo/cvs

Reply via email to