package mhtree; import cz.muni.fi.disa.similarityoperators.cover.AbstractRepresentation.PrecomputedDistances; import messif.buckets.BucketStorageException; import messif.buckets.LocalBucket; import messif.objects.LocalAbstractObject; import messif.objects.util.AbstractObjectIterator; import java.io.Serializable; import java.util.Collections; import java.util.HashSet; import java.util.List; import java.util.Set; public class LeafNode extends Node implements Serializable { /** * Serialization ID */ private static final long serialVersionUID = 1L; private LocalBucket bucket; LeafNode(PrecomputedDistances distances, LocalBucket bucket, InsertType insertType, ObjectToNodeDistance objectToNodeDistance) throws BucketStorageException { super(distances, insertType, objectToNodeDistance); this.bucket = bucket; this.bucket.addObjects(distances.getObjects()); } public void addObject(LocalAbstractObject object) throws BucketStorageException { bucket.addObject(object); addNewObject(object); } public Set<LocalAbstractObject> getObjects() { Set<LocalAbstractObject> objects = new HashSet<>(bucket.getObjectCount()); for (AbstractObjectIterator<LocalAbstractObject> it = bucket.getAllObjects(); it.hasNext(); ) objects.add(it.next()); return objects; } public int getHeight() { return 0; } public List<Node> getNodesOnLevel(int level) { return Collections.singletonList(this); } }