/** * Make a fresh rating object with no timestamp. * * @see #make(long, long, double, long) * @deprecated Use {@link Rating#create(long, long, double)}. */ @Deprecated public static Rating make(long uid, long iid, double value) { return new RatingBuilder().setUserId(uid) .setItemId(iid) .setRating(value) .build(); }
/** * Make a fresh rating event. * * @deprecated Use {@link Rating#create(long, long, double, long)} */ @Deprecated public static Rating make(long uid, long iid, double value, long ts) { return new RatingBuilder().setUserId(uid) .setItemId(iid) .setRating(value) .setTimestamp(ts) .build(); } }
/** * Create a new rating builder that will build a copy of this rating. * @return A rating builder initialized with the contents of this rating. */ public RatingBuilder copyBuilder() { RatingBuilder rb = new RatingBuilder(); rb.setUserId(user) .setItemId(item) .setTimestamp(getTimestamp()); double v = getValue(); if (!Double.isNaN(v)) { rb.setRating(v); } return rb; }
public Rating rating(long uid, long iid, double rating) { return Rating.newBuilder() .setId(++entityId) .setUserId(uid) .setItemId(iid) .setRating(rating) .build(); }
public Rating rating(long uid, long iid, double rating, long timestamp) { return Rating.newBuilder() .setId(++entityId) .setUserId(uid) .setItemId(iid) .setRating(rating) .setTimestamp(timestamp) .build(); }
@Test public void testSetRating() { RatingBuilder rb = new RatingBuilder(); rb.setRating(3.5); assertThat(rb.getRating(), equalTo(3.5)); }
@Test public void testBuildRating() { Rating r = new RatingBuilder() .setUserId(692) .setItemId(483) .setRating(3.5) .setTimestamp(349702) .build(); assertThat(r, notNullValue()); assertThat(r.getUserId(), equalTo(692L)); assertThat(r.getItemId(), equalTo(483L)); assertThat(r.getValue(), equalTo(3.5)); assertThat(r.getTimestamp(), equalTo(349702L)); } }
@SuppressWarnings("deprecation") @Test /* * Test method that tests unrated items for a user in the data set, * it shouldn't return any value. * */ @Ignore("unrates are going away") public void testPredictForUnratedItems() { RatingBuilder rb = new RatingBuilder().setUserId(420); rs.add(rb.setItemId(840).setRating(3.5).setTimestamp(10).build()); rs.add(rb.setItemId(390).setRating(4.5).setTimestamp(20).build()); rs.add(rb.setItemId(840).clearRating().setTimestamp(30).build()); dao = StaticDataSource.fromList(rs).get(); KnownRatingRatingPredictor pred = new KnownRatingRatingPredictor(dao); Map<Long,Double> results = pred.predict(420, LongUtils.packedSet(840, 390)); assertThat(results, hasEntry(390L, 4.5)); assertThat(results.keySet(), not(Matchers.hasItem(840L))); } }
@Test public void testWithMissingAttribute() { Rating r = Rating.newBuilder() .setId(42) .setUserId(100) .setItemId(50) .setRating(3.5) .build(); EntityCollection ec = EntityCollection.newBuilder(CommonTypes.RATING, Rating.ATTRIBUTES) .add(r) .build(); assertThat(ec, contains(r)); } }
@Override public Rating next() { long id = ids.next(); while (usedIds.contains(id)) { id = ids.next(); } usedIds.add(id); RatingBuilder rb = Rating.newBuilder() .setId(id) .setUserId(userIds.next()) .setItemId(itemIds.next()) .setRating(values.next()); if (timestamps != null) { rb.setTimestamp(timestamps.next()); } return rb.build(); } }
@Test public void testAddEntityLayout() { EntityCollectionDAOBuilder b = EntityCollectionDAO.newBuilder(); b.addEntityLayout(Rating.ENTITY_TYPE, Rating.ATTRIBUTES); Rating r = Rating.newBuilder() .setId(42) .setUserId(100) .setItemId(50) .setRating(3.5) .setTimestamp(1034801) .build(); b.addEntity(r); EntityCollectionDAO dao = b.build(); assertThat(dao.getEntityIds(CommonTypes.RATING), contains(42L)); assertThat(dao.streamEntities(CommonTypes.RATING) .collect(Collectors.toList()), contains(r)); assertThat(dao.query(Rating.class) .get(), contains(r)); }
/** * Make a fresh rating object with no timestamp. * * @see #make(long, long, double, long) * @deprecated Use {@link Rating#create(long, long, double)}. */ @Deprecated public static Rating make(long uid, long iid, double value) { return new RatingBuilder().setUserId(uid) .setItemId(iid) .setRating(value) .build(); }
/** * Make a fresh rating event. * * @deprecated Use {@link Rating#create(long, long, double, long)} */ @Deprecated public static Rating make(long uid, long iid, double value, long ts) { return new RatingBuilder().setUserId(uid) .setItemId(iid) .setRating(value) .setTimestamp(ts) .build(); } }
/** * Create a new rating builder that will build a copy of this rating. * @return A rating builder initialized with the contents of this rating. */ public RatingBuilder copyBuilder() { RatingBuilder rb = new RatingBuilder(); rb.setUserId(user) .setItemId(item) .setTimestamp(getTimestamp()); double v = getValue(); if (!Double.isNaN(v)) { rb.setRating(v); } return rb; }
public Rating rating(long uid, long iid, double rating) { return Rating.newBuilder() .setId(++entityId) .setUserId(uid) .setItemId(iid) .setRating(rating) .build(); }
public Rating rating(long uid, long iid, double rating, long timestamp) { return Rating.newBuilder() .setId(++entityId) .setUserId(uid) .setItemId(iid) .setRating(rating) .setTimestamp(timestamp) .build(); } }
/** * Constructs the wrapper using the provided model. * * @param model the model to be used to create the wrapped model */ public EventDAOWrapper(final TemporalDataModelIF<Long, Long> model) { List<Rating> events = new ArrayList<>(); RatingBuilder rb = new RatingBuilder(); for (Long u : model.getUsers()) { rb.setUserId(u); for (Long i : model.getUserItems(u)) { rb.setItemId(i); rb.setRating(model.getUserItemPreference(u, i)); Iterable<Long> timestamps = model.getUserItemTimestamps(u, i); long t = -1; if (timestamps != null) { for (Long tt : timestamps) { t = tt; break; } } rb.setTimestamp(t); events.add(rb.build()); } } wrapper = EntityCollectionDAO.create(events); }
@Override public Rating next() { long id = ids.next(); while (usedIds.contains(id)) { id = ids.next(); } usedIds.add(id); RatingBuilder rb = Rating.newBuilder() .setId(id) .setUserId(userIds.next()) .setItemId(itemIds.next()) .setRating(values.next()); if (timestamps != null) { rb.setTimestamp(timestamps.next()); } return rb.build(); } }