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/09/18 12:27:23 UTC
svn commit: r998437 -
/mahout/trunk/core/src/main/java/org/apache/mahout/cf/taste/impl/model/PlusAnonymousUserDataModel.java
Author: srowen
Date: Sat Sep 18 10:27:23 2010
New Revision: 998437
URL: http://svn.apache.org/viewvc?rev=998437&view=rev
Log:
Be more correct about semantics when no temp user exists
Modified:
mahout/trunk/core/src/main/java/org/apache/mahout/cf/taste/impl/model/PlusAnonymousUserDataModel.java
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=998437&r1=998436&r2=998437&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 Sat Sep 18 10:27:23 2010
@@ -20,6 +20,7 @@ package org.apache.mahout.cf.taste.impl.
import java.util.Collection;
import org.apache.mahout.cf.taste.common.NoSuchItemException;
+import org.apache.mahout.cf.taste.common.NoSuchUserException;
import org.apache.mahout.cf.taste.common.Refreshable;
import org.apache.mahout.cf.taste.common.TasteException;
import org.apache.mahout.cf.taste.impl.common.FastIDSet;
@@ -87,6 +88,9 @@ public final class PlusAnonymousUserData
}
public void setTempPrefs(PreferenceArray prefs) {
+ if (prefs == null || prefs.length() < 1) {
+ throw new IllegalArgumentException("prefs are null or empty");
+ }
this.tempPrefs = prefs;
this.prefItemIDs.clear();
if (prefs != null) {
@@ -95,15 +99,26 @@ public final class PlusAnonymousUserData
}
}
}
+
+ public void clearTempPrefs() {
+ tempPrefs = null;
+ prefItemIDs.clear();
+ }
@Override
public LongPrimitiveIterator getUserIDs() throws TasteException {
+ if (tempPrefs == null) {
+ return delegate.getUserIDs();
+ }
return new PlusAnonymousUserLongPrimitiveIterator(delegate.getUserIDs(), TEMP_USER_ID);
}
@Override
public PreferenceArray getPreferencesFromUser(long userID) throws TasteException {
if (userID == TEMP_USER_ID) {
+ if (tempPrefs == null) {
+ throw new NoSuchUserException();
+ }
return tempPrefs;
}
return delegate.getPreferencesFromUser(userID);
@@ -112,6 +127,9 @@ public final class PlusAnonymousUserData
@Override
public FastIDSet getItemIDsFromUser(long userID) throws TasteException {
if (userID == TEMP_USER_ID) {
+ if (tempPrefs == null) {
+ throw new NoSuchUserException();
+ }
return prefItemIDs;
}
return delegate.getItemIDsFromUser(userID);
@@ -125,6 +143,9 @@ public final class PlusAnonymousUserData
@Override
public PreferenceArray getPreferencesForItem(long itemID) throws TasteException {
+ if (tempPrefs == null) {
+ return delegate.getPreferencesForItem(itemID);
+ }
PreferenceArray delegatePrefs = null;
try {
delegatePrefs = delegate.getPreferencesForItem(itemID);
@@ -157,6 +178,9 @@ public final class PlusAnonymousUserData
@Override
public Float getPreferenceValue(long userID, long itemID) throws TasteException {
if (userID == TEMP_USER_ID) {
+ if (tempPrefs == null) {
+ throw new NoSuchUserException();
+ }
for (int i = 0; i < tempPrefs.length(); i++) {
if (tempPrefs.getItemID(i) == itemID) {
return tempPrefs.getValue(i);
@@ -170,6 +194,9 @@ public final class PlusAnonymousUserData
@Override
public Long getPreferenceTime(long userID, long itemID) throws TasteException {
if (userID == TEMP_USER_ID) {
+ if (tempPrefs == null) {
+ throw new NoSuchUserException();
+ }
return null;
}
return delegate.getPreferenceTime(userID, itemID);
@@ -182,11 +209,14 @@ public final class PlusAnonymousUserData
@Override
public int getNumUsers() throws TasteException {
- return delegate.getNumUsers() + 1;
+ return delegate.getNumUsers() + (tempPrefs == null ? 0 : 1);
}
@Override
public int getNumUsersWithPreferenceFor(long... itemIDs) throws TasteException {
+ if (tempPrefs == null) {
+ return delegate.getNumUsersWithPreferenceFor(itemIDs);
+ }
boolean hasAll = true;
for (long itemID : itemIDs) {
boolean found = false;
@@ -207,6 +237,9 @@ public final class PlusAnonymousUserData
@Override
public void setPreference(long userID, long itemID, float value) throws TasteException {
if (userID == TEMP_USER_ID) {
+ if (tempPrefs == null) {
+ throw new NoSuchUserException();
+ }
throw new UnsupportedOperationException();
}
delegate.setPreference(userID, itemID, value);
@@ -215,6 +248,9 @@ public final class PlusAnonymousUserData
@Override
public void removePreference(long userID, long itemID) throws TasteException {
if (userID == TEMP_USER_ID) {
+ if (tempPrefs == null) {
+ throw new NoSuchUserException();
+ }
throw new UnsupportedOperationException();
}
delegate.removePreference(userID, itemID);