@Override public RecommendedItemVO<Integer, String> convertRecommendedItemVO(Integer tenantId, RecommendedItemVO<Integer, Integer> recommendedItem) { if (recommendedItem == null) { return null; } return new RecommendedItemVO<Integer, String>( recommendedItem.getId(), convertItemVO(tenantId, recommendedItem.getItem()), recommendedItem.getPredictionValue(), recommendedItem.getRecommendationId(), recommendedItem.getItemAssocId(), recommendedItem.getExplanation()); }
if (this.getId() < that.getId()) { return BEFORE; } else if (this.getId() > that.getId()) { return AFTER; if (this.getItem() != null) { comparison = this.getItem().compareTo(that.getItem()); if (comparison != EQUAL) { return comparison; } else if (that.getItem() != null) { return BEFORE; assert this.equals(that) : "compareTo(...) inconsistent with equals(...)";
@Override public String toString() { StringBuilder s = new StringBuilder(getClass().getSimpleName()); s.append('@'); s.append(Integer.toHexString(hashCode())); s.append("[id="); s.append(id); s.append(",recommendationId="); s.append(getRecommendationId()); s.append(",item="); s.append(getItem()); s.append(",itemAssocId="); s.append(getItemAssocId()); s.append(",predictionValue="); s.append(getPredictionValue()); s.append(",explanation='"); s.append(getExplanation()); s.append("']"); return s.toString(); }
query.append("=?"); Object[] args = {recommendedItem.getItem().getItem(), recommendedItem.getItem().getType(), recommendedItem.getRecommendationId(), recommendedItem.getPredictionValue(), recommendedItem.getItemAssocId(), recommendedItem.getExplanation()}; int[] argTypes = {Types.INTEGER, Types.INTEGER, Types.INTEGER, Types.DOUBLE, Types.INTEGER, Types.VARCHAR}; recommendedItem.setId(keyHolder.getKey().intValue());
private void validateUniqueKey(RecommendedItemVO<Integer, Integer> recommendedItem) { if (recommendedItem.getItem() == null) { throw new IllegalArgumentException( "missing constraints, unique key (itemId, itemTypeId, recommendationId) must be set, missing 'item'"); } if (recommendedItem.getItem().getItem() == null) { throw new IllegalArgumentException( "missing constraints, unique key (itemId, itemTypeId, recommendationId) must be set, missing 'itemId'"); } if (recommendedItem.getItem().getType() == null) { throw new IllegalArgumentException( "missing constraints, unique key (itemId, itemTypeId, recommendationId) must be set, missing 'itemTypeId'"); } if (recommendedItem.getRecommendationId() == null) { throw new IllegalArgumentException( "missing constraints, unique key (itemId, itemTypeId, recommendationId) must be set, missing 'recommendationId'"); } }
@Override public int insertRecommendedItem(RecommendedItemVO<Integer, String> recommendedItem) { if (recommendedItem.getItem() == null) { throw new IllegalArgumentException("item was null, inserting was stopped"); } Integer tenantId = recommendedItem.getItem().getTenant(); if (tenantId == null) { throw new IllegalArgumentException("tenant not specified, can not retrieve type mapping without tenant"); } return recommendedItemDAO .insertRecommendedItem(typeMappingService.convertTypedRecommendedItemVO(tenantId, recommendedItem)); }
private List<RecommendedItemVO<Integer, Integer>> convertAssociatedItems( List<AssociatedItemVO<Integer, Integer>> associatedItems, ItemVO<Integer, Integer> currentItem) { List<RecommendedItemVO<Integer, Integer>> recommendedItems = new ArrayList<RecommendedItemVO<Integer, Integer>>(); for (AssociatedItemVO<Integer, Integer> currentAssociatedItem : associatedItems) { StringBuilder explanation = new StringBuilder(EXPLANATION_RELATED_1); explanation.append(currentItem.getItem()); explanation.append(EXPLANATION_RELATED_2); explanation.append(currentAssociatedItem.getAssocType()); explanation.append("'"); recommendedItems.add(new RecommendedItemVO<Integer, Integer>(currentAssociatedItem.getItem(), currentAssociatedItem.getAssocValue(), currentAssociatedItem.getItemAssocId(), explanation.toString())); } return recommendedItems; }
/** * Modifies the specified list of RecommendedItem by removing all which reference items contained in * the list itemsActedOn. * * @param recommendedItems * @param itemsActedOn */ public static void filterAlreadyActedOn(List<RecommendedItemVO<Integer, Integer>> recommendedItems, List<ItemVO<Integer, Integer>> itemsActedOn) { // skip of recommendedItems is null or empty if (recommendedItems == null || recommendedItems.size() == 0 || itemsActedOn == null || itemsActedOn.size() == 0) { return; } Iterator<RecommendedItemVO<Integer, Integer>> recommendedItemsIterator = recommendedItems.iterator(); RecommendedItemVO<Integer, Integer> currentRecommendedItem; Set<ItemVO<Integer, Integer>> items = new HashSet<ItemVO<Integer, Integer>>(itemsActedOn); while (recommendedItemsIterator.hasNext()) { currentRecommendedItem = recommendedItemsIterator.next(); if (items.contains(currentRecommendedItem.getItem())) { recommendedItemsIterator.remove(); } } }
public RecommendedItemVO<Integer, Integer> mapRow(ResultSet rs, int rowNum) throws SQLException { RecommendedItemVO<Integer, Integer> recommendedItem = new RecommendedItemVO<Integer, Integer>( DaoUtils.getInteger(rs, DEFAULT_ID_COLUMN_NAME), new ItemVO<Integer, Integer>(tenantId, DaoUtils.getInteger(rs, DEFAULT_ITEM_COLUMN_NAME), DaoUtils.getInteger(rs, DEFAULT_ITEM_TYPE_COLUMN_NAME)), DaoUtils.getDouble(rs, DEFAULT_PREDICTION_VALUE_COLUMN_NAME), DaoUtils.getInteger(rs, DEFAULT_RECOMMENDATION_COLUMN_NAME), DaoUtils.getInteger(rs, DEFAULT_ITEM_ASSOC_COLUMN_NAME), DaoUtils.getStringIfPresent(rs, DEFAULT_EXPLANATION_COLUMN_NAME)); return recommendedItem; } }
@Override public RecommendedItemVO<Integer, Integer> convertTypedRecommendedItemVO(Integer tenantId, RecommendedItemVO<Integer, String> typedRecommendedItem) { if (typedRecommendedItem == null) { return null; } return new RecommendedItemVO<Integer, Integer>( typedRecommendedItem.getId(), convertTypedItemVO(tenantId, typedRecommendedItem.getItem()), typedRecommendedItem.getPredictionValue(), typedRecommendedItem.getRecommendationId(), typedRecommendedItem.getItemAssocId(), typedRecommendedItem.getExplanation()); }
@Override public RecommendedItemVO<Integer, String> loadRecommendedItem(Integer recommendedItemId) { RecommendedItemVO<Integer, Integer> loadedRecommendedItem = recommendedItemDAO .loadRecommendedItem(recommendedItemId); if (loadedRecommendedItem.getItem() == null) { throw new IllegalArgumentException("item was null, loading was stopped"); } Integer tenantId = loadedRecommendedItem.getItem().getTenant(); if (tenantId == null) { throw new IllegalArgumentException("tenant not specified, can not retrieve type mapping without tenant"); } return typeMappingService.convertRecommendedItemVO(tenantId, loadedRecommendedItem); }
public RecommendedItemVO<Integer, String> mapRow(ResultSet rs, int rowNum) throws SQLException { Integer tenantId = DaoUtils.getInteger(rs, RecommendationDAO.DEFAULT_TENANT_COLUMN_NAME); if (tenantId == null) { throw new IllegalArgumentException( "tenant not specified, can not retrieve type mapping without tenant"); } return new RecommendedItemVO<Integer, String>( DaoUtils.getInteger(rs, DEFAULT_ID_COLUMN_NAME), new ItemVO<Integer, String>(tenantId, DaoUtils.getInteger(rs, DEFAULT_ITEM_COLUMN_NAME), typeMappingService .getItemTypeById(tenantId, DaoUtils.getInteger(rs, DEFAULT_ITEM_TYPE_COLUMN_NAME))), DaoUtils.getDouble(rs, DEFAULT_PREDICTION_VALUE_COLUMN_NAME), DaoUtils.getInteger(rs, DEFAULT_RECOMMENDATION_COLUMN_NAME), DaoUtils.getInteger(rs, DEFAULT_ITEM_ASSOC_COLUMN_NAME), DaoUtils.getStringIfPresent(rs, DEFAULT_EXPLANATION_COLUMN_NAME)); } }
while (it.hasNext()) { RecommendedItemVO<Integer, Integer> recItem = it.next(); Tuple<Double, Integer> predictionValues = predictionValuesPerItem.get(recItem.getItem()); if (predictionValues == null) { predictionValues = new Tuple<Double, Integer>(0.0, 0); tmpRecs.add(recItem); predictionValues.set_1(predictionValues.get_1() + recItem.getPredictionValue()); predictionValues.set_2(predictionValues.get_2() + 1); predictionValuesPerItem.put(recItem.getItem(), predictionValues); Tuple<Double, Integer> cumulativePredictionValues = predictionValuesPerItem.get(recItem.getItem()); if (cumulativePredictionValues.get_2().equals(1)) { filtered.add(recItem); } else { RecommendedItemVO<Integer, Integer> aggregatedRecItem = new RecommendedItemVO<Integer, Integer>( recItem.getId(), recItem.getItem(), round(cumulativePredictionValues.get_1() / (double) cumulativePredictionValues.get_2(), 16), recItem.getRecommendationId(), recItem.getItemAssocId(), recItem.getExplanation() ); filtered.add(aggregatedRecItem); while (it.hasNext()) { RecommendedItemVO<Integer, Integer> recItem = it.next(); if (itemsAlreadySeen.contains(recItem.getItem())) continue; itemsAlreadySeen.add(recItem.getItem());
public List<RecommendedItemVO<Integer, String>> convertListOfRecommendedItemVOs( List<RecommendedItemVO<Integer, Integer>> inList) { if (inList == null) { return null; } Integer tenantId; List<RecommendedItemVO<Integer, String>> outList = new ArrayList<RecommendedItemVO<Integer, String>>(); for (RecommendedItemVO<Integer, Integer> recommendedItem : inList) { if (recommendedItem.getItem() == null) { continue; } tenantId = recommendedItem.getItem().getTenant(); if (tenantId == null) { continue; } outList.add(convertRecommendedItemVO(tenantId, recommendedItem)); } return outList; }
public RecommendedItemVO<Integer, Integer> mapRow(ResultSet rs, int rowNum) throws SQLException { RecommendedItemVO<Integer, Integer> recommendedItem = new RecommendedItemVO<Integer, Integer>( DaoUtils.getInteger(rs, DEFAULT_ID_COLUMN_NAME), new ItemVO<Integer, Integer>( DaoUtils.getInteger(rs, RecommendationDAO.DEFAULT_TENANT_COLUMN_NAME), DaoUtils.getInteger(rs, DEFAULT_ITEM_COLUMN_NAME), DaoUtils.getInteger(rs, DEFAULT_ITEM_TYPE_COLUMN_NAME)), DaoUtils.getDouble(rs, DEFAULT_PREDICTION_VALUE_COLUMN_NAME), DaoUtils.getInteger(rs, DEFAULT_RECOMMENDATION_COLUMN_NAME), DaoUtils.getInteger(rs, DEFAULT_ITEM_ASSOC_COLUMN_NAME), DaoUtils.getStringIfPresent(rs, DEFAULT_EXPLANATION_COLUMN_NAME)); return recommendedItem; } }
public List<RecommendedItemVO<Integer, Integer>> convertListOfTypedRecommendedItemVOs( List<RecommendedItemVO<Integer, String>> inList) { if (inList == null) { return null; } List<RecommendedItemVO<Integer, Integer>> outList = new ArrayList<RecommendedItemVO<Integer, Integer>>(); Integer tenantId; for (RecommendedItemVO<Integer, String> typedRecommendedItem : inList) { if (typedRecommendedItem.getItem() == null) { continue; } tenantId = typedRecommendedItem.getItem().getTenant(); if (tenantId == null) { continue; } outList.add(convertTypedRecommendedItemVO(tenantId, typedRecommendedItem)); } return outList; }