@Override public boolean bucket(NodeRef leftParent, NodeRef rightParent, BucketIndex bucketIndex, @Nullable Bucket left, @Nullable Bucket right) { if (bucketIndex.left().isEmpty() || bucketIndex.right().isEmpty()) { Bucket bucket = left == null ? right : left; addTreeFeatures(bucket.getObjectId(), left != null, right != null); return false; } return true; }
@Override public boolean bucket(NodeRef leftParent, NodeRef rightParent, BucketIndex bucketIndex, @Nullable Bucket left, @Nullable Bucket right) { if (bucketIndex.left().isEmpty() || bucketIndex.right().isEmpty()) { Bucket bucket = left == null ? right : left; RevTree tree = (left == null ? rightSource : leftSource).getTree(bucket.getObjectId()); addTreeFeatures(tree, left != null, right != null); return false; } return true; }
private void resolveSourceTreeRef(String parentPath, Map<String, NodeRef> indexChangedTrees, Map<String, ObjectId> metadataCache, RevTree stageHead) { if (NodeRef.ROOT.equals(parentPath)) { return; } NodeRef indexTreeRef = indexChangedTrees.get(parentPath); if (indexTreeRef == null) { Optional<NodeRef> treeRef = Optional.absent(); if (!stageHead.isEmpty()) {// slight optimization, may save a lot of processing on // large first commits treeRef = command(FindTreeChild.class).setParent(stageHead).setChildPath(parentPath) .call(); } if (treeRef.isPresent()) {// may not be in case of a delete indexTreeRef = treeRef.get(); indexChangedTrees.put(parentPath, indexTreeRef); metadataCache.put(parentPath, indexTreeRef.getMetadataId()); } } else { metadataCache.put(parentPath, indexTreeRef.getMetadataId()); } }
private void resolveSourceTreeRef(String parentPath, Map<String, NodeRef> indexChangedTrees, Map<String, ObjectId> metadataCache, RevTree stageHead) { if (NodeRef.ROOT.equals(parentPath)) { return; } NodeRef indexTreeRef = indexChangedTrees.get(parentPath); if (indexTreeRef == null) { Optional<NodeRef> treeRef = Optional.absent(); if (!stageHead.isEmpty()) {// slight optimization, may save a lot of processing on // large first commits treeRef = command(FindTreeChild.class).setParent(stageHead).setChildPath(parentPath) .call(); } if (treeRef.isPresent()) {// may not be in case of a delete indexTreeRef = treeRef.get(); indexChangedTrees.put(parentPath, indexTreeRef); metadataCache.put(parentPath, indexTreeRef.getMetadataId()); } } else { metadataCache.put(parentPath, indexTreeRef.getMetadataId()); } }
private Map<NodeId, DAGNode> lazyNodes(final RevTree tree) { if (tree.isEmpty()) { return ImmutableMap.of(); } final TreeCache treeCache = storageProvider.getTreeCache(); final int cacheTreeId = treeCache.getTreeId(tree).intValue(); Map<NodeId, DAGNode> dagNodes = new HashMap<>(); List<Node> treeNodes = tree.trees(); for (int i = 0; i < treeNodes.size(); i++) { NodeId nodeId = computeId(treeNodes.get(i)); DAGNode dagNode = DAGNode.treeNode(cacheTreeId, i); dagNodes.put(nodeId, dagNode); } ImmutableList<Node> featureNodes = tree.features(); for (int i = 0; i < featureNodes.size(); i++) { NodeId nodeId = computeId(featureNodes.get(i)); DAGNode dagNode = DAGNode.featureNode(cacheTreeId, i); dagNodes.put(nodeId, dagNode); } return dagNodes; }
if (parent.isEmpty()) { return Optional.absent();
private Map<NodeId, DAGNode> lazyNodes(final RevTree tree) { if (tree.isEmpty()) { return Collections.emptyMap(); } final TreeCache treeCache = storageProvider.getTreeCache(); final int cacheTreeId = treeCache.getTreeId(tree).intValue(); Map<NodeId, DAGNode> dagNodes = new HashMap<>(); final int treesSize = tree.treesSize(); for (int i = 0; i < treesSize; i++) { NodeId nodeId = computeId(tree.getTree(i)); DAGNode dagNode = DAGNode.treeNode(cacheTreeId, i); dagNodes.put(nodeId, dagNode); } final int featuresSize = tree.featuresSize(); for (int i = 0; i < featuresSize; i++) { NodeId nodeId = computeId(tree.getFeature(i)); DAGNode dagNode = DAGNode.featureNode(cacheTreeId, i); dagNodes.put(nodeId, dagNode); } return dagNodes; }
if (oldCanonicalTree.isEmpty()) { oldIndexTree = RevTree.EMPTY; } else {
if (oldCanonicalTree.isEmpty()) { oldIndexTree = RevTree.EMPTY; } else {
: repo.objectDatabase().getTree(treeId); totalFeatures.addAndGet(root.size()); if (!root.isEmpty()) { repo.command(FindFeatureTypeTrees.class).setRootTreeRef(root.getId().toString()) .call().stream().map(NodeRef::name).forEach(layerNames::add);
if (parent.isEmpty()) { return Optional.absent();
if (!bucketTree.isEmpty()) {
if (!bucketTree.isEmpty()) {
sizeDelta += bucketSizeDelta; treesDelta += bucketTreesDelta; if (modifiedBucketTree.isEmpty()) { bucketTreesByBucket.remove(bucketIndex); } else {
testTree.isEmpty();
testTree.isEmpty();
@Test public void testEmptyTree() { RevTree emptyTree = RevTree.EMPTY; assertEquals(TYPE.TREE, emptyTree.getType()); assertEquals(RevTree.EMPTY_TREE_ID, emptyTree.getId()); assertEquals(0, emptyTree.trees().size()); assertEquals(0, emptyTree.features().size()); assertEquals(0, emptyTree.bucketsSize()); assertEquals(0, emptyTree.size()); assertEquals(0, emptyTree.numTrees()); assertTrue(emptyTree.isEmpty()); assertTrue(emptyTree.toString().contains("EMPTY TREE")); assertEquals(emptyTree, emptyTree); assertFalse(emptyTree.equals(RevTree.EMPTY_TREE_ID)); }
private NodeRef findOrCreateTree(final String treePath, final FeatureType type) { RevTree tree = context.command(FindOrCreateSubtree.class).setChildPath(treePath) .setParent(workHead).setParentPath(NodeRef.ROOT).call(); ObjectId metadataId = ObjectId.NULL; if (type != null) { RevFeatureType revFeatureType = RevFeatureTypeBuilder.build(type); if (tree.isEmpty()) { db.put(revFeatureType); } metadataId = revFeatureType.getId(); } Envelope bounds = SpatialOps.boundsOf(tree); Node node = Node.create(NodeRef.nodeFromPath(treePath), tree.getId(), metadataId, TYPE.TREE, bounds); String parentPath = NodeRef.parentPath(treePath); return new NodeRef(node, parentPath, ObjectId.NULL); }
private NodeRef findOrCreateTree(final String treePath, final FeatureType type) { RevTree tree = context.command(FindOrCreateSubtree.class).setChildPath(treePath) .setParent(workHead).setParentPath(NodeRef.ROOT).call(); ObjectId metadataId = ObjectId.NULL; if (type != null) { RevFeatureType revFeatureType = RevFeatureType.builder().type(type).build(); if (tree.isEmpty()) { db.put(revFeatureType); } metadataId = revFeatureType.getId(); } Envelope bounds = SpatialOps.boundsOf(tree); Node node = RevObjectFactory.defaultInstance().createNode(NodeRef.nodeFromPath(treePath), tree.getId(), metadataId, TYPE.TREE, bounds, null); String parentPath = NodeRef.parentPath(treePath); return new NodeRef(node, parentPath, ObjectId.NULL); }