You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@mahout.apache.org by sr...@apache.org on 2010/10/03 22:53:11 UTC

svn commit: r1004046 [1/4] - in /mahout/trunk: core/src/main/java/org/apache/mahout/cf/taste/impl/common/ core/src/main/java/org/apache/mahout/cf/taste/impl/common/jdbc/ core/src/main/java/org/apache/mahout/cf/taste/impl/eval/ core/src/main/java/org/ap...

Author: srowen
Date: Sun Oct  3 20:53:07 2010
New Revision: 1004046

URL: http://svn.apache.org/viewvc?rev=1004046&view=rev
Log:
MAHOUT-480

Modified:
    mahout/trunk/core/src/main/java/org/apache/mahout/cf/taste/impl/common/Cache.java
    mahout/trunk/core/src/main/java/org/apache/mahout/cf/taste/impl/common/FastByIDMap.java
    mahout/trunk/core/src/main/java/org/apache/mahout/cf/taste/impl/common/FastIDSet.java
    mahout/trunk/core/src/main/java/org/apache/mahout/cf/taste/impl/common/FastMap.java
    mahout/trunk/core/src/main/java/org/apache/mahout/cf/taste/impl/common/LongPrimitiveArrayIterator.java
    mahout/trunk/core/src/main/java/org/apache/mahout/cf/taste/impl/common/WeightedRunningAverage.java
    mahout/trunk/core/src/main/java/org/apache/mahout/cf/taste/impl/common/jdbc/AbstractJDBCComponent.java
    mahout/trunk/core/src/main/java/org/apache/mahout/cf/taste/impl/eval/AbstractDifferenceRecommenderEvaluator.java
    mahout/trunk/core/src/main/java/org/apache/mahout/cf/taste/impl/eval/GenericRecommenderIRStatsEvaluator.java
    mahout/trunk/core/src/main/java/org/apache/mahout/cf/taste/impl/eval/IRStatisticsImpl.java
    mahout/trunk/core/src/main/java/org/apache/mahout/cf/taste/impl/model/GenericBooleanPrefDataModel.java
    mahout/trunk/core/src/main/java/org/apache/mahout/cf/taste/impl/model/GenericDataModel.java
    mahout/trunk/core/src/main/java/org/apache/mahout/cf/taste/impl/model/GenericPreference.java
    mahout/trunk/core/src/main/java/org/apache/mahout/cf/taste/impl/model/PlusAnonymousUserDataModel.java
    mahout/trunk/core/src/main/java/org/apache/mahout/cf/taste/impl/model/file/FileDataModel.java
    mahout/trunk/core/src/main/java/org/apache/mahout/cf/taste/impl/model/file/FileIDMigrator.java
    mahout/trunk/core/src/main/java/org/apache/mahout/cf/taste/impl/model/jdbc/AbstractBooleanPrefJDBCDataModel.java
    mahout/trunk/core/src/main/java/org/apache/mahout/cf/taste/impl/model/jdbc/AbstractJDBCDataModel.java
    mahout/trunk/core/src/main/java/org/apache/mahout/cf/taste/impl/model/jdbc/ConnectionPoolDataSource.java
    mahout/trunk/core/src/main/java/org/apache/mahout/cf/taste/impl/neighborhood/AbstractUserNeighborhood.java
    mahout/trunk/core/src/main/java/org/apache/mahout/cf/taste/impl/neighborhood/CachingUserNeighborhood.java
    mahout/trunk/core/src/main/java/org/apache/mahout/cf/taste/impl/neighborhood/NearestNUserNeighborhood.java
    mahout/trunk/core/src/main/java/org/apache/mahout/cf/taste/impl/neighborhood/ThresholdUserNeighborhood.java
    mahout/trunk/core/src/main/java/org/apache/mahout/cf/taste/impl/recommender/AbstractRecommender.java
    mahout/trunk/core/src/main/java/org/apache/mahout/cf/taste/impl/recommender/CachingRecommender.java
    mahout/trunk/core/src/main/java/org/apache/mahout/cf/taste/impl/recommender/FarthestNeighborClusterSimilarity.java
    mahout/trunk/core/src/main/java/org/apache/mahout/cf/taste/impl/recommender/GenericItemBasedRecommender.java
    mahout/trunk/core/src/main/java/org/apache/mahout/cf/taste/impl/recommender/GenericRecommendedItem.java
    mahout/trunk/core/src/main/java/org/apache/mahout/cf/taste/impl/recommender/GenericUserBasedRecommender.java
    mahout/trunk/core/src/main/java/org/apache/mahout/cf/taste/impl/recommender/ItemAverageRecommender.java
    mahout/trunk/core/src/main/java/org/apache/mahout/cf/taste/impl/recommender/ItemUserAverageRecommender.java
    mahout/trunk/core/src/main/java/org/apache/mahout/cf/taste/impl/recommender/NearestNeighborClusterSimilarity.java
    mahout/trunk/core/src/main/java/org/apache/mahout/cf/taste/impl/recommender/TopItems.java
    mahout/trunk/core/src/main/java/org/apache/mahout/cf/taste/impl/recommender/TreeClusteringRecommender.java
    mahout/trunk/core/src/main/java/org/apache/mahout/cf/taste/impl/recommender/TreeClusteringRecommender2.java
    mahout/trunk/core/src/main/java/org/apache/mahout/cf/taste/impl/recommender/slopeone/MemoryDiffStorage.java
    mahout/trunk/core/src/main/java/org/apache/mahout/cf/taste/impl/recommender/slopeone/SlopeOneRecommender.java
    mahout/trunk/core/src/main/java/org/apache/mahout/cf/taste/impl/recommender/slopeone/file/FileDiffStorage.java
    mahout/trunk/core/src/main/java/org/apache/mahout/cf/taste/impl/recommender/slopeone/jdbc/AbstractJDBCDiffStorage.java
    mahout/trunk/core/src/main/java/org/apache/mahout/cf/taste/impl/recommender/svd/SVDRecommender.java
    mahout/trunk/core/src/main/java/org/apache/mahout/cf/taste/impl/similarity/AbstractSimilarity.java
    mahout/trunk/core/src/main/java/org/apache/mahout/cf/taste/impl/similarity/CachingItemSimilarity.java
    mahout/trunk/core/src/main/java/org/apache/mahout/cf/taste/impl/similarity/CachingUserSimilarity.java
    mahout/trunk/core/src/main/java/org/apache/mahout/cf/taste/impl/similarity/EuclideanDistanceSimilarity.java
    mahout/trunk/core/src/main/java/org/apache/mahout/cf/taste/impl/similarity/GenericItemSimilarity.java
    mahout/trunk/core/src/main/java/org/apache/mahout/cf/taste/impl/similarity/GenericUserSimilarity.java
    mahout/trunk/core/src/main/java/org/apache/mahout/cf/taste/impl/similarity/PearsonCorrelationSimilarity.java
    mahout/trunk/core/src/main/java/org/apache/mahout/cf/taste/impl/similarity/SpearmanCorrelationSimilarity.java
    mahout/trunk/core/src/main/java/org/apache/mahout/cf/taste/impl/similarity/UncenteredCosineSimilarity.java
    mahout/trunk/core/src/main/java/org/apache/mahout/cf/taste/impl/similarity/file/FileItemSimilarity.java
    mahout/trunk/core/src/main/java/org/apache/mahout/cf/taste/impl/transforms/CaseAmplification.java
    mahout/trunk/core/src/main/java/org/apache/mahout/cf/taste/impl/transforms/InverseUserFrequency.java
    mahout/trunk/core/src/main/java/org/apache/mahout/classifier/AbstractVectorClassifier.java
    mahout/trunk/core/src/main/java/org/apache/mahout/classifier/ConfusionMatrix.java
    mahout/trunk/core/src/main/java/org/apache/mahout/classifier/bayes/mapreduce/common/BayesFeatureReducer.java
    mahout/trunk/core/src/main/java/org/apache/mahout/classifier/bayes/mapreduce/common/FeatureLabelComparator.java
    mahout/trunk/core/src/main/java/org/apache/mahout/classifier/bayes/mapreduce/common/FeaturePartitioner.java
    mahout/trunk/core/src/main/java/org/apache/mahout/classifier/evaluation/Auc.java
    mahout/trunk/core/src/main/java/org/apache/mahout/classifier/sequencelearning/hmm/HmmUtils.java
    mahout/trunk/core/src/main/java/org/apache/mahout/classifier/sgd/AbstractOnlineLogisticRegression.java
    mahout/trunk/core/src/main/java/org/apache/mahout/classifier/sgd/CsvRecordFactory.java
    mahout/trunk/core/src/main/java/org/apache/mahout/classifier/sgd/MixedGradient.java
    mahout/trunk/core/src/main/java/org/apache/mahout/classifier/sgd/RankingGradient.java
    mahout/trunk/core/src/main/java/org/apache/mahout/clustering/lda/LDADriver.java
    mahout/trunk/core/src/main/java/org/apache/mahout/clustering/lda/LDAReducer.java
    mahout/trunk/core/src/main/java/org/apache/mahout/clustering/meanshift/MeanShiftCanopyCreatorMapper.java
    mahout/trunk/core/src/main/java/org/apache/mahout/common/AbstractJob.java
    mahout/trunk/core/src/main/java/org/apache/mahout/common/distance/MahalanobisDistanceMeasure.java
    mahout/trunk/core/src/main/java/org/apache/mahout/common/iterator/ArrayIterator.java
    mahout/trunk/core/src/main/java/org/apache/mahout/common/iterator/DelegatingIterator.java
    mahout/trunk/core/src/main/java/org/apache/mahout/common/iterator/IteratorIterable.java
    mahout/trunk/core/src/main/java/org/apache/mahout/common/iterator/IteratorUtils.java
    mahout/trunk/core/src/main/java/org/apache/mahout/df/DecisionForest.java
    mahout/trunk/core/src/main/java/org/apache/mahout/df/ErrorEstimate.java
    mahout/trunk/core/src/main/java/org/apache/mahout/df/callback/SingleTreePredictions.java
    mahout/trunk/core/src/main/java/org/apache/mahout/df/data/DataConverter.java
    mahout/trunk/core/src/main/java/org/apache/mahout/df/data/DataLoader.java
    mahout/trunk/core/src/main/java/org/apache/mahout/df/data/DataUtils.java
    mahout/trunk/core/src/main/java/org/apache/mahout/df/data/Dataset.java
    mahout/trunk/core/src/main/java/org/apache/mahout/df/mapreduce/Builder.java
    mahout/trunk/core/src/main/java/org/apache/mahout/df/mapreduce/MapredMapper.java
    mahout/trunk/core/src/main/java/org/apache/mahout/df/mapreduce/partial/InterResults.java
    mahout/trunk/core/src/main/java/org/apache/mahout/df/mapreduce/partial/PartialBuilder.java
    mahout/trunk/core/src/main/java/org/apache/mahout/df/mapreduce/partial/Step0Job.java
    mahout/trunk/core/src/main/java/org/apache/mahout/df/mapreduce/partial/Step1Mapper.java
    mahout/trunk/core/src/main/java/org/apache/mahout/df/mapreduce/partial/Step2Mapper.java
    mahout/trunk/core/src/main/java/org/apache/mahout/df/mapreduce/partial/TreeID.java
    mahout/trunk/core/src/main/java/org/apache/mahout/df/tools/UDistrib.java
    mahout/trunk/core/src/main/java/org/apache/mahout/ep/Mapping.java
    mahout/trunk/core/src/main/java/org/apache/mahout/ga/watchmaker/EvalMapper.java
    mahout/trunk/core/src/main/java/org/apache/mahout/ga/watchmaker/STFitnessEvaluator.java
    mahout/trunk/core/src/main/java/org/apache/mahout/math/Varint.java
    mahout/trunk/core/src/main/java/org/apache/mahout/math/VectorWritable.java
    mahout/trunk/core/src/main/java/org/apache/mahout/math/hadoop/TimesSquaredJob.java
    mahout/trunk/core/src/main/java/org/apache/mahout/vectorizer/DictionaryVectorizer.java
    mahout/trunk/core/src/main/java/org/apache/mahout/vectorizer/common/PartialVectorMerger.java
    mahout/trunk/core/src/main/java/org/apache/mahout/vectorizer/term/TFPartialVectorReducer.java
    mahout/trunk/core/src/main/java/org/apache/mahout/vectorizer/tfidf/TFIDFConverter.java
    mahout/trunk/core/src/main/java/org/apache/mahout/vectorizer/tfidf/TFIDFPartialVectorReducer.java
    mahout/trunk/core/src/main/java/org/apache/mahout/vectors/CachingContinuousValueEncoder.java
    mahout/trunk/core/src/main/java/org/apache/mahout/vectors/CachingStaticWordValueEncoder.java
    mahout/trunk/core/src/main/java/org/apache/mahout/vectors/InteractionValueEncoder.java
    mahout/trunk/core/src/test/java/org/apache/mahout/ga/watchmaker/utils/DummyCandidate.java
    mahout/trunk/examples/src/main/java/org/apache/mahout/cf/taste/example/netflix/NetflixDataModel.java
    mahout/trunk/examples/src/main/java/org/apache/mahout/cf/taste/example/netflix/NetflixFileDataModel.java
    mahout/trunk/examples/src/main/java/org/apache/mahout/cf/taste/example/netflix/TransposeToByUser.java
    mahout/trunk/examples/src/main/java/org/apache/mahout/classifier/bayes/PrepareTwentyNewsgroups.java
    mahout/trunk/examples/src/main/java/org/apache/mahout/classifier/bayes/SplitBayesInput.java
    mahout/trunk/examples/src/main/java/org/apache/mahout/classifier/sgd/LogisticModelParameters.java
    mahout/trunk/examples/src/main/java/org/apache/mahout/classifier/sgd/PrintResourceOrFile.java
    mahout/trunk/examples/src/main/java/org/apache/mahout/ga/watchmaker/cd/CDCrossover.java
    mahout/trunk/examples/src/main/java/org/apache/mahout/ga/watchmaker/cd/CDMutation.java
    mahout/trunk/examples/src/main/java/org/apache/mahout/ga/watchmaker/cd/CDRule.java
    mahout/trunk/examples/src/main/java/org/apache/mahout/ga/watchmaker/cd/DataSet.java
    mahout/trunk/examples/src/main/java/org/apache/mahout/ga/watchmaker/cd/FileInfoParser.java
    mahout/trunk/examples/src/main/java/org/apache/mahout/ga/watchmaker/cd/NominalAttr.java
    mahout/trunk/examples/src/main/java/org/apache/mahout/ga/watchmaker/cd/hadoop/CDMahoutEvaluator.java
    mahout/trunk/examples/src/main/java/org/apache/mahout/ga/watchmaker/cd/hadoop/CDMapper.java
    mahout/trunk/examples/src/main/java/org/apache/mahout/ga/watchmaker/cd/hadoop/DatasetSplit.java
    mahout/trunk/examples/src/main/java/org/apache/mahout/ga/watchmaker/cd/tool/CDInfosTool.java
    mahout/trunk/examples/src/main/java/org/apache/mahout/ga/watchmaker/cd/tool/Descriptors.java
    mahout/trunk/examples/src/main/java/org/apache/mahout/ga/watchmaker/cd/tool/ToolCombiner.java
    mahout/trunk/examples/src/main/java/org/apache/mahout/ga/watchmaker/cd/tool/ToolMapper.java
    mahout/trunk/examples/src/main/java/org/apache/mahout/ga/watchmaker/cd/tool/ToolReducer.java
    mahout/trunk/examples/src/main/java/org/apache/mahout/ga/watchmaker/travellingsalesman/EvolutionaryTravellingSalesman.java
    mahout/trunk/examples/src/test/java/org/apache/mahout/ga/watchmaker/cd/hadoop/DatasetSplitTest.java
    mahout/trunk/examples/src/test/java/org/apache/mahout/ga/watchmaker/cd/utils/MockDataSet.java
    mahout/trunk/utils/src/main/java/org/apache/mahout/utils/vectors/lucene/LuceneIterable.java

