@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)); }
@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(); }
@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()); }
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 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); }
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); predictionValuesPerItem.put(recItem.getItem(), predictionValues); Tuple<Double, Integer> cumulativePredictionValues = predictionValuesPerItem.get(recItem.getItem()); if (cumulativePredictionValues.get_2().equals(1)) { filtered.add(recItem); RecommendedItemVO<Integer, Integer> aggregatedRecItem = new RecommendedItemVO<Integer, Integer>( recItem.getId(), recItem.getItem(), round(cumulativePredictionValues.get_1() / (double) cumulativePredictionValues.get_2(), 16), recItem.getRecommendationId(), while (it.hasNext()) { RecommendedItemVO<Integer, Integer> recItem = it.next(); if (itemsAlreadySeen.contains(recItem.getItem())) continue; itemsAlreadySeen.add(recItem.getItem()); filtered.add(recItem);
/** * 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 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 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; }