Ejemplo n.º 1
0
        public void removeItemPref(long userID, long itemIDA, float prefValue)
        {
            PreferenceArray userPreferences = dataModel.getPreferencesFromUser(userID);

            try
            {
                buildAverageDiffsLock.EnterWriteLock();

                FastByIDMap <RunningAverage> aMap = averageDiffs.get(itemIDA);

                int length = userPreferences.length();
                for (int i = 0; i < length; i++)
                {
                    long  itemIDB = userPreferences.getItemID(i);
                    float bValue  = userPreferences.getValue(i);

                    if (itemIDA < itemIDB)
                    {
                        if (aMap != null)
                        {
                            RunningAverage average = aMap.get(itemIDB);
                            if (average != null)
                            {
                                if (average.getCount() <= 1)
                                {
                                    aMap.remove(itemIDB);
                                }
                                else
                                {
                                    average.removeDatum(bValue - prefValue);
                                }
                            }
                        }
                    }
                    else if (itemIDA > itemIDB)
                    {
                        FastByIDMap <RunningAverage> bMap = averageDiffs.get(itemIDB);
                        if (bMap != null)
                        {
                            RunningAverage average = bMap.get(itemIDA);
                            if (average != null)
                            {
                                if (average.getCount() <= 1)
                                {
                                    aMap.remove(itemIDA);
                                }
                                else
                                {
                                    average.removeDatum(prefValue - bValue);
                                }
                            }
                        }
                    }
                }
            }
            finally
            {
                buildAverageDiffsLock.ExitWriteLock();
            }
        }
Ejemplo n.º 2
0
        public override void removePreference(long userID, long itemID)
        {
            float?nullable = this.getDataModel().getPreferenceValue(userID, itemID);

            base.removePreference(userID, itemID);
            if (nullable.HasValue)
            {
                lock (this)
                {
                    RunningAverage average = this.itemAverages.get(itemID);
                    if (average == null)
                    {
                        throw new InvalidOperationException("No preferences exist for item ID: " + itemID);
                    }
                    average.removeDatum((double)nullable.Value);
                    RunningAverage average2 = this.userAverages.get(userID);
                    if (average2 == null)
                    {
                        throw new InvalidOperationException("No preferences exist for user ID: " + userID);
                    }
                    average2.removeDatum((double)nullable.Value);
                    this.overallAveragePrefValue.removeDatum((double)nullable.Value);
                }
            }
        }