Modified: mahout/trunk/core/src/main/java/org/apache/mahout/cf/taste/impl/common/Cache.java
URL: http://svn.apache.org/viewvc/mahout/trunk/core/src/main/java/org/apache/mahout/cf/taste/impl/common/Cache.java?rev=1004046&r1=1004045&r2=1004046&view=diff
==============================================================================
--- mahout/trunk/core/src/main/java/org/apache/mahout/cf/taste/impl/common/Cache.java (original)
+++ mahout/trunk/core/src/main/java/org/apache/mahout/cf/taste/impl/common/Cache.java Sun Oct  3 20:53:07 2010
@@ -17,6 +17,7 @@
 
 package org.apache.mahout.cf.taste.impl.common;
 
+import com.google.common.base.Preconditions;
 import org.apache.mahout.cf.taste.common.TasteException;
 
 /**
@@ -65,13 +66,9 @@ public final class Cache<K,V> implements
    *          maximum number of entries the cache will store before evicting some
    */
   public Cache(Retriever<? super K,? extends V> retriever, int maxEntries) {
-    if (retriever == null) {
-      throw new IllegalArgumentException("retriever is null");
-    }
-    if (maxEntries < 1) {
-      throw new IllegalArgumentException("maxEntries must be at least 1");
-    }
-    cache = new FastMap<K,V>(11, maxEntries);
+    Preconditions.checkArgument(retriever != null, "retriever is null");
+    Preconditions.checkArgument(maxEntries >= 1, "maxEntries must be at least 1");
+    cache = new FastMap<K, V>(11, maxEntries);
     this.retriever = retriever;
   }
   

Modified: mahout/trunk/core/src/main/java/org/apache/mahout/cf/taste/impl/common/FastByIDMap.java
URL: http://svn.apache.org/viewvc/mahout/trunk/core/src/main/java/org/apache/mahout/cf/taste/impl/common/FastByIDMap.java?rev=1004046&r1=1004045&r2=1004046&view=diff
==============================================================================
--- mahout/trunk/core/src/main/java/org/apache/mahout/cf/taste/impl/common/FastByIDMap.java (original)
+++ mahout/trunk/core/src/main/java/org/apache/mahout/cf/taste/impl/common/FastByIDMap.java Sun Oct  3 20:53:07 2010
@@ -28,6 +28,8 @@ import java.util.Set;
 
 import org.apache.mahout.common.RandomUtils;
 
+import com.google.common.base.Preconditions;
+
 /**
  * @see FastMap
  * @see FastIDSet
@@ -71,16 +73,10 @@ public final class FastByIDMap<V> implem
    *           {@link RandomUtils#MAX_INT_SMALLER_TWIN_PRIME}
    */
   public FastByIDMap(int size, int maxSize) {
-    if (size < 0) {
-      throw new IllegalArgumentException("size must be at least 0");
-    }
+    Preconditions.checkArgument(size >= 0, "size must be at least 0");
     int max = (int) (RandomUtils.MAX_INT_SMALLER_TWIN_PRIME / ALLOWED_LOAD_FACTOR);
-    if (size >= max) {
-      throw new IllegalArgumentException("size must be less than " + max);
-    }
-    if (maxSize < 1) {
-      throw new IllegalArgumentException("maxSize must be at least 1");
-    }
+    Preconditions.checkArgument(size < max, "size must be less than " + max);
+    Preconditions.checkArgument(maxSize >= 1, "maxSize must be at least 1");
     int hashSize = RandomUtils.nextTwinPrime((int) (ALLOWED_LOAD_FACTOR * size));
     keys = new long[hashSize];
     Arrays.fill(keys, NULL);
@@ -169,9 +165,7 @@ public final class FastByIDMap<V> implem
   }
   
   public V put(long key, V value) {
-    if ((key == NULL) || (key == REMOVED)) {
-      throw new IllegalArgumentException();
-    }
+    Preconditions.checkArgument(key != NULL && key != REMOVED);
     if (value == null) {
       throw new NullPointerException();
     }
@@ -521,9 +515,8 @@ public final class FastByIDMap<V> implem
       
       @Override
       public V setValue(V value) {
-        if (value == null) {
-          throw new IllegalArgumentException();
-        }
+        Preconditions.checkArgument(value != null);
+
         V oldValue = values[index];
         values[index] = value;
         return oldValue;
@@ -566,4 +559,4 @@ public final class FastByIDMap<V> implem
     
   }
   
-}
\ No newline at end of file
+}

Modified: mahout/trunk/core/src/main/java/org/apache/mahout/cf/taste/impl/common/FastIDSet.java
URL: http://svn.apache.org/viewvc/mahout/trunk/core/src/main/java/org/apache/mahout/cf/taste/impl/common/FastIDSet.java?rev=1004046&r1=1004045&r2=1004046&view=diff
==============================================================================
--- mahout/trunk/core/src/main/java/org/apache/mahout/cf/taste/impl/common/FastIDSet.java (original)
+++ mahout/trunk/core/src/main/java/org/apache/mahout/cf/taste/impl/common/FastIDSet.java Sun Oct  3 20:53:07 2010
@@ -24,6 +24,8 @@ import java.util.NoSuchElementException;
 
 import org.apache.mahout.common.RandomUtils;
 
+import com.google.common.base.Preconditions;
+
 /**
  * @see FastByIDMap
  */
@@ -45,13 +47,9 @@ public final class FastIDSet implements 
   }
   
   public FastIDSet(int size) {
-    if (size < 0) {
-      throw new IllegalArgumentException("size must be at least 0");
-    }
+    Preconditions.checkArgument(size >= 0, "size must be at least 0");
     int max = (int) (RandomUtils.MAX_INT_SMALLER_TWIN_PRIME / ALLOWED_LOAD_FACTOR);
-    if (size >= max) {
-      throw new IllegalArgumentException("size must be less than " + max);
-    }
+    Preconditions.checkArgument(size < max, "size must be less than %d", max);
     int hashSize = RandomUtils.nextTwinPrime((int) (ALLOWED_LOAD_FACTOR * size));
     keys = new long[hashSize];
     Arrays.fill(keys, NULL);
@@ -113,9 +111,8 @@ public final class FastIDSet implements 
   }
   
   public boolean add(long key) {
-    if ((key == NULL) || (key == REMOVED)) {
-      throw new IllegalArgumentException();
-    }
+    Preconditions.checkArgument(key != NULL && key != REMOVED);
+
     // If less than half the slots are open, let's clear it up
     if (numSlotsUsed * ALLOWED_LOAD_FACTOR >= keys.length) {
       // If over half the slots used are actual entries, let's grow
@@ -417,4 +414,4 @@ public final class FastIDSet implements 
     
   }
   
-}
\ No newline at end of file
+}

Modified: mahout/trunk/core/src/main/java/org/apache/mahout/cf/taste/impl/common/FastMap.java
URL: http://svn.apache.org/viewvc/mahout/trunk/core/src/main/java/org/apache/mahout/cf/taste/impl/common/FastMap.java?rev=1004046&r1=1004045&r2=1004046&view=diff
==============================================================================
--- mahout/trunk/core/src/main/java/org/apache/mahout/cf/taste/impl/common/FastMap.java (original)
+++ mahout/trunk/core/src/main/java/org/apache/mahout/cf/taste/impl/common/FastMap.java Sun Oct  3 20:53:07 2010
@@ -29,6 +29,8 @@ import java.util.Set;
 
 import org.apache.mahout.common.RandomUtils;
 
