/** * Checks if item1 and item2 have the same tenant and item type. * * @param item1 Item 1. * @param item2 Item 2. */ private void validateItems(ItemVO<Integer, Integer> item1, ItemVO<Integer, Integer> item2) { Preconditions.checkNotNull(item1, "item1 can't be null."); Preconditions.checkNotNull(item2, "item2 can't be null."); Preconditions.checkArgument(item1.getTenant().intValue() == item2.getTenant().intValue(), "Tenant of item1 and item2 doesn't match."); }
/** * Checks if the item has the same tenant and item type are the same as the currently used values. * * @param item Item to check. */ private void validateItem(ItemVO<Integer, Integer> item) { Preconditions.checkNotNull(item, "item can't be null."); Preconditions.checkArgument(item.getTenant() == tenantId, "Tenant of item doesn't match."); }
public List<ClusterVO> getClustersForItem(ItemVO<Integer, Integer> item) { Integer assocTypeBelongsTo = assocTypeDAO.getIdOfType(item.getTenant(), ClusterService.ASSOCTYPE_BELONGSTO); IAConstraintVO<Integer, Integer> constraint = new IAConstraintVO<Integer, Integer>( null, null, null, null, item.getTenant(), true, null); List<AssociatedItemVO<Integer, Integer>> itemAssocs = itemAssocService.getItemsTo(item, assocTypeBelongsTo, itemTypeDAO.getIdOfType(item.getTenant(), ClusterService.ITEMTYPE_CLUSTER), constraint); return Lists.transform(itemAssocs, new Function<AssociatedItemVO<Integer, Integer>,ClusterVO>() { public ClusterVO apply( AssociatedItemVO<Integer, Integer> input) { return loadCluster(input.getItem().getTenant(),input.getItem().getItem(),input.getItem().getType()); } }); }
public float match(ItemVO<Integer, String> item1, ItemVO<Integer, String> item2) { float ret = -1; try { ret = matchers.get(item1.getTenant()).get(item1.getType()).match(item1, item2); } catch (NullPointerException npe) { if (logger.isDebugEnabled()) { logger.debug("Could not match profiles! There seem to be no matchers defined for the given itemTypes!" + "TenantId: " + item1.getTenant() + " ItemTypeId1: " + item1.getType() + " ItemTypeId2: " + item2.getType()); } } return ret; }
public boolean didUserRateItem(final Integer userId, final ItemVO<Integer, Integer> item, final Integer actionTypeId) { final StringBuilder query = new StringBuilder("SELECT * FROM "); query.append(DEFAULT_TABLE_NAME); query.append(" WHERE "); query.append(DEFAULT_TENANT_COLUMN_NAME).append("=? AND "); query.append(DEFAULT_USER_COLUMN_NAME).append("=? AND "); query.append(DEFAULT_ITEM_COLUMN_NAME).append("=? AND "); query.append(DEFAULT_ITEM_TYPE_COLUMN_NAME).append("=? AND "); query.append(DEFAULT_ACTION_TYPE_COLUMN_NAME).append("=? LIMIT 1"); final Object[] args = new Object[]{item.getTenant(), userId, item.getItem(), item.getType(), actionTypeId}; final int[] argt = new int[]{Types.INTEGER, Types.INTEGER, Types.INTEGER, Types.INTEGER, Types.INTEGER}; final int count = getJdbcTemplate().queryForList(query.toString(), args, argt).size(); return count > 0; }
public List<ItemVO<Integer, Integer>> getAvailableItemsForTenant(final Integer tenantId, final Integer itemTypeId) { Set<ItemVO<Integer, Integer>> result = new HashSet<ItemVO<Integer, Integer>>(); for (RatingVO<Integer, Integer> rating : ratings) { if (!tenantId.equals(rating.getItem().getTenant())) continue; if (!itemTypeId.equals(rating.getItem().getType())) continue; if (result.contains(rating.getItem())) continue; result.add(rating.getItem()); } return new ArrayList<ItemVO<Integer, Integer>>(result); }
@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)); }
public DeviationCalculationResult calculate(int userId, List<RatingVO<Integer, Integer>> ratings, Date oldRatingsBeforeThisDate) { if ((ratings == null) || ratings.isEmpty()) throw new IllegalArgumentException("Can't calculate deviations for null or empyty ratings list."); int tenantId = ratings.get(0).getItem().getTenant(); int itemTypeId = ratings.get(0).getItem().getType(); DeviationCalculationResult result = childStrategy.calculate(userId, ratings, oldRatingsBeforeThisDate); List<Deviation> deviations = result.getDeviations(); deviationDAO.insertDeviations(deviations); return new DeviationCalculationResult(deviations, deviations.size(), deviations.size()); } }
@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 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; }
public List<RatingVO<Integer, Integer>> getLatestRatingsForTenant(final Integer tenantId, final Integer itemTypeId, final Integer itemId, final Integer userId, final Date since) { List<RatingVO<Integer, Integer>> result = new LinkedList<RatingVO<Integer, Integer>>(); for (RatingVO<Integer, Integer> rating : ratings) { if (!rating.getItem().getTenant().equals(tenantId)) continue; if (!rating.getItem().getType().equals(itemTypeId)) continue; if (itemId != null && !rating.getItem().getItem().equals(itemId)) continue; if (userId != null && !rating.getUser().equals(userId)) continue; if (since != null && !rating.getLastActionTime().after(since)) continue; result.add(rating); } return result; }
public boolean didUserRateItem(final Integer userId, final ItemVO<Integer, Integer> item, final Integer actionTypeId) { final Object[] args = new Object[]{item.getTenant(), userId, item.getItem(), item.getType(), actionTypeId}; final int count = getJdbcTemplate().queryForList(QUERY_RATED, args, ARGT_RATED).size(); return count > 0; }
public List<ItemVO<Integer, Integer>> getItemsOfCluster(ClusterVO cluster, Integer itemType) { Preconditions.checkNotNull(cluster); Preconditions.checkNotNull(cluster.getItem()); Preconditions.checkNotNull(cluster.getItem().getTenant()); Preconditions.checkNotNull(cluster.getName()); Integer tenantId = cluster.getItem().getTenant(); Integer assocTypeBelongsTo = assocTypeDAO.getIdOfType(tenantId, ClusterService.ASSOCTYPE_BELONGSTO); IAConstraintVO<Integer, Integer> constraint = new IAConstraintVO<Integer, Integer>( null, null, null, null, tenantId, true, null); List<AssociatedItemVO<Integer, Integer>> itemAssocs = itemAssocService.getItemsFrom(itemType, assocTypeBelongsTo, cluster.getItem(), constraint); return Lists.transform(itemAssocs, new Function<AssociatedItemVO<Integer, Integer>, ItemVO<Integer, Integer>>() { public ItemVO<Integer, Integer> apply( AssociatedItemVO<Integer, Integer> input) { return input.getItem(); } }); }
public Deviation(@Nullable Integer id, ItemVO<Integer, Integer> item1, ItemVO<Integer, Integer> item2, double numerator, long denominator) { validateItems(item1, item2); this.item1Id = item1.getItem(); this.item2Id = item2.getItem(); this.tenantId = item1.getTenant(); this.item1TypeId = item1.getType(); this.item2TypeId = item2.getType(); this.id = id; this.numerator = numerator; this.denominator = denominator; }
private int storeCluster(ClusterVO cluster) { String xml; try { Marshaller m = context.createMarshaller(); StringWriter sw = new StringWriter(); m.marshal(cluster, sw); xml = sw.toString(); } catch (Exception e) { System.out.println("An Error occurred marshaling the document" + e); return -1; } int i = profileDAO.storeProfile(cluster.getItem().getTenant(), cluster.getItem().getItem(), cluster.getItem().getType(), xml); profileDAO.activateProfile(cluster.getItem().getTenant(), cluster.getItem().getItem(), cluster.getItem().getType()); return i; }
@Override public ItemVO<Integer, String> convertItemVO(Integer tenantId, ItemVO<Integer, Integer> item) { if (item == null) { return null; } return new ItemVO<Integer, String>(item.getTenant(), item.getItem(), itemTypeDAO.getTypeById(tenantId, item.getType())); }
@Override public ItemVO<Integer, Integer> convertTypedItemVO(Integer tenantId, ItemVO<Integer, String> typedItem) { if (typedItem == null) { return null; } return new ItemVO<Integer, Integer>(typedItem.getTenant(), typedItem.getItem(), itemTypeDAO.getIdOfType(tenantId, typedItem.getType())); }
private void buildTree( DelegateTree<ClusterVO, ItemAssocVO<Integer,Integer>> tree, ClusterVO vertex) { Integer assocTypeCluster = assocTypeDAO.getIdOfType(vertex.getItem().getTenant(), ClusterService.ASSOCTYPE_CLUSTER); List<ItemAssocVO<Integer,Integer>> edges = itemAssocService .getItemAssocs(vertex.getItem(), assocTypeCluster, null, new IAConstraintVO<Integer, Integer>(null, vertex.getItem().getTenant())); for (ItemAssocVO<Integer,Integer> edge : edges) { ItemVO<Integer, Integer> child = edge.getItemTo(); ClusterVO childVertex = loadCluster(child.getTenant(), child.getItem(), child.getType()); if (childVertex != null) { tree.addChild(edge, vertex, childVertex); buildTree(tree, childVertex); } } }
public ClusterVO apply( AssociatedItemVO<Integer, Integer> input) { return loadCluster(input.getItem().getTenant(),input.getItem().getItem(),input.getItem().getType()); } });
public void setItems(ItemVO<Integer, Integer> item1, ItemVO<Integer, Integer> item2) { validateItems(item1, item2); this.item1Id = item1.getItem(); this.item2Id = item2.getItem(); this.tenantId = item1.getTenant(); this.item1TypeId = item1.getType(); this.item2TypeId = item2.getType(); } }