public override IPreferenceArray GetPreferencesForItem(long itemID)
        {
            if (tempPrefs.Count == 0)
            {
                return(getDelegate().GetPreferencesForItem(itemID));
            }

            IPreferenceArray delegatePrefs = null;

            try {
                delegatePrefs = getDelegate().GetPreferencesForItem(itemID);
            } catch (NoSuchItemException nsie) {
                // OK. Probably an item that only the anonymous user has
                //if (log.isDebugEnabled()) {
                //  log.debug("Item {} unknown", itemID);
                //}
            }

            List <IPreference> anonymousPreferences = new List <IPreference>();

            foreach (var prefsMap in tempPrefs)
            {
                IPreferenceArray singleUserTempPrefs = prefsMap.Value;
                for (int i = 0; i < singleUserTempPrefs.Length(); i++)
                {
                    if (singleUserTempPrefs.GetItemID(i) == itemID)
                    {
                        anonymousPreferences.Add(singleUserTempPrefs.Get(i));
                    }
                }
            }

            int delegateLength       = delegatePrefs == null ? 0 : delegatePrefs.Length();
            int anonymousPrefsLength = anonymousPreferences.Count;
            int prefsCounter         = 0;

            // Merge the delegate and anonymous preferences into a single array
            IPreferenceArray newPreferenceArray = new GenericItemPreferenceArray(delegateLength + anonymousPrefsLength);

            for (int i = 0; i < delegateLength; i++)
            {
                newPreferenceArray.Set(prefsCounter++, delegatePrefs.Get(i));
            }

            foreach (IPreference anonymousPreference in anonymousPreferences)
            {
                newPreferenceArray.Set(prefsCounter++, anonymousPreference);
            }

            if (newPreferenceArray.Length() == 0)
            {
                // No, didn't find it among the anonymous user prefs
                throw new NoSuchItemException(itemID);
            }

            return(newPreferenceArray);
        }
 public void testClone()
 {
     GenericItemPreferenceArray prefs = new GenericItemPreferenceArray(3);
     prefs.Set(0, new GenericPreference(3L, 1L, 5.0f));
     prefs.Set(1, new GenericPreference(1L, 1L, 4.0f));
     prefs.Set(2, new GenericPreference(2L, 1L, 3.0f));
     prefs = (GenericItemPreferenceArray)prefs.Clone();
     Assert.AreEqual(3L, prefs.GetUserID(0));
     Assert.AreEqual(1L, prefs.GetItemID(1));
     Assert.AreEqual(3.0f, prefs.GetValue(2), EPSILON);
 }
        public void testSort()
        {
            IPreferenceArray prefs = new GenericItemPreferenceArray(3);

            prefs.Set(0, new GenericPreference(3L, 1L, 5.0f));
            prefs.Set(1, new GenericPreference(1L, 1L, 5.0f));
            prefs.Set(2, new GenericPreference(2L, 1L, 5.0f));
            prefs.SortByUser();
            Assert.AreEqual(1L, prefs.GetUserID(0));
            Assert.AreEqual(2L, prefs.GetUserID(1));
            Assert.AreEqual(3L, prefs.GetUserID(2));
        }
        public void testClone()
        {
            GenericItemPreferenceArray prefs = new GenericItemPreferenceArray(3);

            prefs.Set(0, new GenericPreference(3L, 1L, 5.0f));
            prefs.Set(1, new GenericPreference(1L, 1L, 4.0f));
            prefs.Set(2, new GenericPreference(2L, 1L, 3.0f));
            prefs = (GenericItemPreferenceArray)prefs.Clone();
            Assert.AreEqual(3L, prefs.GetUserID(0));
            Assert.AreEqual(1L, prefs.GetItemID(1));
            Assert.AreEqual(3.0f, prefs.GetValue(2), EPSILON);
        }
 public void testHasPref()
 {
     IPreferenceArray prefs = new GenericItemPreferenceArray(3);
     prefs.Set(0, new GenericPreference(1L, 3L, 5.0f));
     Assert.True(prefs.HasPrefWithItemID(3L));
     Assert.True(prefs.HasPrefWithUserID(1L));
     Assert.False(prefs.HasPrefWithItemID(2L));
     Assert.False(prefs.HasPrefWithUserID(2L));
 }
        public void testHasPref()
        {
            IPreferenceArray prefs = new GenericItemPreferenceArray(3);

            prefs.Set(0, new GenericPreference(1L, 3L, 5.0f));
            Assert.True(prefs.HasPrefWithItemID(3L));
            Assert.True(prefs.HasPrefWithUserID(1L));
            Assert.False(prefs.HasPrefWithItemID(2L));
            Assert.False(prefs.HasPrefWithUserID(2L));
        }
 public void testSort()
 {
     IPreferenceArray prefs = new GenericItemPreferenceArray(3);
     prefs.Set(0, new GenericPreference(3L, 1L, 5.0f));
     prefs.Set(1, new GenericPreference(1L, 1L, 5.0f));
     prefs.Set(2, new GenericPreference(2L, 1L, 5.0f));
     prefs.SortByUser();
     Assert.AreEqual(1L, prefs.GetUserID(0));
     Assert.AreEqual(2L, prefs.GetUserID(1));
     Assert.AreEqual(3L, prefs.GetUserID(2));
 }
  public override IPreferenceArray GetPreferencesForItem(long itemID) {
    if (tempPrefs.Count==0) {
      return getDelegate().GetPreferencesForItem(itemID);
    }

    IPreferenceArray delegatePrefs = null;

    try {
      delegatePrefs = getDelegate().GetPreferencesForItem(itemID);
    } catch (NoSuchItemException nsie) {
      // OK. Probably an item that only the anonymous user has
      //if (log.isDebugEnabled()) {
      //  log.debug("Item {} unknown", itemID);
      //}
    }

    List<IPreference> anonymousPreferences =  new List<IPreference>();

    foreach (var prefsMap in tempPrefs) {
      IPreferenceArray singleUserTempPrefs = prefsMap.Value;
      for (int i = 0; i < singleUserTempPrefs.Length(); i++) {
        if (singleUserTempPrefs.GetItemID(i) == itemID) {
          anonymousPreferences.Add(singleUserTempPrefs.Get(i));
        }
      }
    }

    int delegateLength = delegatePrefs == null ? 0 : delegatePrefs.Length();
    int anonymousPrefsLength = anonymousPreferences.Count;
    int prefsCounter = 0;

    // Merge the delegate and anonymous preferences into a single array
    IPreferenceArray newPreferenceArray = new GenericItemPreferenceArray(delegateLength + anonymousPrefsLength);

    for (int i = 0; i < delegateLength; i++) {
      newPreferenceArray.Set(prefsCounter++, delegatePrefs.Get(i));
    }

    foreach (IPreference anonymousPreference in anonymousPreferences) {
      newPreferenceArray.Set(prefsCounter++, anonymousPreference);
    }

    if (newPreferenceArray.Length() == 0) {
      // No, didn't find it among the anonymous user prefs
      throw new NoSuchItemException(itemID);
    }

    return newPreferenceArray;
  }