rwaldhoff    2003/11/25 11:39:45

  Modified:    functor/src/java/org/apache/commons/functor Algorithms.java
               functor/src/test/org/apache/commons/functor/core/collection
                        TestCollectionAlgorithms.java
               functor/src/test/org/apache/commons/functor/example
                        QuicksortExample.java
  Removed:     functor/src/java/org/apache/commons/functor/core/collection
                        CollectionAlgorithms.java
  Log:
  move functionality of CollectionAlgorithms into Algorithms, fix clients, remove 
CollectionAlgorithms
  
  Revision  Changes    Path
  1.11      +66 -3     
jakarta-commons-sandbox/functor/src/java/org/apache/commons/functor/Algorithms.java
  
  Index: Algorithms.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-commons-sandbox/functor/src/java/org/apache/commons/functor/Algorithms.java,v
  retrieving revision 1.10
  retrieving revision 1.11
  diff -u -r1.10 -r1.11
  --- Algorithms.java   25 Nov 2003 19:21:43 -0000      1.10
  +++ Algorithms.java   25 Nov 2003 19:39:44 -0000      1.11
  @@ -57,7 +57,10 @@
   
   package org.apache.commons.functor;
   
  +import java.util.ArrayList;
  +import java.util.Collection;
   import java.util.Iterator;
  +import java.util.ListIterator;
   import java.util.NoSuchElementException;
   
   import org.apache.commons.functor.core.collection.FilteredIterator;
  @@ -87,8 +90,68 @@
    * @author Jason Horman ([EMAIL PROTECTED])
    * @author Rodney Waldhoff
    */
  -public class Algorithms {
  +public final class Algorithms {
   
  +    /** Public constructor for bean-ish APIs */
  +    public Algorithms() {        
  +    }
  +
  +    public static Collection collect(Iterator iter) {
  +        return collect(iter,new ArrayList());
  +    }
  +    
  +    public static Collection collect(Iterator iter, Collection col) {
  +        while(iter.hasNext()) {
  +            col.add(iter.next());
  +        }
  +        return col;
  +    }
  +    
  +    /**
  +     * [EMAIL PROTECTED] ListIterator#set Set} each element of the
  +     * given [EMAIL PROTECTED] ListIterator ListIterator} to
  +     * the result of applying the 
  +     * given [EMAIL PROTECTED] UnaryFunction UnaryFunction} to
  +     * its original value.
  +     */
  +    public static void transform(ListIterator iter, UnaryFunction func) {
  +        while(iter.hasNext()) {
  +            iter.set(func.evaluate(iter.next()));
  +        }
  +    }
  +
  +    /**
  +     * [EMAIL PROTECTED] Iterator#remove Remove} from the
  +     * given [EMAIL PROTECTED] Iterator Iterator} all elements 
  +     * that fail to match the
  +     * given [EMAIL PROTECTED] UnaryPredicate UnaryPredicate}.
  +     * 
  +     * @see #remove(Iterator,UnaryPredicate)
  +     */
  +    public static void retain(Iterator iter, UnaryPredicate pred) {
  +        while(iter.hasNext()) {
  +            if(!(pred.test(iter.next()))) {
  +                iter.remove();
  +            }
  +        }
  +    }
  +
  +    /**
  +     * [EMAIL PROTECTED] Iterator#remove Renmove} from the
  +     * given [EMAIL PROTECTED] Iterator Iterator} all elements 
  +     * that match the
  +     * given [EMAIL PROTECTED] UnaryPredicate UnaryPredicate}.
  +     * 
  +     * @see #retain(Iterator,UnaryPredicate)
  +     */
  +    public static void remove(Iterator iter, UnaryPredicate pred) {
  +        while(iter.hasNext()) {
  +            if(pred.test(iter.next())) {
  +                iter.remove();
  +            }
  +        }        
  +    }
  +    
       /**
        * Returns an [EMAIL PROTECTED] Iterator} that will apply the given [EMAIL 
PROTECTED] UnaryFunction} to each
        * element when accessed.
  
  
  
  1.9       +22 -22    
jakarta-commons-sandbox/functor/src/test/org/apache/commons/functor/core/collection/TestCollectionAlgorithms.java
  
  Index: TestCollectionAlgorithms.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-commons-sandbox/functor/src/test/org/apache/commons/functor/core/collection/TestCollectionAlgorithms.java,v
  retrieving revision 1.8
  retrieving revision 1.9
  diff -u -r1.8 -r1.9
  --- TestCollectionAlgorithms.java     24 Nov 2003 23:09:13 -0000      1.8
  +++ TestCollectionAlgorithms.java     25 Nov 2003 19:39:45 -0000      1.9
  @@ -68,12 +68,12 @@
   import junit.framework.TestCase;
   import junit.framework.TestSuite;
   
  +import org.apache.commons.functor.Algorithms;
   import org.apache.commons.functor.BinaryFunction;
   import org.apache.commons.functor.UnaryFunction;
   import org.apache.commons.functor.UnaryPredicate;
   import org.apache.commons.functor.UnaryProcedure;
   import org.apache.commons.functor.adapter.LeftBoundPredicate;
  -import org.apache.commons.functor.core.IdentityFunction;
   import org.apache.commons.functor.core.IsEqual;
   
   /**
  @@ -128,11 +128,11 @@
       
       public void testHasPublicConstructor() {
           // some frameworks work best with instantiable classes
  -        assertNotNull(new CollectionAlgorithms());
  +        assertNotNull(new Algorithms());
       }    
       
       public void testCollect() {
  -        Collection result = 
CollectionAlgorithms.collect(list.iterator(),IdentityFunction.instance());
  +        Collection result = Algorithms.collect(list.iterator());
           assertNotNull(result);
           assertEquals(list.size(),result.size());
           assertEquals(list,result);
  @@ -140,7 +140,7 @@
   
       public void testCollect2() {
           Set set = new HashSet();
  -        
assertSame(set,CollectionAlgorithms.collect(list.iterator(),IdentityFunction.instance(),set));
  +        assertSame(set,Algorithms.collect(list.iterator(),set));
           assertEquals(list.size(),set.size());
           for(Iterator iter = list.iterator(); iter.hasNext(); ) {
               assertTrue(set.contains(iter.next()));
  @@ -149,7 +149,7 @@
   
       public void testCollect3() {
           Set set = new HashSet();
  -        
assertSame(set,CollectionAlgorithms.collect(listWithDuplicates.iterator(),IdentityFunction.instance(),set));
  +        assertSame(set,Algorithms.collect(listWithDuplicates.iterator(),set));
           assertTrue(listWithDuplicates.size() > set.size());
           for(Iterator iter = listWithDuplicates.iterator(); iter.hasNext(); ) {
               assertTrue(set.contains(iter.next()));
  @@ -157,14 +157,14 @@
       }    
   
       public void testContains() {
  -        assertTrue(CollectionAlgorithms.contains(list.iterator(),equalsThree));
  -        
assertTrue(!CollectionAlgorithms.contains(list.iterator(),equalsTwentyThree));
  +        assertTrue(Algorithms.contains(list.iterator(),equalsThree));
  +        assertTrue(!Algorithms.contains(list.iterator(),equalsTwentyThree));
       }    
   
       public void testDetect() {
  -        assertEquals(new 
Integer(3),CollectionAlgorithms.detect(list.iterator(),equalsThree));
  +        assertEquals(new Integer(3),Algorithms.detect(list.iterator(),equalsThree));
           try {
  -            CollectionAlgorithms.detect(list.iterator(),equalsTwentyThree);
  +            Algorithms.detect(list.iterator(),equalsTwentyThree);
               fail("Expected NoSuchElementException");
           } catch(NoSuchElementException e) {
               // expected
  @@ -172,42 +172,42 @@
       }    
   
       public void testDetectIfNone() {
  -        assertEquals(new 
Integer(3),CollectionAlgorithms.detect(list.iterator(),equalsThree,"Xyzzy"));
  -        
assertEquals("Xyzzy",CollectionAlgorithms.detect(list.iterator(),equalsTwentyThree,"Xyzzy"));
  +        assertEquals(new 
Integer(3),Algorithms.detect(list.iterator(),equalsThree,"Xyzzy"));
  +        
assertEquals("Xyzzy",Algorithms.detect(list.iterator(),equalsTwentyThree,"Xyzzy"));
       }    
   
       public void testForEach() {
           Summer summer = new Summer();
  -        CollectionAlgorithms.foreach(list.iterator(),summer);
  +        Algorithms.foreach(list.iterator(),summer);
           assertEquals(sum,summer.sum);
       }    
   
       public void testSelect1() {
  -        Collection result = CollectionAlgorithms.select(list.iterator(),isEven);
  +        Collection result = 
Algorithms.collect(Algorithms.select(list.iterator(),isEven));
           assertNotNull(result);
           assertEquals(evens,result);
       }    
   
       public void testSelect2() {
           ArrayList result = new ArrayList();
  -        
assertSame(result,CollectionAlgorithms.select(list.iterator(),isEven,result));
  +        
assertSame(result,Algorithms.collect(Algorithms.select(list.iterator(),isEven),result));
           assertEquals(evens,result);
       }    
   
       public void testReject1() {
  -        Collection result = CollectionAlgorithms.reject(list.iterator(),isOdd);
  +        Collection result = 
Algorithms.collect(Algorithms.reject(list.iterator(),isOdd));
           assertNotNull(result);
           assertEquals(evens,result);
       }    
   
       public void testReject2() {
           ArrayList result = new ArrayList();
  -        
assertSame(result,CollectionAlgorithms.reject(list.iterator(),isOdd,result));
  +        
assertSame(result,Algorithms.collect(Algorithms.reject(list.iterator(),isOdd),result));
           assertEquals(evens,result);
       }    
   
       public void testInject() {
  -        Object result = CollectionAlgorithms.inject(
  +        Object result = Algorithms.inject(
               list.iterator(),
               new Integer(0),
               new BinaryFunction() {
  @@ -219,17 +219,17 @@
       }    
   
       public void testRetain() {
  -        CollectionAlgorithms.retain(list.iterator(),isEven);
  +        Algorithms.retain(list.iterator(),isEven);
           assertEquals(evens,list);
       }
   
       public void testRemove() {
  -        CollectionAlgorithms.remove(list.iterator(),isOdd);
  +        Algorithms.remove(list.iterator(),isOdd);
           assertEquals(evens,list);
       }
   
       public void testTransform() {
  -        CollectionAlgorithms.transform(
  +        Algorithms.transform(
               list.listIterator(),
               new UnaryFunction() {
                   public Object evaluate(Object obj) {
  
  
  
  1.7       +7 -7      
jakarta-commons-sandbox/functor/src/test/org/apache/commons/functor/example/QuicksortExample.java
  
  Index: QuicksortExample.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-commons-sandbox/functor/src/test/org/apache/commons/functor/example/QuicksortExample.java,v
  retrieving revision 1.6
  retrieving revision 1.7
  diff -u -r1.6 -r1.7
  --- QuicksortExample.java     24 Nov 2003 23:09:13 -0000      1.6
  +++ QuicksortExample.java     25 Nov 2003 19:39:45 -0000      1.7
  @@ -65,11 +65,11 @@
   import junit.framework.TestCase;
   import junit.framework.TestSuite;
   
  +import org.apache.commons.functor.Algorithms;
   import org.apache.commons.functor.BinaryFunction;
   import org.apache.commons.functor.UnaryFunction;
   import org.apache.commons.functor.adapter.RightBoundPredicate;
   import org.apache.commons.functor.core.ConstantFunction;
  -import org.apache.commons.functor.core.collection.CollectionAlgorithms;
   import org.apache.commons.functor.core.collection.IsEmpty;
   import org.apache.commons.functor.core.comparator.IsGreaterThanOrEqual;
   import org.apache.commons.functor.core.comparator.IsLessThan;
  @@ -501,11 +501,11 @@
    */
       private BinaryFunction lesserTail = new ObjectListFunction() {
           public Object evaluate(Object head, List tail) {
  -            return CollectionAlgorithms.select(
  +            return Algorithms.collect(Algorithms.select(
                   tail.iterator(),
                   RightBoundPredicate.bind(
                       IsLessThan.getIsLessThan(), 
  -                    head));
  +                    head)));
           }
       };
   
  @@ -516,11 +516,11 @@
    */
       private BinaryFunction greaterTail = new BinaryFunction() {
           public Object evaluate(Object head, Object tail) {
  -            return CollectionAlgorithms.select(
  +            return Algorithms.collect(Algorithms.select(
                   ((List)tail).iterator(),
                   RightBoundPredicate.bind(
                       IsGreaterThanOrEqual.instance(), 
  -                    head));
  +                    head)));
           }
       };
   
  
  
  

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to