Skip to content
Snippets Groups Projects
Verified Commit 3bfe1fea authored by David Procházka's avatar David Procházka
Browse files

ADD: objects are retrieved from LocalBucket

parent 9a087b2e
No related branches found
No related tags found
No related merge requests found
package mhtree; package mhtree;
import messif.buckets.BucketStorageException;
import messif.objects.LocalAbstractObject; import messif.objects.LocalAbstractObject;
import java.io.Serializable; import java.io.Serializable;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Collection;
import java.util.Collections; import java.util.Collections;
import java.util.List; import java.util.List;
import java.util.stream.Collectors; import java.util.stream.Collectors;
...@@ -38,6 +40,15 @@ public class InternalNode extends Node implements Serializable { ...@@ -38,6 +40,15 @@ public class InternalNode extends Node implements Serializable {
} }
public void addObject(LocalAbstractObject object) { public void addObject(LocalAbstractObject object) {
if (isCovered(object)) return;
rebuildHull(object); rebuildHull(object);
} }
public List<LocalAbstractObject> getObjects() {
return children.stream()
.map(Node::getObjects)
.flatMap(Collection::stream)
.collect(Collectors.toList());
}
} }
...@@ -4,8 +4,10 @@ import cz.muni.fi.disa.similarityoperators.cover.AbstractRepresentation; ...@@ -4,8 +4,10 @@ import cz.muni.fi.disa.similarityoperators.cover.AbstractRepresentation;
import messif.buckets.BucketStorageException; import messif.buckets.BucketStorageException;
import messif.buckets.LocalBucket; import messif.buckets.LocalBucket;
import messif.objects.LocalAbstractObject; import messif.objects.LocalAbstractObject;
import messif.objects.util.AbstractObjectIterator;
import java.io.Serializable; import java.io.Serializable;
import java.util.ArrayList;
import java.util.List; import java.util.List;
public class LeafNode extends Node implements Serializable { public class LeafNode extends Node implements Serializable {
...@@ -34,4 +36,13 @@ public class LeafNode extends Node implements Serializable { ...@@ -34,4 +36,13 @@ public class LeafNode extends Node implements Serializable {
rebuildHull(object); rebuildHull(object);
} }
public List<LocalAbstractObject> getObjects() {
List<LocalAbstractObject> objects = new ArrayList<>();
for (AbstractObjectIterator<LocalAbstractObject> it = bucket.getAllObjects(); it.hasNext(); )
objects.add(it.next());
return objects;
}
} }
...@@ -75,8 +75,7 @@ public class MHTree extends Algorithm implements Serializable { ...@@ -75,8 +75,7 @@ public class MHTree extends Algorithm implements Serializable {
Node currentNode = root; Node currentNode = root;
while (!currentNode.isLeaf()) { while (!currentNode.isLeaf()) {
if (!currentNode.isCovered(object)) currentNode.addObject(object);
currentNode.addObject(object);
currentNode = ((InternalNode) currentNode).getNearestChild(object); currentNode = ((InternalNode) currentNode).getNearestChild(object);
} }
......
...@@ -63,16 +63,13 @@ public abstract class Node implements Serializable { ...@@ -63,16 +63,13 @@ public abstract class Node implements Serializable {
return hull.getHull(); return hull.getHull();
} }
public List<LocalAbstractObject> getObjects() {
return hull.getObjects();
}
@Override @Override
public String toString() { public String toString() {
return "Node{hull=" + hull + '}'; return "Node{hull=" + hull + '}';
} }
public abstract void addObject(LocalAbstractObject object) throws BucketStorageException; public abstract void addObject(LocalAbstractObject object) throws BucketStorageException;
public abstract List<LocalAbstractObject> getObjects();
protected void rebuildHull(LocalAbstractObject object) { protected void rebuildHull(LocalAbstractObject object) {
List<LocalAbstractObject> objects = new ArrayList<>(getObjects()); List<LocalAbstractObject> objects = new ArrayList<>(getObjects());
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment