@Override public void removePreference(long userID, long itemID) throws TasteException { DataModel dataModel = getDataModel(); Float oldPref = dataModel.getPreferenceValue(userID, itemID); super.removePreference(userID, itemID); if (oldPref != null) { try { buildAveragesLock.writeLock().lock(); RunningAverage itemAverage = itemAverages.get(itemID); if (itemAverage == null) { throw new IllegalStateException("No preferences exist for item ID: " + itemID); } itemAverage.removeDatum(oldPref); RunningAverage userAverage = userAverages.get(userID); if (userAverage == null) { throw new IllegalStateException("No preferences exist for user ID: " + userID); } userAverage.removeDatum(oldPref); overallAveragePrefValue.removeDatum(oldPref); } finally { buildAveragesLock.writeLock().unlock(); } } }
@Override public void removePreference(long userID, long itemID) throws TasteException { DataModel dataModel = getDataModel(); Float oldPref = dataModel.getPreferenceValue(userID, itemID); super.removePreference(userID, itemID); if (oldPref != null) { try { buildAveragesLock.writeLock().lock(); RunningAverage itemAverage = itemAverages.get(itemID); if (itemAverage == null) { throw new IllegalStateException("No preferences exist for item ID: " + itemID); } itemAverage.removeDatum(oldPref); RunningAverage userAverage = userAverages.get(userID); if (userAverage == null) { throw new IllegalStateException("No preferences exist for user ID: " + userID); } userAverage.removeDatum(oldPref); overallAveragePrefValue.removeDatum(oldPref); } finally { buildAveragesLock.writeLock().unlock(); } } }
@Override public void removePreference(long userID, long itemID) throws TasteException { DataModel dataModel = getDataModel(); Float oldPref = dataModel.getPreferenceValue(userID, itemID); super.removePreference(userID, itemID); if (oldPref != null) { try { buildAveragesLock.writeLock().lock(); RunningAverage itemAverage = itemAverages.get(itemID); if (itemAverage == null) { throw new IllegalStateException("No preferences exist for item ID: " + itemID); } itemAverage.removeDatum(oldPref); RunningAverage userAverage = userAverages.get(userID); if (userAverage == null) { throw new IllegalStateException("No preferences exist for user ID: " + userID); } userAverage.removeDatum(oldPref); overallAveragePrefValue.removeDatum(oldPref); } finally { buildAveragesLock.writeLock().unlock(); } } }
@Override public void removePreference(long userID, long itemID) throws TasteException { DataModel dataModel = getDataModel(); Float oldPref = dataModel.getPreferenceValue(userID, itemID); super.removePreference(userID, itemID); if (oldPref != null) { try { buildAveragesLock.writeLock().lock(); RunningAverage average = itemAverages.get(itemID); if (average == null) { throw new IllegalStateException("No preferences exist for item ID: " + itemID); } else { average.removeDatum(oldPref); } } finally { buildAveragesLock.writeLock().unlock(); } } }
@Override public void removePreference(long userID, long itemID) throws TasteException { DataModel dataModel = getDataModel(); Float oldPref = dataModel.getPreferenceValue(userID, itemID); super.removePreference(userID, itemID); if (oldPref != null) { try { buildAveragesLock.writeLock().lock(); RunningAverage average = itemAverages.get(itemID); if (average == null) { throw new IllegalStateException("No preferences exist for item ID: " + itemID); } else { average.removeDatum(oldPref); } } finally { buildAveragesLock.writeLock().unlock(); } } }
@Override public void removePreference(long userID, long itemID) throws TasteException { DataModel dataModel = getDataModel(); Float oldPref = dataModel.getPreferenceValue(userID, itemID); super.removePreference(userID, itemID); if (oldPref != null) { try { buildAveragesLock.writeLock().lock(); RunningAverage average = itemAverages.get(itemID); if (average == null) { throw new IllegalStateException("No preferences exist for item ID: " + itemID); } else { average.removeDatum(oldPref); } } finally { buildAveragesLock.writeLock().unlock(); } } }
@Test(expected = UnsupportedOperationException.class) public void testUnsupported3() { RunningAverage inverted = new InvertedRunningAverage(new FullRunningAverage()); inverted.removeDatum(1.0); }
@Test(expected = UnsupportedOperationException.class) public void testAndStdDevUnsupported3() { RunningAverage inverted = new InvertedRunningAverageAndStdDev(new FullRunningAverageAndStdDev()); inverted.removeDatum(1.0); }
assertEquals(0.5, runningAverage.getAverage(), EPSILON); runningAverage.removeDatum(-4.0); assertEquals(3, runningAverage.getCount()); assertEquals(2.0, runningAverage.getAverage(), EPSILON); runningAverage.removeDatum(4.0); assertEquals(2, runningAverage.getCount()); assertEquals(1.0, runningAverage.getAverage(), EPSILON);