Beispiel #1
0
 public void updateItemPref(long itemID, float prefDelta)
 {
     try
     {
         buildAverageDiffsLock.EnterReadLock();
         foreach (var entry in averageDiffs.entrySet())
         {
             bool matchesItemID1 = itemID == entry.Key;
             foreach (var entry2 in entry.Value.entrySet())
             {
                 RunningAverage average = entry2.Value;
                 if (matchesItemID1)
                 {
                     average.changeDatum(-prefDelta);
                 }
                 else if (itemID == entry2.Key)
                 {
                     average.changeDatum(prefDelta);
                 }
             }
         }
         // RunningAverage itemAverage = averageItemPref.get(itemID);
         // if (itemAverage != null) {
         // itemAverage.changeDatum(prefDelta);
         // }
     }
     finally
     {
         buildAverageDiffsLock.ExitReadLock();
     }
 }
        public override void setPreference(long userID, long itemID, float value)
        {
            double    num;
            DataModel model = this.getDataModel();

            try
            {
                float?nullable = model.getPreferenceValue(userID, itemID);
                num = !nullable.HasValue ? ((double)value) : ((double)(value - nullable.Value));
            }
            catch (NoSuchUserException)
            {
                num = value;
            }
            base.setPreference(userID, itemID, value);
            lock (this)
            {
                RunningAverage average = this.itemAverages.get(itemID);
                if (average == null)
                {
                    RunningAverage average2 = new FullRunningAverage();
                    average2.addDatum(num);
                    this.itemAverages.put(itemID, average2);
                }
                else
                {
                    average.changeDatum(num);
                }
            }
        }
Beispiel #3
0
 public void updateItemPref(long itemID, float prefDelta)
 {
     if (stdDevWeighted)
     {
         throw new Exception("Can't update only when stdDevWeighted is set");
     }
     try
     {
         buildAverageDiffsLock.EnterReadLock();
         foreach (var entry in averageDiffs.entrySet())
         {
             bool matchesItemID1 = itemID == entry.Key;
             foreach (var entry2 in entry.Value.entrySet())
             {
                 RunningAverage average = entry2.Value;
                 if (matchesItemID1)
                 {
                     average.changeDatum(-prefDelta);
                 }
                 else if (itemID == entry2.Key)
                 {
                     average.changeDatum(prefDelta);
                 }
             }
         }
         RunningAverage itemAverage = averageItemPref.get(itemID);
         if (itemAverage != null)
         {
             itemAverage.changeDatum(prefDelta);
         }
     }
     finally
     {
         buildAverageDiffsLock.ExitReadLock();
     }
 }