From 11260479d7a4d64ee877302a9b7be636cf4e99ee Mon Sep 17 00:00:00 2001 From: tama3 Date: Fri, 30 Mar 2007 04:58:39 +0000 Subject: [PATCH] bug fixed: last element was returned twice git-svn-id: svn+ssh://svn.sourceforge.jp/svnroot/stigmata/trunk@96 acee48c3-7b26-0410-bdac-b3d0e5314bbc --- .../filter/FilteredComparisonResultSet.java | 28 +++++++++++++++------- 1 file changed, 19 insertions(+), 9 deletions(-) diff --git a/src/main/java/jp/naist/se/stigmata/filter/FilteredComparisonResultSet.java b/src/main/java/jp/naist/se/stigmata/filter/FilteredComparisonResultSet.java index 2997054..d788721 100755 --- a/src/main/java/jp/naist/se/stigmata/filter/FilteredComparisonResultSet.java +++ b/src/main/java/jp/naist/se/stigmata/filter/FilteredComparisonResultSet.java @@ -14,6 +14,7 @@ import jp.naist.se.stigmata.ComparisonPairFilterSet; import jp.naist.se.stigmata.ComparisonResultSet; /** + * Filtering {@link ComparisonResultSet ComparisonResultSet}. * * @author Haruaki TAMADA * @version $Revision$ $Date$ @@ -22,10 +23,20 @@ public class FilteredComparisonResultSet implements ComparisonResultSet{ private ComparisonResultSet resultset; private List filters = new ArrayList(); + /** + * constructor. + * + * @param resultset filtering target + */ public FilteredComparisonResultSet(ComparisonResultSet resultset){ this.resultset = resultset; } + /** + * constructor. + * @param resultset filtering target + * @param filters filtering rule + */ public FilteredComparisonResultSet(ComparisonResultSet resultset, ComparisonPairFilterSet[] filters){ this.resultset = resultset; for(int i = 0; i < filters.length; i++){ @@ -78,17 +89,16 @@ public class FilteredComparisonResultSet implements ComparisonResultSet{ } private ComparisonPair findNext(){ - if(iterator.hasNext()){ - for(boolean finding = true; finding && iterator.hasNext(); ){ - ComparisonPair nextPair = iterator.next(); - // return the pair which the all filters is passed - if(isAllFilterPassed(nextPair)){ - finding = false; - next = nextPair; - } + boolean nowFinding = true; + while(nowFinding && iterator.hasNext()){ + ComparisonPair nextPair = iterator.next(); + // return the pair which the all filters is passed + if(isAllFilterPassed(nextPair)){ + nowFinding = false; // found next value! + next = nextPair; } } - else{ + if(nowFinding && !iterator.hasNext()){ next = null; } return next; -- 2.11.0