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<Long>. 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;
}