@Override public void setPreference(long userID, long itemID, float value) throws TasteException { DataModel dataModel = getDataModel(); double prefDelta; try { Float oldPref = dataModel.getPreferenceValue(userID, itemID); prefDelta = oldPref == null ? value : value - oldPref; } catch (NoSuchUserException nsee) { prefDelta = value; } super.setPreference(userID, itemID, value); try { buildAveragesLock.writeLock().lock(); RunningAverage average = itemAverages.get(itemID); if (average == null) { RunningAverage newAverage = new FullRunningAverage(); newAverage.addDatum(prefDelta); itemAverages.put(itemID, newAverage); } else { average.changeDatum(prefDelta); } } finally { buildAveragesLock.writeLock().unlock(); } }
itemAverages.put(itemID, newItemAverage); } else { itemAverage.changeDatum(prefDelta); userAverages.put(userID, newUserAveragae); } else { userAverage.changeDatum(prefDelta); overallAveragePrefValue.changeDatum(prefDelta); } finally { buildAveragesLock.writeLock().unlock();
@Override public void setPreference(long userID, long itemID, float value) throws TasteException { DataModel dataModel = getDataModel(); double prefDelta; try { Float oldPref = dataModel.getPreferenceValue(userID, itemID); prefDelta = oldPref == null ? value : value - oldPref; } catch (NoSuchUserException nsee) { prefDelta = value; } super.setPreference(userID, itemID, value); try { buildAveragesLock.writeLock().lock(); RunningAverage average = itemAverages.get(itemID); if (average == null) { RunningAverage newAverage = new FullRunningAverage(); newAverage.addDatum(prefDelta); itemAverages.put(itemID, newAverage); } else { average.changeDatum(prefDelta); } } finally { buildAveragesLock.writeLock().unlock(); } }
@Override public void setPreference(long userID, long itemID, float value) throws TasteException { DataModel dataModel = getDataModel(); double prefDelta; try { Float oldPref = dataModel.getPreferenceValue(userID, itemID); prefDelta = oldPref == null ? value : value - oldPref; } catch (NoSuchUserException nsee) { prefDelta = value; } super.setPreference(userID, itemID, value); try { buildAveragesLock.writeLock().lock(); RunningAverage average = itemAverages.get(itemID); if (average == null) { RunningAverage newAverage = new FullRunningAverage(); newAverage.addDatum(prefDelta); itemAverages.put(itemID, newAverage); } else { average.changeDatum(prefDelta); } } finally { buildAveragesLock.writeLock().unlock(); } }
itemAverages.put(itemID, newItemAverage); } else { itemAverage.changeDatum(prefDelta); userAverages.put(userID, newUserAveragae); } else { userAverage.changeDatum(prefDelta); overallAveragePrefValue.changeDatum(prefDelta); } finally { buildAveragesLock.writeLock().unlock();
itemAverages.put(itemID, newItemAverage); } else { itemAverage.changeDatum(prefDelta); userAverages.put(userID, newUserAveragae); } else { userAverage.changeDatum(prefDelta); overallAveragePrefValue.changeDatum(prefDelta); } finally { buildAveragesLock.writeLock().unlock();
@Test(expected = UnsupportedOperationException.class) public void testUnsupported2() { RunningAverage inverted = new InvertedRunningAverage(new FullRunningAverage()); inverted.changeDatum(1.0); }
@Test(expected = UnsupportedOperationException.class) public void testAndStdDevUnsupported2() { RunningAverage inverted = new InvertedRunningAverageAndStdDev(new FullRunningAverageAndStdDev()); inverted.changeDatum(1.0); }
assertEquals(1.0, runningAverage.getAverage(), EPSILON); runningAverage.changeDatum(0.0); assertEquals(2, runningAverage.getCount()); assertEquals(1.0, runningAverage.getAverage(), EPSILON); runningAverage.changeDatum(2.0); assertEquals(2, runningAverage.getCount()); assertEquals(2.0, runningAverage.getAverage(), EPSILON);