+import com.google.common.base.Preconditions;
+
 /**
  * <p>
  * This is an optimized {@link Map} implementation, based on algorithms described in Knuth's "Art of Computer
@@ -92,16 +94,10 @@ public final class FastMap<K,V> implemen
    *           {@link RandomUtils#MAX_INT_SMALLER_TWIN_PRIME}
    */
   public FastMap(int size, int maxSize) {
-    if (size < 0) {
-      throw new IllegalArgumentException("size must be at least 0");
-    }
+    Preconditions.checkArgument(size >= 0, "size must be at least 0");
     int max = (int) (RandomUtils.MAX_INT_SMALLER_TWIN_PRIME / ALLOWED_LOAD_FACTOR);
-    if (size >= max) {
-      throw new IllegalArgumentException("size must be less than " + max);
-    }
-    if (maxSize < 1) {
-      throw new IllegalArgumentException("maxSize must be at least 1");
-    }
+    Preconditions.checkArgument(size < max, "size must be less than " + max);
+    Preconditions.checkArgument(maxSize >= 1, "maxSize must be at least 1");
     int hashSize = RandomUtils.nextTwinPrime((int) (ALLOWED_LOAD_FACTOR * size));
     keys = (K[]) new Object[hashSize];
     values = (V[]) new Object[hashSize];
@@ -486,9 +482,7 @@ public final class FastMap<K,V> implemen
       
       @Override
       public V setValue(V value) {
-        if (value == null) {
-          throw new IllegalArgumentException();
-        }
+        Preconditions.checkArgument(value != null);
         V oldValue = values[index];
         values[index] = value;
         return oldValue;

Modified: mahout/trunk/core/src/main/java/org/apache/mahout/cf/taste/impl/common/LongPrimitiveArrayIterator.java
URL: http://svn.apache.org/viewvc/mahout/trunk/core/src/main/java/org/apache/mahout/cf/taste/impl/common/LongPrimitiveArrayIterator.java?rev=1004046&r1=1004045&r2=1004046&view=diff
==============================================================================
--- mahout/trunk/core/src/main/java/org/apache/mahout/cf/taste/impl/common/LongPrimitiveArrayIterator.java (original)
+++ mahout/trunk/core/src/main/java/org/apache/mahout/cf/taste/impl/common/LongPrimitiveArrayIterator.java Sun Oct  3 20:53:07 2010
@@ -19,6 +19,8 @@ package org.apache.mahout.cf.taste.impl.
 
 import java.util.NoSuchElementException;
 
+import com.google.common.base.Preconditions;
+
 /**
  * While long[] is an Iterable, it is not an Iterable&lt;Long&gt;. This adapter class addresses that.
  */
@@ -37,9 +39,7 @@ public final class LongPrimitiveArrayIte
    *          array to iterate over
    */
   public LongPrimitiveArrayIterator(long[] array) {
-    if (array == null) {
-      throw new IllegalArgumentException("array is null");
-    }
+    Preconditions.checkArgument(array != null, "array is null");
     this.array = array; // yeah, not going to copy the array here, for performance
     this.position = 0;
     this.max = array.length;
@@ -91,4 +91,4 @@ public final class LongPrimitiveArrayIte
     return "LongPrimitiveArrayIterator";
   }
   
-}
\ No newline at end of file
+}

Modified: mahout/trunk/core/src/main/java/org/apache/mahout/cf/taste/impl/common/WeightedRunningAverage.java
URL: http://svn.apache.org/viewvc/mahout/trunk/core/src/main/java/org/apache/mahout/cf/taste/impl/common/WeightedRunningAverage.java?rev=1004046&r1=1004045&r2=1004046&view=diff
==============================================================================
--- mahout/trunk/core/src/main/java/org/apache/mahout/cf/taste/impl/common/WeightedRunningAverage.java (original)
+++ mahout/trunk/core/src/main/java/org/apache/mahout/cf/taste/impl/common/WeightedRunningAverage.java Sun Oct  3 20:53:07 2010
@@ -19,6 +19,8 @@ package org.apache.mahout.cf.taste.impl.
 
 import java.io.Serializable;
 
+import com.google.common.base.Preconditions;
+
 public final class WeightedRunningAverage implements RunningAverage, Serializable {
   
   private double totalWeight;
@@ -66,9 +68,7 @@ public final class WeightedRunningAverag
   }
   
   public synchronized void changeDatum(double delta, double weight) {
-    if (weight > totalWeight) {
-      throw new IllegalArgumentException();
-    }
+    Preconditions.checkArgument(weight <= totalWeight);
     average += delta * weight / totalWeight;
   }
   

Modified: mahout/trunk/core/src/main/java/org/apache/mahout/cf/taste/impl/common/jdbc/AbstractJDBCComponent.java
URL: http://svn.apache.org/viewvc/mahout/trunk/core/src/main/java/org/apache/mahout/cf/taste/impl/common/jdbc/AbstractJDBCComponent.java?rev=1004046&r1=1004045&r2=1004046&view=diff
==============================================================================
--- mahout/trunk/core/src/main/java/org/apache/mahout/cf/taste/impl/common/jdbc/AbstractJDBCComponent.java (original)
+++ mahout/trunk/core/src/main/java/org/apache/mahout/cf/taste/impl/common/jdbc/AbstractJDBCComponent.java Sun Oct  3 20:53:07 2010
@@ -29,6 +29,8 @@ import org.apache.mahout.cf.taste.common
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
+import com.google.common.base.Preconditions;
+
 /**
  * A helper class with common elements for several JDBC-related components.
  */
