OSDN Git Service

bug fixed: last element was returned twice
authortama3 <tama3@acee48c3-7b26-0410-bdac-b3d0e5314bbc>
Fri, 30 Mar 2007 04:58:39 +0000 (04:58 +0000)
committertama3 <tama3@acee48c3-7b26-0410-bdac-b3d0e5314bbc>
Fri, 30 Mar 2007 04:58:39 +0000 (04:58 +0000)
git-svn-id: svn+ssh://svn.sourceforge.jp/svnroot/stigmata/trunk@96 acee48c3-7b26-0410-bdac-b3d0e5314bbc

src/main/java/jp/naist/se/stigmata/filter/FilteredComparisonResultSet.java

index 2997054..d788721 100755 (executable)
@@ -14,6 +14,7 @@ import jp.naist.se.stigmata.ComparisonPairFilterSet;
 import jp.naist.se.stigmata.ComparisonResultSet;\r
 \r
 /**\r
+ * Filtering {@link ComparisonResultSet <code>ComparisonResultSet</code>}.\r
  * \r
  * @author Haruaki TAMADA\r
  * @version $Revision$ $Date$\r
@@ -22,10 +23,20 @@ public class FilteredComparisonResultSet implements ComparisonResultSet{
     private ComparisonResultSet resultset;\r
     private List<ComparisonPairFilterSet> filters = new ArrayList<ComparisonPairFilterSet>(); \r
 \r
+    /**\r
+     * constructor.\r
+     * \r
+     * @param resultset filtering target\r
+     */\r
     public FilteredComparisonResultSet(ComparisonResultSet resultset){\r
         this.resultset = resultset;\r
     }\r
 \r
+    /**\r
+     * constructor.\r
+     * @param resultset filtering target\r
+     * @param filters filtering rule\r
+     */\r
     public FilteredComparisonResultSet(ComparisonResultSet resultset, ComparisonPairFilterSet[] filters){\r
         this.resultset = resultset;\r
         for(int i = 0; i < filters.length; i++){\r
@@ -78,17 +89,16 @@ public class FilteredComparisonResultSet implements ComparisonResultSet{
         }\r
 \r
         private ComparisonPair findNext(){\r
-            if(iterator.hasNext()){\r
-                for(boolean finding = true; finding && iterator.hasNext(); ){\r
-                    ComparisonPair nextPair = iterator.next();\r
-                    // return the pair which the all filters is passed\r
-                    if(isAllFilterPassed(nextPair)){\r
-                        finding = false;\r
-                        next = nextPair;\r
-                    }\r
+            boolean nowFinding = true;\r
+            while(nowFinding && iterator.hasNext()){\r
+                ComparisonPair nextPair = iterator.next();\r
+                // return the pair which the all filters is passed\r
+                if(isAllFilterPassed(nextPair)){\r
+                    nowFinding = false; // found next value!\r
+                    next = nextPair;\r
                 }\r
             }\r
-            else{\r
+            if(nowFinding && !iterator.hasNext()){\r
                 next = null;\r
             }\r
             return next;\r