@SuppressWarnings("unchecked") @Override public boolean equals(Object obj) { if (this == obj) return true; if (obj == null) return false; if (getClass() != obj.getClass()) return false; final ClusterVO other = (ClusterVO) obj; // two clusters are equal if their items are equal! return this.getItem().equals(other.getItem()); }
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; }
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 List<ItemVO<Integer, Integer>> getItemsOfCluster(ClusterVO cluster, String strategy, Boolean useFallback, int numberOfResults, Integer itemType) { Preconditions.checkNotNull(cluster); Preconditions.checkNotNull(cluster.getItem()); Preconditions.checkNotNull(cluster.getItem().getTenant()); Preconditions.checkNotNull(cluster.getName()); Integer tenantId = cluster.getItem().getTenant(); ClusterStrategy clusterStrategy = strategy == null ? null : strategies.get(strategy); if (clusterStrategy == null) clusterStrategy = strategies.get(ClusterService.DEFAULT_STRATEGY); List<AssociatedItemVO<Integer, Integer>> itemAssocs; if (!useFallback) { itemAssocs = clusterStrategy.getItemsFromCluster(tenantId, cluster, numberOfResults, itemType); } else { itemAssocs = fallBack(tenantId, cluster, clusterStrategy, numberOfResults, itemType); } 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 int removeItemFromCluster(ClusterVO cluster, ItemVO<Integer, Integer> item) throws ClusterException { Preconditions.checkNotNull(cluster); Preconditions.checkNotNull(cluster.getItem()); Preconditions.checkNotNull(cluster.getItem().getTenant()); Preconditions.checkNotNull(cluster.getName()); Preconditions.checkNotNull(item); Preconditions.checkNotNull(item.getItem()); Preconditions.checkNotNull(item.getType()); Preconditions.checkArgument(cluster.getItem().getTenant().equals(item.getTenant()), "cluster's tenantId (%s) must be the same as item's tenant id (%s)", cluster.getItem().getTenant(), item.getTenant()); Integer tenantId = cluster.getItem().getTenant(); Integer assocTypeBelongsTo = assocTypeDAO.getIdOfType(tenantId, ClusterService.ASSOCTYPE_BELONGSTO); ItemAssocVO<Integer,Integer> itemAssoc = new ItemAssocVO<Integer,Integer>(tenantId, item, assocTypeBelongsTo, null, cluster.getItem(), null, null, null, null, null); int rowsModified = itemAssocService.removeItemAssocQBE(itemAssoc); if (rowsModified == 0) throw new ClusterException( "The item was not removed from the cluster, maybe the item was not in the cluster."); return rowsModified; }
public int addItemToCluster(ClusterVO cluster, ItemVO<Integer, Integer> item) throws ClusterException { Preconditions.checkNotNull(cluster); Preconditions.checkNotNull(cluster.getItem()); Preconditions.checkNotNull(cluster.getItem().getTenant()); Preconditions.checkNotNull(cluster.getName()); Preconditions.checkNotNull(item); Preconditions.checkNotNull(item.getItem()); Preconditions.checkNotNull(item.getType()); Preconditions.checkArgument(cluster.getItem().getTenant().equals(item.getTenant()), "cluster's tenantId (%s) must be the same as item's tenant id (%s)", cluster.getItem().getTenant(), item.getTenant()); Integer tenantId = cluster.getItem().getTenant(); Integer assocTypeBelongsTo = assocTypeDAO.getIdOfType(tenantId, ClusterService.ASSOCTYPE_BELONGSTO); Integer sourceTypeManuallyCreated = sourceTypeDAO.getIdOfType(tenantId, SourceTypeDAO.SOURCETYPE_MANUALLY_CREATED); Integer viewTypeAdmin = viewTypeDAO.getIdOfType(tenantId, ViewTypeDAO.VIEWTYPE_ADMIN); ItemAssocVO<Integer,Integer> itemAssoc = new ItemAssocVO<Integer,Integer>(tenantId, item, assocTypeBelongsTo, 1.0, cluster.getItem(), sourceTypeManuallyCreated, null, viewTypeAdmin, true, new Date()); try { return itemAssocService.insertOrUpdateItemAssoc(itemAssoc); } catch (DuplicateKeyException e) { throw new ClusterException( "The item was not added to the cluster because the item already was in the cluster."); } }
public void addCluster(ClusterVO cluster, ClusterVO parent) throws ClusterException { clusters.get(parent.getItem().getTenant()); if (tree.containsVertex(cluster)) throw new ClusterException("Cannot add cluster! Cluster already exists!"); if (tree.containsVertex(parent)) { ItemAssocVO<Integer,Integer> edge = new ItemAssocVO<Integer,Integer>( parent.getItem().getTenant(), // tenantId parent.getItem(), //itemFrom assocTypeDAO.getIdOfType(parent.getItem().getTenant(), ClusterService.ASSOCTYPE_CLUSTER), cluster.getItem(), //itemTo sourceTypeDAO.getIdOfType(parent.getItem().getTenant(), viewTypeDAO.getIdOfType(parent.getItem().getTenant(), ViewTypeDAO.VIEWTYPE_ADMIN), true); //timeStamp itemAssocService.insertOrUpdateItemAssoc(edge);
private void removeClustersFromDB( DelegateTree<ClusterVO, ItemAssocVO<Integer,Integer>> tree, ClusterVO vertex) { List<ItemAssocVO<Integer,Integer>> edges = itemAssocService.getItemAssocsForItem(vertex.getItem().getTenant(), vertex.getItem(), null); //remove all edges in db for (ItemAssocVO<Integer,Integer> edge : edges) { itemAssocService.removeItemAssoc(edge.getId()); } profileDAO.deactivateProfile(vertex.getItem().getTenant(), vertex.getItem().getItem(), vertex.getItem().getType()); // remove all items from cluster for (ItemVO<Integer, Integer> item : getItemsOfCluster(vertex)) { try { removeItemFromCluster(vertex, item); } catch (ClusterException ce) { logger.error(ce.getMessage()); } } for (ClusterVO child : tree.getChildren(vertex)) { removeClustersFromDB(tree, child); } }
@ShortCacheable public List<AssociatedItemVO<Integer, Integer>> getItemsFromCluster(Integer tenantId, ClusterVO cluster, Integer numberOfResults, Integer itemType) { IAConstraintVO<Integer, Integer> constraint = new IAConstraintVO<Integer, Integer>( numberOfResults, null, null, null, tenantId, true, false, ItemAssocDAO.DEFAULT_CHANGE_DATE_COLUMN_NAME); return itemAssocService.getItemsFrom(itemType, assocTypeDAO.getIdOfType(tenantId, ClusterService.ASSOCTYPE_BELONGSTO), cluster.getItem(), constraint); }
@ShortCacheable public List<AssociatedItemVO<Integer, Integer>> getItemsFromCluster(Integer tenantId, ClusterVO cluster, Integer numberOfResults, Integer itemType) { IAConstraintVO<Integer, Integer> constraint = new IAConstraintVO<Integer, Integer>(numberOfResults, null, null, null, tenantId, true, false); return itemAssocService.getItemsFrom(itemType, assocTypeDAO.getIdOfType(tenantId, ClusterService.ASSOCTYPE_BELONGSTO), cluster.getItem(), constraint); }
@ShortCacheable private List<AssociatedItemVO<Integer, Integer>> getAllItems(Integer tenantId, ClusterVO cluster, Integer numberOfResults, Integer itemType) { IAConstraintVO<Integer, Integer> constraint = new IAConstraintVO<Integer, Integer>( numberOfResults, null, null, null, tenantId, true, null); //TODO: modify SQL statement: SELECT RANDOM .... LIMIT 100; return itemAssocService.getItemsFrom(itemType, assocTypeDAO.getIdOfType(tenantId, ClusterService.ASSOCTYPE_BELONGSTO), cluster.getItem(), constraint); }
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 void moveCluster(Integer tenantId, String clusterName, String newParent) { DelegateTree<ClusterVO, ItemAssocVO<Integer,Integer>> tree = clusters.get(tenantId); ClusterVO cluster = loadCluster(tenantId, idMappingDAO.lookup(clusterName), itemTypeDAO.getIdOfType(tenantId, ClusterService.ITEMTYPE_CLUSTER)); // disconnect subtree ItemAssocVO<Integer,Integer> parentEdge = tree.getParentEdge(cluster); itemAssocService.removeItemAssoc(parentEdge.getId()); tree.removeChild(cluster); // add cluster as child to new parent ClusterVO parent = loadCluster(tenantId, idMappingDAO.lookup(newParent), itemTypeDAO.getIdOfType(tenantId, ClusterService.ITEMTYPE_CLUSTER)); ItemAssocVO<Integer,Integer> edge = new ItemAssocVO<Integer,Integer>( parent.getItem().getTenant(), // tenantId parent.getItem(), //itemFrom assocTypeDAO.getIdOfType(parent.getItem().getTenant(), ClusterService.ASSOCTYPE_CLUSTER), //assocType 1.0, //assocValue cluster.getItem(), //itemTo sourceTypeDAO.getIdOfType(parent.getItem().getTenant(), SourceTypeDAO.SOURCETYPE_MANUALLY_CREATED), //sourceType "", //comment viewTypeDAO.getIdOfType(parent.getItem().getTenant(), ViewTypeDAO.VIEWTYPE_ADMIN), true); //timeStamp itemAssocService.insertOrUpdateItemAssoc(edge); tree.addChild(edge, parent, cluster); buildTree(tree, cluster); }