@@ -40,16 +42,14 @@ public abstract class AbstractJDBCCompon
   protected static final String DEFAULT_DATASOURCE_NAME = "jdbc/taste";
   
   protected static void checkNotNullAndLog(String argName, Object value) {
-    if ((value == null) || (value.toString().length() == 0)) {
-      throw new IllegalArgumentException(argName + " is null or empty");
-    }
+    Preconditions.checkArgument(value != null && value.toString().length() != 0,
+      argName + " is null or empty");
     log.debug("{}: {}", argName, value);
   }
   
   protected static void checkNotNullAndLog(String argName, Object[] values) {
-    if ((values == null) || (values.length == 0)) {
-      throw new IllegalArgumentException(argName + " is null or zero-length");
-    }
+    Preconditions.checkArgument(values != null && values.length != 0,
+      argName + " is null or zero-length" );
     for (Object value : values) {
       checkNotNullAndLog(argName, value);
     }

Modified: mahout/trunk/core/src/main/java/org/apache/mahout/cf/taste/impl/eval/AbstractDifferenceRecommenderEvaluator.java
URL: http://svn.apache.org/viewvc/mahout/trunk/core/src/main/java/org/apache/mahout/cf/taste/impl/eval/AbstractDifferenceRecommenderEvaluator.java?rev=1004046&r1=1004045&r2=1004046&view=diff
==============================================================================
--- mahout/trunk/core/src/main/java/org/apache/mahout/cf/taste/impl/eval/AbstractDifferenceRecommenderEvaluator.java (original)
+++ mahout/trunk/core/src/main/java/org/apache/mahout/cf/taste/impl/eval/AbstractDifferenceRecommenderEvaluator.java Sun Oct  3 20:53:07 2010
@@ -50,6 +50,8 @@ import org.apache.mahout.common.RandomUt
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
+import com.google.common.base.Preconditions;
+
 /**
  * Abstract superclass of a couple implementations, providing shared functionality.
  */
@@ -93,22 +95,14 @@ abstract class AbstractDifferenceRecomme
                                DataModel dataModel,
                                double trainingPercentage,
                                double evaluationPercentage) throws TasteException {
-    
-    if (recommenderBuilder == null) {
-      throw new IllegalArgumentException("recommenderBuilder is null");
-    }
-    if (dataModel == null) {
-      throw new IllegalArgumentException("dataModel is null");
-    }
-    if (Double.isNaN(trainingPercentage) || (trainingPercentage <= 0.0) || (trainingPercentage >= 1.0)) {
-      throw new IllegalArgumentException("Invalid trainingPercentage: " + trainingPercentage);
-    }
-    if (Double.isNaN(evaluationPercentage) || (evaluationPercentage <= 0.0) || (evaluationPercentage > 1.0)) {
-      throw new IllegalArgumentException("Invalid evaluationPercentage: " + evaluationPercentage);
-    }
-    
-    log.info("Beginning evaluation using {} of {}",
-      trainingPercentage, dataModel);
+    Preconditions.checkArgument(recommenderBuilder != null, "recommenderBuilder is null");
+    Preconditions.checkArgument(dataModel != null, "dataModel is null");
+    Preconditions.checkArgument(trainingPercentage >= 0.0 && trainingPercentage <= 1.0,
+      "Invalid trainingPercentage: " + trainingPercentage);
+    Preconditions.checkArgument(evaluationPercentage >= 0.0 && evaluationPercentage <= 1.0,
+      "Invalid evaluationPercentage: " + evaluationPercentage);
+
+    log.info("Beginning evaluation using {} of {}", trainingPercentage, dataModel);
     
     int numUsers = dataModel.getNumUsers();
     FastByIDMap<PreferenceArray> trainingUsers = new FastByIDMap<PreferenceArray>(

Modified: mahout/trunk/core/src/main/java/org/apache/mahout/cf/taste/impl/eval/GenericRecommenderIRStatsEvaluator.java
URL: http://svn.apache.org/viewvc/mahout/trunk/core/src/main/java/org/apache/mahout/cf/taste/impl/eval/GenericRecommenderIRStatsEvaluator.java?rev=1004046&r1=1004045&r2=1004046&view=diff
==============================================================================
--- mahout/trunk/core/src/main/java/org/apache/mahout/cf/taste/impl/eval/GenericRecommenderIRStatsEvaluator.java (original)
+++ mahout/trunk/core/src/main/java/org/apache/mahout/cf/taste/impl/eval/GenericRecommenderIRStatsEvaluator.java Sun Oct  3 20:53:07 2010
@@ -47,6 +47,8 @@ import org.apache.mahout.common.RandomUt
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
+import com.google.common.base.Preconditions;
+
 /**
  * <p>
  * For each user, these implementation determine the top <code>n</code> preferences, then evaluate the IR
@@ -81,20 +83,12 @@ public final class GenericRecommenderIRS
                                int at,
                                double relevanceThreshold,
                                double evaluationPercentage) throws TasteException {
-    
-    if (recommenderBuilder == null) {
-      throw new IllegalArgumentException("recommenderBuilder is null");
-    }
-    if (dataModel == null) {
-      throw new IllegalArgumentException("dataModel is null");
-    }
-    if (at < 1) {
-      throw new IllegalArgumentException("at must be at least 1");
-    }
-    if (Double.isNaN(evaluationPercentage) || (evaluationPercentage <= 0.0) || (evaluationPercentage > 1.0)) {
-      throw new IllegalArgumentException("Invalid evaluationPercentage: " + evaluationPercentage);
-    }
-    
+    Preconditions.checkArgument(recommenderBuilder != null, "recommenderBuilder is null");
+    Preconditions.checkArgument(dataModel != null, "dataModel is null");
+    Preconditions.checkArgument(at >= 1, "at must be at least 1");
+    Preconditions.checkArgument(evaluationPercentage > 0.0 && evaluationPercentage <= 1.0,
+      "Invalid evaluationPercentage: %s", evaluationPercentage);
+
     int numItems = dataModel.getNumItems();
     RunningAverage precision = new FullRunningAverage();
     RunningAverage recall = new FullRunningAverage();
@@ -111,7 +105,7 @@ public final class GenericRecommenderIRS
           // Really not enough prefs to meaningfully evaluate this user
           continue;
         }
-        
+
         // List some most-preferred items that would count as (most) "relevant" results
         double theRelevanceThreshold =
             Double.isNaN(relevanceThreshold) ? computeThreshold(prefs) : relevanceThreshold;
@@ -130,17 +124,17 @@ public final class GenericRecommenderIRS
             processOtherUser(userID, relevantItemIDs, trainingUsers, it2
                 .nextLong(), dataModel);
           }
-          
+
           DataModel trainingModel = dataModelBuilder == null ? new GenericDataModel(trainingUsers)
               : dataModelBuilder.buildDataModel(trainingUsers);
           Recommender recommender = recommenderBuilder.buildRecommender(trainingModel);
-          
+
           try {
             trainingModel.getPreferencesFromUser(userID);
           } catch (NoSuchUserException nsee) {
             continue; // Oops we excluded all prefs for the user -- just move on
           }
-          
+
           int intersectionSize = 0;
           List<RecommendedItem> recommendedItems = recommender.recommend(userID, at, rescorer);
           for (RecommendedItem recommendedItem : recommendedItems) {
@@ -157,7 +151,7 @@ public final class GenericRecommenderIRS
             fallOut.addDatum((double) (numRecommendedItems - intersectionSize)
                              / (double) (numItems - numRelevantItems));
           }
-          
+
           long end = System.currentTimeMillis();
           GenericRecommenderIRStatsEvaluator.log.info("Evaluated with user {} in {}ms", userID, end - start);
           log.info("Precision/recall/fall-out: {} / {} / {}",
@@ -165,7 +159,7 @@ public final class GenericRecommenderIRS
         }
       }
     }
-    
+
     return new IRStatisticsImpl(precision.getAverage(), recall.getAverage(), fallOut.getAverage());
   }
   

Modified: mahout/trunk/core/src/main/java/org/apache/mahout/cf/taste/impl/eval/IRStatisticsImpl.java
URL: http://svn.apache.org/viewvc/mahout/trunk/core/src/main/java/org/apache/mahout/cf/taste/impl/eval/IRStatisticsImpl.java?rev=1004046&r1=1004045&r2=1004046&view=diff
==============================================================================
--- mahout/trunk/core/src/main/java/org/apache/mahout/cf/taste/impl/eval/IRStatisticsImpl.java (original)
+++ mahout/trunk/core/src/main/java/org/apache/mahout/cf/taste/impl/eval/IRStatisticsImpl.java Sun Oct  3 20:53:07 2010
@@ -21,6 +21,8 @@ import java.io.Serializable;
 
 import org.apache.mahout.cf.taste.eval.IRStatistics;
 
+import com.google.common.base.Preconditions;
+
 public final class IRStatisticsImpl implements IRStatistics, Serializable {
   
   private final double precision;
@@ -28,15 +30,9 @@ public final class IRStatisticsImpl impl
   private final double fallOut;
   
   IRStatisticsImpl(double precision, double recall, double fallOut) {
-    if ((precision < 0.0) || (precision > 1.0)) {
-      throw new IllegalArgumentException("Illegal precision: " + precision);
-    }
-    if ((recall < 0.0) || (recall > 1.0)) {
-      throw new IllegalArgumentException("Illegal recall: " + recall);
-    }
-    if ((fallOut < 0.0) || (fallOut > 1.0)) {
-      throw new IllegalArgumentException("Illegal fallOut: " + fallOut);
-    }
+    Preconditions.checkArgument(precision >= 0.0 && precision <= 1.0, "Illegal precision: " + precision);
+    Preconditions.checkArgument(recall >= 0.0 && recall <= 1.0, "Illegal recall: " + recall);
+    Preconditions.checkArgument(fallOut >= 0.0 && fallOut <= 1.0, "Illegal fallOut: " + fallOut);
     this.precision = precision;
     this.recall = recall;
     this.fallOut = fallOut;
@@ -73,4 +69,4 @@ public final class IRStatisticsImpl impl
     return "IRStatisticsImpl[precision:" + precision + ",recall:" + recall + ",fallOut:" + fallOut + ']';
   }
   
-}
\ No newline at end of file
+}

Modified: mahout/trunk/core/src/main/java/org/apache/mahout/cf/taste/impl/model/GenericBooleanPrefDataModel.java
URL: http://svn.apache.org/viewvc/mahout/trunk/core/src/main/java/org/apache/mahout/cf/taste/impl/model/GenericBooleanPrefDataModel.java?rev=1004046&r1=1004045&r2=1004046&view=diff
==============================================================================
--- mahout/trunk/core/src/main/java/org/apache/mahout/cf/taste/impl/model/GenericBooleanPrefDataModel.java (original)
+++ mahout/trunk/core/src/main/java/org/apache/mahout/cf/taste/impl/model/GenericBooleanPrefDataModel.java Sun Oct  3 20:53:07 2010
@@ -32,6 +32,8 @@ import org.apache.mahout.cf.taste.impl.c
 import org.apache.mahout.cf.taste.model.DataModel;
 import org.apache.mahout.cf.taste.model.PreferenceArray;
 
+import com.google.common.base.Preconditions;
+
 /**
  * <p>
  * A simple {@link DataModel} which uses given user data as its data source. This implementation
@@ -69,14 +71,12 @@ public final class GenericBooleanPrefDat
    *  User IDs are mapped to maps of item IDs to Long timestamps.
    */
   public GenericBooleanPrefDataModel(FastByIDMap<FastIDSet> userData, FastByIDMap<FastByIDMap<Long>> timestamps) {
-    if (userData == null) {
-      throw new IllegalArgumentException("userData is null");
-    }
-    
+    Preconditions.checkArgument(userData != null, "userData is null");
+
     this.preferenceFromUsers = userData;
     this.preferenceForItems = new FastByIDMap<FastIDSet>();
     FastIDSet itemIDSet = new FastIDSet();
-    for (Map.Entry<Long,FastIDSet> entry : preferenceFromUsers.entrySet()) {
+    for (Map.Entry<Long, FastIDSet> entry : preferenceFromUsers.entrySet()) {
       long userID = entry.getKey();
       FastIDSet itemIDs = entry.getValue();
       itemIDSet.addAll(itemIDs);
@@ -91,11 +91,11 @@ public final class GenericBooleanPrefDat
         userIDs.add(userID);
       }
     }
-    
+
     this.itemIDs = itemIDSet.toArray();
     itemIDSet = null; // Might help GC -- this is big
     Arrays.sort(itemIDs);
-    
+
     this.userIDs = new long[userData.size()];
     int i = 0;
     LongPrimitiveIterator it = userData.keySetIterator();
@@ -254,9 +254,8 @@ public final class GenericBooleanPrefDat
   
   @Override
   public int getNumUsersWithPreferenceFor(long... itemIDs) {
-    if (itemIDs == null || itemIDs.length == 0) {
-      throw new IllegalArgumentException("itemIDs is null or empty");
-    }
+    Preconditions.checkArgument(itemIDs != null, "itemIDs is null");
+    Preconditions.checkArgument(itemIDs.length == 1 || itemIDs.length == 2, "Illegal number of IDs", itemIDs.length);
     FastIDSet userIDs1 = preferenceForItems.get(itemIDs[0]);
     if (userIDs1 == null) {
       return 0;
@@ -265,14 +264,13 @@ public final class GenericBooleanPrefDat
     if (itemIDs.length == 1) {
       return userIDs1.size();
     }
-    
-    if (itemIDs.length == 2) {
-      FastIDSet userIDs2 = preferenceForItems.get(itemIDs[1]);
-      if (userIDs2 == null) {
-        return 0;
-      }
-      return userIDs1.intersectionSize(userIDs2);
+
+    // itemIDs.length == 2
+    FastIDSet userIDs2 = preferenceForItems.get(itemIDs[1]);
+    if (userIDs2 == null) {
+      return 0;
     }
+    return userIDs1.intersectionSize(userIDs2);
 
     /*
     FastIDSet intersection = new FastIDSet(userIDs1.size());
@@ -288,7 +286,6 @@ public final class GenericBooleanPrefDat
     }
     return intersection.size();
      */
-    throw new IllegalArgumentException("Illegal number of item IDs: " + itemIDs.length);
   }
   
   @Override

Modified: mahout/trunk/core/src/main/java/org/apache/mahout/cf/taste/impl/model/GenericDataModel.java
URL: http://svn.apache.org/viewvc/mahout/trunk/core/src/main/java/org/apache/mahout/cf/taste/impl/model/GenericDataModel.java?rev=1004046&r1=1004045&r2=1004046&view=diff
==============================================================================
--- mahout/trunk/core/src/main/java/org/apache/mahout/cf/taste/impl/model/GenericDataModel.java (original)
+++ mahout/trunk/core/src/main/java/org/apache/mahout/cf/taste/impl/model/GenericDataModel.java Sun Oct  3 20:53:07 2010
@@ -37,6 +37,8 @@ import org.apache.mahout.cf.taste.model.
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
+import com.google.common.base.Preconditions;
+
 /**
  * <p>
  * A simple {@link DataModel} which uses a given {@link List} of users as its data source. This implementation
@@ -76,17 +78,15 @@ public final class GenericDataModel exte
    *  User IDs are mapped to maps of item IDs to Long timestamps.
    */
   public GenericDataModel(FastByIDMap<PreferenceArray> userData, FastByIDMap<FastByIDMap<Long>> timestamps) {
-    if (userData == null) {
-      throw new IllegalArgumentException("userData is null");
-    }
-    
+    Preconditions.checkArgument(userData != null, "userData is null");
+
     this.preferenceFromUsers = userData;
     FastByIDMap<Collection<Preference>> prefsForItems = new FastByIDMap<Collection<Preference>>();
     FastIDSet itemIDSet = new FastIDSet();
     int currentCount = 0;
     float maxPrefValue = Float.NEGATIVE_INFINITY;
     float minPrefValue = Float.POSITIVE_INFINITY;
-    for (Map.Entry<Long,PreferenceArray> entry : preferenceFromUsers.entrySet()) {
+    for (Map.Entry<Long, PreferenceArray> entry : preferenceFromUsers.entrySet()) {
       PreferenceArray prefs = entry.getValue();
       prefs.sortByItem();
       for (Preference preference : prefs) {
@@ -114,17 +114,17 @@ public final class GenericDataModel exte
 
     setMinPreference(minPrefValue);
     setMaxPreference(maxPrefValue);
-    
+
     this.itemIDs = itemIDSet.toArray();
     itemIDSet = null; // Might help GC -- this is big
     Arrays.sort(itemIDs);
-    
+
     this.preferenceForItems = toDataMap(prefsForItems, false);
-    
-    for (Map.Entry<Long,PreferenceArray> entry : preferenceForItems.entrySet()) {
+
+    for (Map.Entry<Long, PreferenceArray> entry : preferenceForItems.entrySet()) {
       entry.getValue().sortByUser();
     }
-    
+
     this.userIDs = new long[userData.size()];
     int i = 0;
     LongPrimitiveIterator it = userData.keySetIterator();
@@ -269,9 +269,8 @@ public final class GenericDataModel exte
   
   @Override
   public int getNumUsersWithPreferenceFor(long... itemIDs) {
-    if (itemIDs == null || itemIDs.length == 0) {
-      throw new IllegalArgumentException("itemIDs is null or empty");
-    }
+    Preconditions.checkArgument(itemIDs != null, "itemIDs is null");
+    Preconditions.checkArgument(itemIDs.length == 1 || itemIDs.length == 2, "Illegal number of IDs", itemIDs.length);
     PreferenceArray prefs1 = preferenceForItems.get(itemIDs[0]);
     if (prefs1 == null) {
       return 0;
@@ -281,28 +280,25 @@ public final class GenericDataModel exte
       return prefs1.length();
     }
 
-    if (itemIDs.length == 2) {
-      PreferenceArray prefs2 = preferenceForItems.get(itemIDs[1]);
-      if (prefs2 == null) {
-        return 0;
-      }
-      FastIDSet users1 = new FastIDSet(prefs1.length());
-      int size1 = prefs1.length();
-      for (int i = 0; i < size1; i++) {
-        users1.add(prefs1.getUserID(i));
-      }
-      FastIDSet users2 = new FastIDSet(prefs2.length());
-      int size2 = prefs2.length();
-      for (int i = 0; i < size2; i++) {
-        users2.add(prefs2.getUserID(i));
-      }
-      users1.retainAll(users2);
-      return users1.size();
+    // itemIDs.length == 2)
+    PreferenceArray prefs2 = preferenceForItems.get(itemIDs[1]);
+    if (prefs2 == null) {
+      return 0;
     }
-
-    throw new IllegalArgumentException("Illegal number of item IDs: " + itemIDs.length);
+    FastIDSet users1 = new FastIDSet(prefs1.length());
+    int size1 = prefs1.length();
+    for (int i = 0; i < size1; i++) {
+      users1.add(prefs1.getUserID(i));
+    }
+    FastIDSet users2 = new FastIDSet(prefs2.length());
+    int size2 = prefs2.length();
+    for (int i = 0; i < size2; i++) {
+      users2.add(prefs2.getUserID(i));
+    }
+    users1.retainAll(users2);
+    return users1.size();
   }
-  
+
   @Override
   public void removePreference(long userID, long itemID) {
     throw new UnsupportedOperationException();

Modified: mahout/trunk/core/src/main/java/org/apache/mahout/cf/taste/impl/model/GenericPreference.java
URL: http://svn.apache.org/viewvc/mahout/trunk/core/src/main/java/org/apache/mahout/cf/taste/impl/model/GenericPreference.java?rev=1004046&r1=1004045&r2=1004046&view=diff
==============================================================================
--- mahout/trunk/core/src/main/java/org/apache/mahout/cf/taste/impl/model/GenericPreference.java (original)
+++ mahout/trunk/core/src/main/java/org/apache/mahout/cf/taste/impl/model/GenericPreference.java Sun Oct  3 20:53:07 2010
@@ -21,6 +21,8 @@ import java.io.Serializable;
 
 import org.apache.mahout.cf.taste.model.Preference;
 
+import com.google.common.base.Preconditions;
+
 /**
  * <p>
  * A simple {@link Preference} encapsulating an item and preference value.
@@ -33,9 +35,7 @@ public class GenericPreference implement
   private float value;
   
   public GenericPreference(long userID, long itemID, float value) {
-    if (Float.isNaN(value)) {
-      throw new IllegalArgumentException("Invalid value: " + value);
-    }
+    Preconditions.checkArgument(!Float.isNaN(value), "Invalid value: " + value);
     this.userID = userID;
     this.itemID = itemID;
     this.value = value;
@@ -58,9 +58,7 @@ public class GenericPreference implement
   
   @Override
   public void setValue(float value) {
-    if (Float.isNaN(value)) {
-      throw new IllegalArgumentException("Invalid value: " + value);
-    }
+    Preconditions.checkArgument(!Float.isNaN(value), "Invalid value: " + value);
     this.value = value;
   }
   

Modified: mahout/trunk/core/src/main/java/org/apache/mahout/cf/taste/impl/model/PlusAnonymousUserDataModel.java
URL: http://svn.apache.org/viewvc/mahout/trunk/core/src/main/java/org/apache/mahout/cf/taste/impl/model/PlusAnonymousUserDataModel.java?rev=1004046&r1=1004045&r2=1004046&view=diff
==============================================================================
--- mahout/trunk/core/src/main/java/org/apache/mahout/cf/taste/impl/model/PlusAnonymousUserDataModel.java (original)
+++ mahout/trunk/core/src/main/java/org/apache/mahout/cf/taste/impl/model/PlusAnonymousUserDataModel.java Sun Oct  3 20:53:07 2010
@@ -28,6 +28,8 @@ import org.apache.mahout.cf.taste.impl.c
 import org.apache.mahout.cf.taste.model.DataModel;
 import org.apache.mahout.cf.taste.model.PreferenceArray;
 
+import com.google.common.base.Preconditions;
+
 /**
  * <p>
  * This {@link DataModel} decorator class is useful in a situation where you wish to recommend to a user that
@@ -75,7 +77,7 @@ import org.apache.mahout.cf.taste.model.
  * </p>
  */
 public final class PlusAnonymousUserDataModel implements DataModel {
-  
+
   public static final long TEMP_USER_ID = Long.MIN_VALUE;
   
   private final DataModel delegate;
@@ -88,9 +90,7 @@ public final class PlusAnonymousUserData
   }
   
   public void setTempPrefs(PreferenceArray prefs) {
-    if (prefs == null || prefs.length() < 1) {
-      throw new IllegalArgumentException("prefs are null or empty");
-    }
+    Preconditions.checkArgument(prefs != null && prefs.length() > 0, "prefs is null or empty");
     this.tempPrefs = prefs;
     this.prefItemIDs.clear();
     for (int i = 0; i < prefs.length(); i++) {

Modified: mahout/trunk/core/src/main/java/org/apache/mahout/cf/taste/impl/model/file/FileDataModel.java
URL: http://svn.apache.org/viewvc/mahout/trunk/core/src/main/java/org/apache/mahout/cf/taste/impl/model/file/FileDataModel.java?rev=1004046&r1=1004045&r2=1004046&view=diff
==============================================================================
--- mahout/trunk/core/src/main/java/org/apache/mahout/cf/taste/impl/model/file/FileDataModel.java (original)
+++ mahout/trunk/core/src/main/java/org/apache/mahout/cf/taste/impl/model/file/FileDataModel.java Sun Oct  3 20:53:07 2010
@@ -45,6 +45,8 @@ import org.apache.mahout.common.FileLine
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
+import com.google.common.base.Preconditions;
+
 /**
  * <p>
  * A {@link DataModel} backed by a delimited file. This class expects a file where each line
@@ -152,15 +154,11 @@ public class FileDataModel extends Abstr
    * @see #FileDataModel(File)
    */
   public FileDataModel(File dataFile, boolean transpose, long minReloadIntervalMS) throws IOException {
-    if (dataFile == null) {
-      throw new IllegalArgumentException("dataFile is null");
-    }
+    Preconditions.checkArgument(dataFile != null, "dataFile is null");
     if (!dataFile.exists() || dataFile.isDirectory()) {
       throw new FileNotFoundException(dataFile.toString());
     }
-    if (minReloadIntervalMS < 0L) {
-      throw new IllegalArgumentException("minReloadIntervalMs is negative");
-    }
+    Preconditions.checkArgument(minReloadIntervalMS >= 0L, "minReloadIntervalMs must be non-negative");
 
     log.info("Creating FileDataModel for file {}", dataFile);
 
@@ -368,9 +366,7 @@ public class FileDataModel extends Abstr
     }
 
     String[] tokens = delimiterPattern.split(line);
-    if (tokens.length < 3) {
-      throw new IllegalArgumentException("Bad line: " + line);
-    }
+    Preconditions.checkArgument(tokens.length >= 3, "Bad line: %s", line);
 
     String userIDString = tokens[0];
     String itemIDString = tokens[1];
@@ -532,10 +528,7 @@ public class FileDataModel extends Abstr
     }
 
     String[] tokens = delimiterPattern.split(line);
-    if (tokens.length < 2) {
-      throw new IllegalArgumentException("Bad line: " + line);
-    }
-
+    Preconditions.checkArgument(tokens.length >= 2, "Bad line: %s", line);
     String userIDString = tokens[0];
     String itemIDString = tokens[1];
     String preferenceValueString = tokens.length >= 3 ? tokens[2] : "";

Modified: mahout/trunk/core/src/main/java/org/apache/mahout/cf/taste/impl/model/file/FileIDMigrator.java
URL: http://svn.apache.org/viewvc/mahout/trunk/core/src/main/java/org/apache/mahout/cf/taste/impl/model/file/FileIDMigrator.java?rev=1004046&r1=1004045&r2=1004046&view=diff
==============================================================================
--- mahout/trunk/core/src/main/java/org/apache/mahout/cf/taste/impl/model/file/FileIDMigrator.java (original)
+++ mahout/trunk/core/src/main/java/org/apache/mahout/cf/taste/impl/model/file/FileIDMigrator.java Sun Oct  3 20:53:07 2010
@@ -30,6 +30,8 @@ import org.apache.mahout.common.FileLine
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
+import com.google.common.base.Preconditions;
+
 /**
  * <p>
  * An {@link IDMigrator} backed by a file. This class typically expects a file where each line
@@ -60,9 +62,7 @@ public class FileIDMigrator extends Abst
 
   public FileIDMigrator(File dataFile, long minReloadIntervalMS) throws FileNotFoundException {
     longToString = new FastByIDMap<String>(100);
-    if (dataFile == null) {
-      throw new IllegalArgumentException("dataFile is null");
-    }
+    Preconditions.checkArgument(dataFile != null, "dataFile is null");
     if (!dataFile.exists() || dataFile.isDirectory()) {
       throw new FileNotFoundException(dataFile.toString());
     }

Modified: mahout/trunk/core/src/main/java/org/apache/mahout/cf/taste/impl/model/jdbc/AbstractBooleanPrefJDBCDataModel.java
URL: http://svn.apache.org/viewvc/mahout/trunk/core/src/main/java/org/apache/mahout/cf/taste/impl/model/jdbc/AbstractBooleanPrefJDBCDataModel.java?rev=1004046&r1=1004045&r2=1004046&view=diff
==============================================================================
--- mahout/trunk/core/src/main/java/org/apache/mahout/cf/taste/impl/model/jdbc/AbstractBooleanPrefJDBCDataModel.java (original)
+++ mahout/trunk/core/src/main/java/org/apache/mahout/cf/taste/impl/model/jdbc/AbstractBooleanPrefJDBCDataModel.java Sun Oct  3 20:53:07 2010
@@ -31,6 +31,8 @@ import org.apache.mahout.common.IOUtils;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
+import com.google.common.base.Preconditions;
+
 public abstract class AbstractBooleanPrefJDBCDataModel extends AbstractJDBCDataModel {
   
   private static final Logger log = LoggerFactory.getLogger(AbstractBooleanPrefJDBCDataModel.class);
@@ -87,10 +89,7 @@ public abstract class AbstractBooleanPre
   
   @Override
   public void setPreference(long userID, long itemID, float value) throws TasteException {
-    if (!Float.isNaN(value)) {
-      throw new IllegalArgumentException("Invalid value: " + value);
-    }
-    
+    Preconditions.checkArgument(!Float.isNaN(value), "Invalid value: " + value );
     log.debug("Setting preference for user {}, item {}", userID, itemID);
     
     Connection conn = null;

Modified: mahout/trunk/core/src/main/java/org/apache/mahout/cf/taste/impl/model/jdbc/AbstractJDBCDataModel.java
URL: http://svn.apache.org/viewvc/mahout/trunk/core/src/main/java/org/apache/mahout/cf/taste/impl/model/jdbc/AbstractJDBCDataModel.java?rev=1004046&r1=1004045&r2=1004046&view=diff
==============================================================================
--- mahout/trunk/core/src/main/java/org/apache/mahout/cf/taste/impl/model/jdbc/AbstractJDBCDataModel.java (original)
+++ mahout/trunk/core/src/main/java/org/apache/mahout/cf/taste/impl/model/jdbc/AbstractJDBCDataModel.java Sun Oct  3 20:53:07 2010
@@ -49,6 +49,8 @@ import org.apache.mahout.common.IOUtils;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
+import com.google.common.base.Preconditions;
+
 /**
  * <p>
  * An abstract superclass for {@link JDBCDataModel} implementations, providing most of the common
@@ -551,13 +553,11 @@ public abstract class AbstractJDBCDataMo
 
   @Override
   public int getNumUsersWithPreferenceFor(long... itemIDs) throws TasteException {
-    if (itemIDs == null) {
-      throw new IllegalArgumentException("itemIDs is null");
-    }
+    Preconditions.checkArgument(itemIDs != null, "itemIDs is null");
+
     int length = itemIDs.length;
-    if ((length == 0) || (length > 2)) {
-      throw new IllegalArgumentException("Illegal number of item IDs: " + length);
-    }
+    Preconditions.checkArgument(length != 0 && length <= 2, "Illegal number of item IDs: " + length);
+
     return length == 1 ? itemPrefCounts.get(itemIDs[0]) : getNumThings("user preferring items",
       getNumPreferenceForItemsSQL, itemIDs);
   }
@@ -591,9 +591,7 @@ public abstract class AbstractJDBCDataMo
 
   @Override
   public void setPreference(long userID, long itemID, float value) throws TasteException {
-    if (Float.isNaN(value)) {
-      throw new IllegalArgumentException("Invalid value: " + value);
-    }
+    Preconditions.checkArgument(!Float.isNaN(value), "Invalid value: " + value);
 
     log.debug("Setting preference for user {}, item {}", userID, itemID);
 

Modified: mahout/trunk/core/src/main/java/org/apache/mahout/cf/taste/impl/model/jdbc/ConnectionPoolDataSource.java
URL: http://svn.apache.org/viewvc/mahout/trunk/core/src/main/java/org/apache/mahout/cf/taste/impl/model/jdbc/ConnectionPoolDataSource.java?rev=1004046&r1=1004045&r2=1004046&view=diff
==============================================================================
--- mahout/trunk/core/src/main/java/org/apache/mahout/cf/taste/impl/model/jdbc/ConnectionPoolDataSource.java (original)
+++ mahout/trunk/core/src/main/java/org/apache/mahout/cf/taste/impl/model/jdbc/ConnectionPoolDataSource.java Sun Oct  3 20:53:07 2010
@@ -30,6 +30,8 @@ import org.apache.commons.dbcp.PoolingDa
 import org.apache.commons.pool.PoolableObjectFactory;
 import org.apache.commons.pool.impl.GenericObjectPool;
 
+import com.google.common.base.Preconditions;
+
 /**
  * <p>
  * A wrapper {@link DataSource} which pools connections.
@@ -40,9 +42,7 @@ public final class ConnectionPoolDataSou
   private final DataSource delegate;
   
   public ConnectionPoolDataSource(DataSource underlyingDataSource) {
-    if (underlyingDataSource == null) {
-      throw new IllegalArgumentException("underlyingDataSource is null");
-    }
+    Preconditions.checkArgument(underlyingDataSource != null, "underlyingDataSource is null");
     ConnectionFactory connectionFactory = new ConfiguringConnectionFactory(underlyingDataSource);
     GenericObjectPool objectPool = new GenericObjectPool();
     objectPool.setTestOnBorrow(false);
@@ -50,7 +50,7 @@ public final class ConnectionPoolDataSou
     objectPool.setTestWhileIdle(true);
     objectPool.setTimeBetweenEvictionRunsMillis(60 * 1000L);
     PoolableObjectFactory factory = new PoolableConnectionFactory(connectionFactory, objectPool, null,
-        "SELECT 1", false, false);
+      "SELECT 1", false, false);
     objectPool.setFactory(factory);
     delegate = new PoolingDataSource(objectPool);
   }

Modified: mahout/trunk/core/src/main/java/org/apache/mahout/cf/taste/impl/neighborhood/AbstractUserNeighborhood.java
URL: http://svn.apache.org/viewvc/mahout/trunk/core/src/main/java/org/apache/mahout/cf/taste/impl/neighborhood/AbstractUserNeighborhood.java?rev=1004046&r1=1004045&r2=1004046&view=diff
==============================================================================
--- mahout/trunk/core/src/main/java/org/apache/mahout/cf/taste/impl/neighborhood/AbstractUserNeighborhood.java (original)
+++ mahout/trunk/core/src/main/java/org/apache/mahout/cf/taste/impl/neighborhood/AbstractUserNeighborhood.java Sun Oct  3 20:53:07 2010
@@ -25,6 +25,8 @@ import org.apache.mahout.cf.taste.model.
 import org.apache.mahout.cf.taste.neighborhood.UserNeighborhood;
 import org.apache.mahout.cf.taste.similarity.UserSimilarity;
 
+import com.google.common.base.Preconditions;
+
 /**
  * <p>
  * Contains methods and resources useful to all classes in this package.
@@ -38,12 +40,9 @@ abstract class AbstractUserNeighborhood 
   private final RefreshHelper refreshHelper;
   
   AbstractUserNeighborhood(UserSimilarity userSimilarity, DataModel dataModel, double samplingRate) {
-    if ((userSimilarity == null) || (dataModel == null)) {
-      throw new IllegalArgumentException("userSimilarity or dataModel is null");
-    }
-    if (Double.isNaN(samplingRate) || (samplingRate <= 0.0) || (samplingRate > 1.0)) {
-      throw new IllegalArgumentException("samplingRate must be in (0,1]");
-    }
+    Preconditions.checkArgument(userSimilarity != null, "userSimilarity is null");
+    Preconditions.checkArgument(dataModel != null, "dataModel is null");
+    Preconditions.checkArgument(samplingRate > 0.0 && samplingRate <= 1.0, "samplingRate must be in (0,1]");
     this.userSimilarity = userSimilarity;
     this.dataModel = dataModel;
     this.samplingRate = samplingRate;

Modified: mahout/trunk/core/src/main/java/org/apache/mahout/cf/taste/impl/neighborhood/CachingUserNeighborhood.java
URL: http://svn.apache.org/viewvc/mahout/trunk/core/src/main/java/org/apache/mahout/cf/taste/impl/neighborhood/CachingUserNeighborhood.java?rev=1004046&r1=1004045&r2=1004046&view=diff
==============================================================================
--- mahout/trunk/core/src/main/java/org/apache/mahout/cf/taste/impl/neighborhood/CachingUserNeighborhood.java (original)
+++ mahout/trunk/core/src/main/java/org/apache/mahout/cf/taste/impl/neighborhood/CachingUserNeighborhood.java Sun Oct  3 20:53:07 2010
@@ -27,6 +27,8 @@ import org.apache.mahout.cf.taste.impl.c
 import org.apache.mahout.cf.taste.model.DataModel;
 import org.apache.mahout.cf.taste.neighborhood.UserNeighborhood;
 
+import com.google.common.base.Preconditions;
+
 /** A caching wrapper around an underlying {@link UserNeighborhood} implementation. */
 public final class CachingUserNeighborhood implements UserNeighborhood {
   
@@ -34,9 +36,7 @@ public final class CachingUserNeighborho
   private final Cache<Long,long[]> neighborhoodCache;
   
   public CachingUserNeighborhood(UserNeighborhood neighborhood, DataModel dataModel) throws TasteException {
-    if (neighborhood == null) {
-      throw new IllegalArgumentException("neighborhood is null");
-    }
+    Preconditions.checkArgument(neighborhood != null, "neighborhood is null");
     this.neighborhood = neighborhood;
     int maxCacheSize = dataModel.getNumUsers(); // just a dumb heuristic for sizing
     this.neighborhoodCache = new Cache<Long,long[]>(new NeighborhoodRetriever(neighborhood), maxCacheSize);
@@ -66,5 +66,4 @@ public final class CachingUserNeighborho
       return neighborhood.getUserNeighborhood(key);
     }
   }
-  
 }

Modified: mahout/trunk/core/src/main/java/org/apache/mahout/cf/taste/impl/neighborhood/NearestNUserNeighborhood.java
URL: http://svn.apache.org/viewvc/mahout/trunk/core/src/main/java/org/apache/mahout/cf/taste/impl/neighborhood/NearestNUserNeighborhood.java?rev=1004046&r1=1004045&r2=1004046&view=diff
==============================================================================
--- mahout/trunk/core/src/main/java/org/apache/mahout/cf/taste/impl/neighborhood/NearestNUserNeighborhood.java (original)
+++ mahout/trunk/core/src/main/java/org/apache/mahout/cf/taste/impl/neighborhood/NearestNUserNeighborhood.java Sun Oct  3 20:53:07 2010
@@ -24,6 +24,8 @@ import org.apache.mahout.cf.taste.impl.r
 import org.apache.mahout.cf.taste.model.DataModel;
 import org.apache.mahout.cf.taste.similarity.UserSimilarity;
 
+import com.google.common.base.Preconditions;
+
 /**
  * <p>
  * Computes a neighborhood consisting of the nearest n users to a given user. "Nearest" is defined by the
@@ -72,9 +74,7 @@ public final class NearestNUserNeighborh
                                   DataModel dataModel,
                                   double samplingRate) throws TasteException {
     super(userSimilarity, dataModel, samplingRate);
-    if (n < 1) {
-      throw new IllegalArgumentException("n must be at least 1");
-    }
+    Preconditions.checkArgument(n >= 1, "n must be at least 1");
     int numUsers = dataModel.getNumUsers();
     this.n = n > numUsers ? numUsers : n;
     this.minSimilarity = minSimilarity;

Modified: mahout/trunk/core/src/main/java/org/apache/mahout/cf/taste/impl/neighborhood/ThresholdUserNeighborhood.java
URL: http://svn.apache.org/viewvc/mahout/trunk/core/src/main/java/org/apache/mahout/cf/taste/impl/neighborhood/ThresholdUserNeighborhood.java?rev=1004046&r1=1004045&r2=1004046&view=diff
==============================================================================
--- mahout/trunk/core/src/main/java/org/apache/mahout/cf/taste/impl/neighborhood/ThresholdUserNeighborhood.java (original)
+++ mahout/trunk/core/src/main/java/org/apache/mahout/cf/taste/impl/neighborhood/ThresholdUserNeighborhood.java Sun Oct  3 20:53:07 2010
@@ -24,6 +24,8 @@ import org.apache.mahout.cf.taste.impl.c
 import org.apache.mahout.cf.taste.model.DataModel;
 import org.apache.mahout.cf.taste.similarity.UserSimilarity;
 
+import com.google.common.base.Preconditions;
+
 /**
  * <p>
  * Computes a neigbhorhood consisting of all users whose similarity to the given user meets or exceeds a
@@ -68,9 +70,7 @@ public final class ThresholdUserNeighbor
                                    DataModel dataModel,
                                    double samplingRate) {
     super(userSimilarity, dataModel, samplingRate);
-    if (Double.isNaN(threshold)) {
-      throw new IllegalArgumentException("threshold must not be NaN");
-    }
+    Preconditions.checkArgument(!Double.isNaN(threshold), "threshold must not be NaN");
     this.threshold = threshold;
   }
   

Modified: mahout/trunk/core/src/main/java/org/apache/mahout/cf/taste/impl/recommender/AbstractRecommender.java
URL: http://svn.apache.org/viewvc/mahout/trunk/core/src/main/java/org/apache/mahout/cf/taste/impl/recommender/AbstractRecommender.java?rev=1004046&r1=1004045&r2=1004046&view=diff
==============================================================================
--- mahout/trunk/core/src/main/java/org/apache/mahout/cf/taste/impl/recommender/AbstractRecommender.java (original)
+++ mahout/trunk/core/src/main/java/org/apache/mahout/cf/taste/impl/recommender/AbstractRecommender.java Sun Oct  3 20:53:07 2010
@@ -28,6 +28,8 @@ import org.apache.mahout.cf.taste.recomm
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
+import com.google.common.base.Preconditions;
+
 public abstract class AbstractRecommender implements Recommender {
   
   private static final Logger log = LoggerFactory.getLogger(AbstractRecommender.class);
@@ -36,9 +38,8 @@ public abstract class AbstractRecommende
   private final CandidateItemsStrategy candidateItemsStrategy;
   
   protected AbstractRecommender(DataModel dataModel, CandidateItemsStrategy candidateItemsStrategy) {
-    if (dataModel == null) {
-      throw new IllegalArgumentException("dataModel is null");
-    }
+    Preconditions.checkArgument(dataModel != null, "dataModel is null");
+
     this.dataModel = dataModel;
     this.candidateItemsStrategy = candidateItemsStrategy;
   }
@@ -73,9 +74,8 @@ public abstract class AbstractRecommende
    */
   @Override
   public void setPreference(long userID, long itemID, float value) throws TasteException {
-    if (Double.isNaN(value)) {
-      throw new IllegalArgumentException("Invalid value: " + value);
-    }
+    Preconditions.checkArgument(!Double.isNaN(value), "Invalid value: " + value);
+
     log.debug("Setting preference for user {}, item {}", userID, itemID);
     dataModel.setPreference(userID, itemID, value);
   }

Modified: mahout/trunk/core/src/main/java/org/apache/mahout/cf/taste/impl/recommender/CachingRecommender.java
URL: http://svn.apache.org/viewvc/mahout/trunk/core/src/main/java/org/apache/mahout/cf/taste/impl/recommender/CachingRecommender.java?rev=1004046&r1=1004045&r2=1004046&view=diff
==============================================================================
--- mahout/trunk/core/src/main/java/org/apache/mahout/cf/taste/impl/recommender/CachingRecommender.java (original)
+++ mahout/trunk/core/src/main/java/org/apache/mahout/cf/taste/impl/recommender/CachingRecommender.java Sun Oct  3 20:53:07 2010
@@ -35,6 +35,8 @@ import org.apache.mahout.common.LongPair
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
+import com.google.common.base.Preconditions;
+
 /**
  * <p>
  * A {@link Recommender} which caches the results from another {@link Recommender} in memory.
@@ -52,17 +54,15 @@ public final class CachingRecommender im
   private IDRescorer currentRescorer;
   
   public CachingRecommender(Recommender recommender) throws TasteException {
-    if (recommender == null) {
-      throw new IllegalArgumentException("recommender is null");
-    }
+    Preconditions.checkArgument(recommender != null, "recommender is null");
     this.recommender = recommender;
-    this.maxHowMany = new int[] {1};
+    this.maxHowMany = new int[]{1};
     // Use "num users" as an upper limit on cache size. Rough guess.
     int numUsers = recommender.getDataModel().getNumUsers();
-    this.recommendationCache = new Cache<Long,Recommendations>(new RecommendationRetriever(this.recommender),
-        numUsers);
-    this.estimatedPrefCache = new Cache<LongPair,Float>(new EstimatedPrefRetriever(this.recommender),
-        numUsers);
+    this.recommendationCache = new Cache<Long, Recommendations>(new RecommendationRetriever(this.recommender),
+      numUsers);
+    this.estimatedPrefCache = new Cache<LongPair, Float>(new EstimatedPrefRetriever(this.recommender),
+      numUsers);
     this.refreshHelper = new RefreshHelper(new Callable<Object>() {
       @Override
       public Object call() {
@@ -98,18 +98,15 @@ public final class CachingRecommender im
   
   @Override
   public List<RecommendedItem> recommend(long userID, int howMany, IDRescorer rescorer) throws TasteException {
-    if (howMany < 1) {
-      throw new IllegalArgumentException("howMany must be at least 1");
-    }
-    
+    Preconditions.checkArgument(howMany >= 1, "howMany must be at least 1");
     synchronized (maxHowMany) {
       if (howMany > maxHowMany[0]) {
         maxHowMany[0] = howMany;
       }
     }
-    
+
     setCurrentRescorer(rescorer);
-    
+
     Recommendations recommendations = recommendationCache.get(userID);
     if ((recommendations.getItems().size() < howMany) && !recommendations.isNoMoreRecommendableItems()) {
       clear(userID);
@@ -118,7 +115,7 @@ public final class CachingRecommender im
         recommendations.setNoMoreRecommendableItems(true);
       }
     }
-    
+
     List<RecommendedItem> recommendedItems = recommendations.getItems();
     return recommendedItems.size() > howMany ? recommendedItems.subList(0, howMany) : recommendedItems;
   }

Modified: mahout/trunk/core/src/main/java/org/apache/mahout/cf/taste/impl/recommender/FarthestNeighborClusterSimilarity.java
URL: http://svn.apache.org/viewvc/mahout/trunk/core/src/main/java/org/apache/mahout/cf/taste/impl/recommender/FarthestNeighborClusterSimilarity.java?rev=1004046&r1=1004045&r2=1004046&view=diff
==============================================================================
--- mahout/trunk/core/src/main/java/org/apache/mahout/cf/taste/impl/recommender/FarthestNeighborClusterSimilarity.java (original)
+++ mahout/trunk/core/src/main/java/org/apache/mahout/cf/taste/impl/recommender/FarthestNeighborClusterSimilarity.java Sun Oct  3 20:53:07 2010
@@ -27,6 +27,8 @@ import org.apache.mahout.cf.taste.impl.c
 import org.apache.mahout.cf.taste.impl.common.SamplingLongPrimitiveIterator;
 import org.apache.mahout.cf.taste.similarity.UserSimilarity;
 
+import com.google.common.base.Preconditions;
+
 /**
  * <p>
  * Defines cluster similarity as the <em>smallest</em> similarity between any two users in the clusters --
@@ -58,12 +60,8 @@ public final class FarthestNeighborClust
    * </p>
    */
   public FarthestNeighborClusterSimilarity(UserSimilarity similarity, double samplingRate) {
-    if (similarity == null) {
-      throw new IllegalArgumentException("similarity is null");
-    }
-    if (Double.isNaN(samplingRate) || (samplingRate <= 0.0) || (samplingRate > 1.0)) {
-      throw new IllegalArgumentException("samplingRate is invalid: " + samplingRate);
-    }
+    Preconditions.checkArgument(similarity != null, "similarity is null");
+    Preconditions.checkArgument(!Double.isNaN(samplingRate) && samplingRate > 0.0 && samplingRate <= 1.0, "samplingRate is invalid: %.4f", samplingRate);
     this.similarity = similarity;
     this.samplingRate = samplingRate;
   }

Modified: mahout/trunk/core/src/main/java/org/apache/mahout/cf/taste/impl/recommender/GenericItemBasedRecommender.java
URL: http://svn.apache.org/viewvc/mahout/trunk/core/src/main/java/org/apache/mahout/cf/taste/impl/recommender/GenericItemBasedRecommender.java?rev=1004046&r1=1004045&r2=1004046&view=diff
==============================================================================
--- mahout/trunk/core/src/main/java/org/apache/mahout/cf/taste/impl/recommender/GenericItemBasedRecommender.java (original)
+++ mahout/trunk/core/src/main/java/org/apache/mahout/cf/taste/impl/recommender/GenericItemBasedRecommender.java Sun Oct  3 20:53:07 2010
@@ -39,6 +39,8 @@ import org.apache.mahout.common.LongPair
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
+import com.google.common.base.Preconditions;
+
 /**
  * <p>
  * A simple {@link org.apache.mahout.cf.taste.recommender.Recommender} which uses a given
@@ -74,9 +76,7 @@ public class GenericItemBasedRecommender
                                      ItemSimilarity similarity,
                                      CandidateItemsStrategy candidateItemsStrategy) {
     super(dataModel, candidateItemsStrategy);
-    if (similarity == null) {
-      throw new IllegalArgumentException("similarity is null");
-    }
+    Preconditions.checkArgument(similarity != null, "similarity is null");
     this.similarity = similarity;
     this.refreshHelper = new RefreshHelper(null);
     refreshHelper.addDependency(dataModel);
@@ -95,23 +95,20 @@ public class GenericItemBasedRecommender
   
   @Override
   public List<RecommendedItem> recommend(long userID, int howMany, IDRescorer rescorer) throws TasteException {
-    if (howMany < 1) {
-      throw new IllegalArgumentException("howMany must be at least 1");
-    }
-    
+    Preconditions.checkArgument(howMany >= 1, "howMany must be at least 1");
     log.debug("Recommending items for user ID '{}'", userID);
-    
+
     if (getNumPreferences(userID) == 0) {
       return Collections.emptyList();
     }
-    
+
     FastIDSet possibleItemIDs = getAllOtherItems(userID);
-    
+
     TopItems.Estimator<Long> estimator = new Estimator(userID);
-    
+
     List<RecommendedItem> topItems = TopItems.getTopItems(howMany, possibleItemIDs.iterator(), rescorer,
       estimator);
-    
+
     log.debug("Recommendations are: {}", topItems);
     return topItems;
   }
@@ -152,13 +149,11 @@ public class GenericItemBasedRecommender
   
   @Override
   public List<RecommendedItem> recommendedBecause(long userID, long itemID, int howMany) throws TasteException {
-    if (howMany < 1) {
-      throw new IllegalArgumentException("howMany must be at least 1");
-    }
-    
+    Preconditions.checkArgument(howMany >= 1, "howMany must be at least 1");
+
     DataModel model = getDataModel();
     TopItems.Estimator<Long> estimator = new RecommendedBecauseEstimator(userID, itemID, similarity);
-    
+
     PreferenceArray prefs = model.getPreferencesFromUser(userID);
     int size = prefs.length();
     FastIDSet allUserItems = new FastIDSet(size);
@@ -166,7 +161,7 @@ public class GenericItemBasedRecommender
       allUserItems.add(prefs.getItemID(i));
     }
     allUserItems.remove(itemID);
-    
+
     return TopItems.getTopItems(howMany, allUserItems.iterator(), null, estimator);
   }
   

Modified: mahout/trunk/core/src/main/java/org/apache/mahout/cf/taste/impl/recommender/GenericRecommendedItem.java
URL: http://svn.apache.org/viewvc/mahout/trunk/core/src/main/java/org/apache/mahout/cf/taste/impl/recommender/GenericRecommendedItem.java?rev=1004046&r1=1004045&r2=1004046&view=diff
==============================================================================
--- mahout/trunk/core/src/main/java/org/apache/mahout/cf/taste/impl/recommender/GenericRecommendedItem.java (original)
+++ mahout/trunk/core/src/main/java/org/apache/mahout/cf/taste/impl/recommender/GenericRecommendedItem.java Sun Oct  3 20:53:07 2010
@@ -22,6 +22,8 @@ import java.io.Serializable;
 import org.apache.mahout.cf.taste.recommender.RecommendedItem;
 import org.apache.mahout.common.RandomUtils;
 
+import com.google.common.base.Preconditions;
+
 /**
  * <p>
  * A simple implementation of {@link RecommendedItem}.
@@ -37,9 +39,7 @@ public final class GenericRecommendedIte
    *           if item is null or value is NaN
    */
   public GenericRecommendedItem(long itemID, float value) {
-    if (Float.isNaN(value)) {
-      throw new IllegalArgumentException("value is NaN");
-    }
+    Preconditions.checkArgument(!Float.isNaN(value), "value is NaN");
     this.itemID = itemID;
     this.value = value;
   }

Modified: mahout/trunk/core/src/main/java/org/apache/mahout/cf/taste/impl/recommender/GenericUserBasedRecommender.java
URL: http://svn.apache.org/viewvc/mahout/trunk/core/src/main/java/org/apache/mahout/cf/taste/impl/recommender/GenericUserBasedRecommender.java?rev=1004046&r1=1004045&r2=1004046&view=diff
==============================================================================
--- mahout/trunk/core/src/main/java/org/apache/mahout/cf/taste/impl/recommender/GenericUserBasedRecommender.java (original)
+++ mahout/trunk/core/src/main/java/org/apache/mahout/cf/taste/impl/recommender/GenericUserBasedRecommender.java Sun Oct  3 20:53:07 2010
@@ -36,6 +36,8 @@ import org.apache.mahout.common.LongPair
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
+import com.google.common.base.Preconditions;
+
 /**
  * <p>
  * A simple {@link org.apache.mahout.cf.taste.recommender.Recommender}
@@ -55,9 +57,7 @@ public class GenericUserBasedRecommender
                                      UserNeighborhood neighborhood,
                                      UserSimilarity similarity) {
     super(dataModel);
-    if (neighborhood == null) {
-      throw new IllegalArgumentException("neighborhood is null");
-    }
+    Preconditions.checkArgument(neighborhood != null, "neighborhood is null");
     this.neighborhood = neighborhood;
     this.similarity = similarity;
     this.refreshHelper = new RefreshHelper(null);
@@ -73,25 +73,23 @@ public class GenericUserBasedRecommender
   
   @Override
   public List<RecommendedItem> recommend(long userID, int howMany, IDRescorer rescorer) throws TasteException {
-    if (howMany < 1) {
-      throw new IllegalArgumentException("howMany must be at least 1");
-    }
-    
+    Preconditions.checkArgument(howMany >= 1, "howMany must be at least 1");
+
     log.debug("Recommending items for user ID '{}'", userID);
-    
+
     long[] theNeighborhood = neighborhood.getUserNeighborhood(userID);
-    
+
     if (theNeighborhood.length == 0) {
       return Collections.emptyList();
     }
-    
+
     FastIDSet allItemIDs = getAllOtherItems(theNeighborhood, userID);
-    
+
     TopItems.Estimator<Long> estimator = new Estimator(userID, theNeighborhood);
-    
+
     List<RecommendedItem> topItems = TopItems
         .getTopItems(howMany, allItemIDs.iterator(), rescorer, estimator);
-    
+
     log.debug("Recommendations are: {}", topItems);
     return topItems;
   }

Modified: mahout/trunk/core/src/main/java/org/apache/mahout/cf/taste/impl/recommender/ItemAverageRecommender.java
URL: http://svn.apache.org/viewvc/mahout/trunk/core/src/main/java/org/apache/mahout/cf/taste/impl/recommender/ItemAverageRecommender.java?rev=1004046&r1=1004045&r2=1004046&view=diff
==============================================================================
--- mahout/trunk/core/src/main/java/org/apache/mahout/cf/taste/impl/recommender/ItemAverageRecommender.java (original)
+++ mahout/trunk/core/src/main/java/org/apache/mahout/cf/taste/impl/recommender/ItemAverageRecommender.java Sun Oct  3 20:53:07 2010
@@ -39,6 +39,8 @@ import org.apache.mahout.cf.taste.recomm
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
+import com.google.common.base.Preconditions;
+
 /**
  * <p>
  * A simple recommender that always estimates preference for an item to be the average of all known preference
@@ -71,18 +73,16 @@ public final class ItemAverageRecommende
   
   @Override
   public List<RecommendedItem> recommend(long userID, int howMany, IDRescorer rescorer) throws TasteException {
-    if (howMany < 1) {
-      throw new IllegalArgumentException("howMany must be at least 1");
-    }
+    Preconditions.checkArgument(howMany >= 1, "howMany must be at least 1");
     log.debug("Recommending items for user ID '{}'", userID);
 
     FastIDSet possibleItemIDs = getAllOtherItems(userID);
-    
+
     TopItems.Estimator<Long> estimator = new Estimator();
-    
+
     List<RecommendedItem> topItems = TopItems.getTopItems(howMany, possibleItemIDs.iterator(), rescorer,
       estimator);
-    
+
     log.debug("Recommendations are: {}", topItems);
     return topItems;
   }

Modified: mahout/trunk/core/src/main/java/org/apache/mahout/cf/taste/impl/recommender/ItemUserAverageRecommender.java
URL: http://svn.apache.org/viewvc/mahout/trunk/core/src/main/java/org/apache/mahout/cf/taste/impl/recommender/ItemUserAverageRecommender.java?rev=1004046&r1=1004045&r2=1004046&view=diff
==============================================================================
--- mahout/trunk/core/src/main/java/org/apache/mahout/cf/taste/impl/recommender/ItemUserAverageRecommender.java (original)
+++ mahout/trunk/core/src/main/java/org/apache/mahout/cf/taste/impl/recommender/ItemUserAverageRecommender.java Sun Oct  3 20:53:07 2010
@@ -39,6 +39,8 @@ import org.apache.mahout.cf.taste.recomm
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
+import com.google.common.base.Preconditions;
+
 /**
  * <p>
  * Like {@link ItemAverageRecommender}, except that estimated preferences are adjusted for the users' average
@@ -76,18 +78,16 @@ public final class ItemUserAverageRecomm
   
   @Override
   public List<RecommendedItem> recommend(long userID, int howMany, IDRescorer rescorer) throws TasteException {
-    if (howMany < 1) {
-      throw new IllegalArgumentException("howMany must be at least 1");
-    }
+    Preconditions.checkArgument(howMany >= 1, "howMany must be at least 1");
     log.debug("Recommending items for user ID '{}'", userID);
 
     FastIDSet possibleItemIDs = getAllOtherItems(userID);
-    
+
     TopItems.Estimator<Long> estimator = new Estimator(userID);
-    
+
     List<RecommendedItem> topItems = TopItems.getTopItems(howMany, possibleItemIDs.iterator(), rescorer,
       estimator);
-    
+
     log.debug("Recommendations are: {}", topItems);
     return topItems;
   }

Modified: mahout/trunk/core/src/main/java/org/apache/mahout/cf/taste/impl/recommender/NearestNeighborClusterSimilarity.java
URL: http://svn.apache.org/viewvc/mahout/trunk/core/src/main/java/org/apache/mahout/cf/taste/impl/recommender/NearestNeighborClusterSimilarity.java?rev=1004046&r1=1004045&r2=1004046&view=diff
==============================================================================
--- mahout/trunk/core/src/main/java/org/apache/mahout/cf/taste/impl/recommender/NearestNeighborClusterSimilarity.java (original)
+++ mahout/trunk/core/src/main/java/org/apache/mahout/cf/taste/impl/recommender/NearestNeighborClusterSimilarity.java Sun Oct  3 20:53:07 2010
@@ -27,6 +27,8 @@ import org.apache.mahout.cf.taste.impl.c
 import org.apache.mahout.cf.taste.impl.common.SamplingLongPrimitiveIterator;
 import org.apache.mahout.cf.taste.similarity.UserSimilarity;
 
+import com.google.common.base.Preconditions;
+
 /**
  * <p>
  * Defines cluster similarity as the <em>largest</em> similarity between any two users in the clusters -- that
@@ -57,12 +59,9 @@ public final class NearestNeighborCluste
    * </p>
    */
   public NearestNeighborClusterSimilarity(UserSimilarity similarity, double samplingRate) {
-    if (similarity == null) {
-      throw new IllegalArgumentException("similarity is null");
-    }
-    if (Double.isNaN(samplingRate) || (samplingRate <= 0.0) || (samplingRate > 1.0)) {
-      throw new IllegalArgumentException("samplingRate is invalid: " + samplingRate);
-    }
+    Preconditions.checkArgument(similarity != null, "similarity is null");
+    Preconditions.checkArgument(samplingRate > 0.0 && samplingRate <= 1.0, "samplingRate is invalid: %f", samplingRate);
+
     this.similarity = similarity;
     this.samplingRate = samplingRate;
   }

Modified: mahout/trunk/core/src/main/java/org/apache/mahout/cf/taste/impl/recommender/TopItems.java
URL: http://svn.apache.org/viewvc/mahout/trunk/core/src/main/java/org/apache/mahout/cf/taste/impl/recommender/TopItems.java?rev=1004046&r1=1004045&r2=1004046&view=diff
==============================================================================
--- mahout/trunk/core/src/main/java/org/apache/mahout/cf/taste/impl/recommender/TopItems.java (original)
+++ mahout/trunk/core/src/main/java/org/apache/mahout/cf/taste/impl/recommender/TopItems.java Sun Oct  3 20:53:07 2010
@@ -32,6 +32,8 @@ import org.apache.mahout.cf.taste.impl.s
 import org.apache.mahout.cf.taste.recommender.IDRescorer;
 import org.apache.mahout.cf.taste.recommender.RecommendedItem;
 
+import com.google.common.base.Preconditions;
+
 /**
  * <p>
  * A simple class that refactors the "find top N things" logic that is used in several places.
@@ -47,11 +49,11 @@ public final class TopItems {
                                                   LongPrimitiveIterator possibleItemIDs,
                                                   IDRescorer rescorer,
                                                   Estimator<Long> estimator) throws TasteException {
-    if ((possibleItemIDs == null) || (estimator == null)) {
-      throw new IllegalArgumentException("argument is null");
-    }
+    Preconditions.checkArgument(possibleItemIDs != null, "argument is null");
+    Preconditions.checkArgument(estimator != null, "argument is null");
+
     Queue<RecommendedItem> topItems = new PriorityQueue<RecommendedItem>(howMany + 1,
-        Collections.reverseOrder(ByValueRecommendedItemComparator.getInstance()));
+      Collections.reverseOrder(ByValueRecommendedItemComparator.getInstance()));
     boolean full = false;
     double lowestTopValue = Double.NEGATIVE_INFINITY;
     while (possibleItemIDs.hasNext()) {

Modified: mahout/trunk/core/src/main/java/org/apache/mahout/cf/taste/impl/recommender/TreeClusteringRecommender.java
URL: http://svn.apache.org/viewvc/mahout/trunk/core/src/main/java/org/apache/mahout/cf/taste/impl/recommender/TreeClusteringRecommender.java?rev=1004046&r1=1004045&r2=1004046&view=diff
==============================================================================
--- mahout/trunk/core/src/main/java/org/apache/mahout/cf/taste/impl/recommender/TreeClusteringRecommender.java (original)
+++ mahout/trunk/core/src/main/java/org/apache/mahout/cf/taste/impl/recommender/TreeClusteringRecommender.java Sun Oct  3 20:53:07 2010
@@ -41,6 +41,8 @@ import org.apache.mahout.common.RandomUt
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
+import com.google.common.base.Preconditions;
+
 /**
  * <p>
  * A {@link org.apache.mahout.cf.taste.recommender.Recommender} that clusters users, then determines the
@@ -109,15 +111,10 @@ public final class TreeClusteringRecomme
                                    int numClusters,
                                    double samplingRate) throws TasteException {
     super(dataModel);
-    if (clusterSimilarity == null) {
-      throw new IllegalArgumentException("clusterSimilarity is null");
-    }
-    if (numClusters < 2) {
-      throw new IllegalArgumentException("numClusters must be at least 2");
-    }
-    if (Double.isNaN(samplingRate) || (samplingRate <= 0.0) || (samplingRate > 1.0)) {
-      throw new IllegalArgumentException("samplingRate is invalid: " + samplingRate);
-    }
+    Preconditions.checkArgument(clusterSimilarity != null, "clusterSimilarity is null");
+    Preconditions.checkArgument(numClusters >= 2, "numClusters must be at least 2");
+    Preconditions.checkArgument(samplingRate > 0.0 && samplingRate <= 1.0,
+      "samplingRate is invalid: %f", samplingRate);
     this.clusterSimilarity = clusterSimilarity;
     this.numClusters = numClusters;
     this.clusteringThreshold = Double.NaN;
@@ -172,15 +169,9 @@ public final class TreeClusteringRecomme
                                    double clusteringThreshold,
                                    double samplingRate) throws TasteException {
     super(dataModel);
-    if (clusterSimilarity == null) {
-      throw new IllegalArgumentException("clusterSimilarity is null");
-    }
-    if (Double.isNaN(clusteringThreshold)) {
-      throw new IllegalArgumentException("clusteringThreshold must not be NaN");
-    }
-    if (Double.isNaN(samplingRate) || (samplingRate <= 0.0) || (samplingRate > 1.0)) {
-      throw new IllegalArgumentException("samplingRate is invalid: " + samplingRate);
-    }
+    Preconditions.checkArgument( clusterSimilarity != null, "clusterSimilarity is null" );
+    Preconditions.checkArgument(!Double.isNaN(clusteringThreshold), "clusteringThreshold must not be NaN");
+    Preconditions.checkArgument(samplingRate > 0.0 && samplingRate <= 1.0, "samplingRate is invalid: %f", samplingRate);
     this.clusterSimilarity = clusterSimilarity;
     this.numClusters = Integer.MIN_VALUE;
     this.clusteringThreshold = clusteringThreshold;
@@ -200,18 +191,16 @@ public final class TreeClusteringRecomme
   
   @Override
   public List<RecommendedItem> recommend(long userID, int howMany, IDRescorer rescorer) throws TasteException {
-    if (howMany < 1) {
-      throw new IllegalArgumentException("howMany must be at least 1");
-    }
+    Preconditions.checkArgument(howMany >= 1, "howMany must be at least 1");
     buildClusters();
-    
+
     log.debug("Recommending items for user ID '{}'", userID);
-    
+
     List<RecommendedItem> recommended = topRecsByUserID.get(userID);
     if (recommended == null) {
       return Collections.emptyList();
     }
-    
+
     DataModel dataModel = getDataModel();
     List<RecommendedItem> rescored = new ArrayList<RecommendedItem>(recommended.size());
     // Only add items the user doesn't already have a preference for.
@@ -227,7 +216,7 @@ public final class TreeClusteringRecomme
       }
     }
     Collections.sort(rescored, new ByRescoreComparator(rescorer));
-    
+
     return rescored;
   }