static RevTree build(final long size, final int childTreeCount, @Nullable ImmutableList<Node> trees, @Nullable ImmutableList<Node> features, @Nullable ImmutableSortedMap<Integer, Bucket> buckets) { ObjectId id = HashObject.hashTree(trees, features, buckets); return RevTreeImpl.create(id, size, childTreeCount, trees, features, buckets); }
public static RevTree createLeafTree(long size, Collection<Node> features, Collection<Node> trees) { Preconditions.checkNotNull(features); Preconditions.checkNotNull(trees); ImmutableList<Node> featuresList = ImmutableList.of(); ImmutableList<Node> treesList = ImmutableList.of(); if (!features.isEmpty()) { featuresList = NODE_STORAGE_ORDER.immutableSortedCopy(features); } if (!trees.isEmpty()) { treesList = NODE_STORAGE_ORDER.immutableSortedCopy(trees); } final ObjectId id = HashObject.hashTree(treesList, featuresList, null); return RevTreeBuilder.create(id, size, trees.size(), treesList, featuresList, null); }
private RevTree createNodeTree(long size, int numTrees, TreeMap<Integer, Bucket> buckets) { ImmutableSortedMap<Integer, Bucket> innerTrees = ImmutableSortedMap.copyOf(buckets); final ObjectId id = HashObject.hashTree(null, null, innerTrees); return RevTreeBuilder.create(id, size, numTrees, null, null, innerTrees); }
id = HashObject.hashTree(trees, features, buckets);
public static RevTree tree(int treeSize, List<Node> treeNodes, List<Node> featureNodes, SortedMap<Integer, Bucket> buckets) { ObjectId id = HashObject.hashTree(treeNodes, featureNodes, buckets); ImmutableList<Node> trees = treeNodes == null ? ImmutableList.of() : ImmutableList.copyOf(treeNodes); ImmutableList<Node> features = featureNodes == null ? ImmutableList.of() : ImmutableList.copyOf(featureNodes); int childTreeCount = treeNodes == null ? 0 : treeNodes.size(); RevTree tree = RevTreeBuilder.create(id, treeSize, childTreeCount, trees, features, buckets); return tree; }
/** * @return the new tree, not saved to the object database. Any bucket tree though is saved when * this method returns. */ public RevTree build() { RevTree tree = normalize(); checkState(bucketTreesByBucket.isEmpty() || (featureChanges.isEmpty() && treeChanges.isEmpty())); if (obStore != null) { obStore.put(tree); } ObjectId oldid = HashObject.hashTree(original.trees(), original.features(), original.buckets()); ObjectId newid = HashObject.hashTree(tree.trees(), tree.features(), tree.buckets()); return oldid.equals(newid) ? original : tree; }
id = HashObject.hashTree(trees, features, buckets);
private RevTree createNodeTree(long size, int numTrees, @NonNull SortedMap<Integer, Bucket> buckets) { final ObjectId id = HashObject.hashTree(null, null, buckets.values()); return RevObjectFactory.defaultInstance().createTree(id, size, numTrees, new TreeSet<>(buckets.values())); }
id = HashObject.hashTree(trees, features, ImmutableSortedMap.copyOf(buckets));
public static RevTree createLeafTree(long size, Collection<Node> features, Collection<Node> trees) { Preconditions.checkNotNull(features); Preconditions.checkNotNull(trees); ImmutableList<Node> featuresList = ImmutableList.of(); ImmutableList<Node> treesList = ImmutableList.of(); if (!features.isEmpty()) { featuresList = NODE_STORAGE_ORDER.immutableSortedCopy(features); } if (!trees.isEmpty()) { treesList = NODE_STORAGE_ORDER.immutableSortedCopy(trees); } final ObjectId id = HashObject.hashTree(treesList, featuresList, (Iterable<Bucket>) null); return RevObjectFactory.defaultInstance().createTree(id, size, treesList, featuresList); }
public static RevTree tree(int treeSize, List<Node> treeNodes, List<Node> featureNodes, SortedSet<Bucket> buckets) { ObjectId id = HashObject.hashTree(treeNodes, featureNodes, buckets); ImmutableList<Node> trees = treeNodes == null ? ImmutableList.of() : ImmutableList.copyOf(treeNodes); ImmutableList<Node> features = featureNodes == null ? ImmutableList.of() : ImmutableList.copyOf(featureNodes); buckets = buckets == null ? Collections.emptySortedSet() : buckets; int childTreeCount = treeNodes == null ? 0 : treeNodes.size(); if (buckets.isEmpty()) { return RevObjectFactory.defaultInstance().createTree(id, treeSize, trees, features); } return RevObjectFactory.defaultInstance().createTree(id, treeSize, childTreeCount, buckets); }
id = HashObject.hashTree(trees, features, buckets);
public static RevTree decode(@Nullable ObjectId id, ByteBuffer data) { final DataBuffer dataBuffer = DataBuffer.of(data); final long totalSize = dataBuffer.header().size(); final int numTrees = dataBuffer.header().numTrees(); if (totalSize == 0L && numTrees == 0) { return RevTree.EMPTY; } if (null == id) { List<Node> trees = RevTreeFormat.trees(dataBuffer); List<Node> features = RevTreeFormat.features(dataBuffer); SortedMap<Integer, Bucket> buckets = RevTreeFormat.buckets(dataBuffer); id = HashObject.hashTree(trees, features, buckets); } return new RevTreeImpl(id, dataBuffer); }
public static RevTree decode(@Nullable ObjectId id, ByteBuffer data) { final DataBuffer dataBuffer = DataBuffer.of(data); final long totalSize = dataBuffer.header().size(); final int numTrees = dataBuffer.header().numTrees(); if (totalSize == 0L && numTrees == 0) { return RevTree.EMPTY; } if (null == id) { List<Node> trees = RevTreeFormat.trees(dataBuffer); List<Node> features = RevTreeFormat.features(dataBuffer); SortedMap<Integer, Bucket> buckets = RevTreeFormat.buckets(dataBuffer); id = HashObject.hashTree(trees, features, buckets); } return new RevTreeImpl(id, dataBuffer); }
/** * @return the new tree, not saved to the object database. Any bucket tree though is saved when * this method returns. */ public RevTree build() { RevTree tree = normalize(); checkState(bucketTreesByBucket.isEmpty() || (featureChanges.isEmpty() && treeChanges.isEmpty())); if (obStore != null) { obStore.put(tree); } ObjectId oldid = HashObject.hashTree(original.trees(), original.features(), original.getBuckets()); ObjectId newid = HashObject.hashTree(tree.trees(), tree.features(), tree.getBuckets()); return oldid.equals(newid) ? original : tree; }