Skip to content
Snippets Groups Projects
LeafNode.java 1.88 KiB
Newer Older
import cz.muni.fi.disa.similarityoperators.cover.AbstractRepresentation.PrecomputedDistances;
import messif.buckets.BucketStorageException;
import messif.buckets.LocalBucket;
import messif.objects.LocalAbstractObject;

import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;
 * Represents a leaf node in MH-Tree.

public class LeafNode extends Node implements Serializable {
    /**
     * Serialization ID
     */
    private static final long serialVersionUID = 1L;

    /**
     * Bucket for storing objects of the MH-Tree.
     */
    private final LocalBucket bucket;
    protected LeafNode(PrecomputedDistances distances, LocalBucket bucket, InsertType insertType, ObjectToNodeDistance objectToNodeDistance) throws BucketStorageException {
        super(distances, insertType, objectToNodeDistance);

        this.bucket = bucket;
        this.bucket.addObjects(distances.getObjects());
     * Returns the number of objects stored in node's bucket.
     * @return the number of objects stored in node's bucket
    protected int getObjectCount() {
        return bucket.getObjectCount();
    }

David Procházka's avatar
David Procházka committed
    @Override
    protected void addObject(LocalAbstractObject object) throws BucketStorageException {
        bucket.addObject(object);
David Procházka's avatar
David Procházka committed
    @Override
    public List<LocalAbstractObject> getObjects() {
        List<LocalAbstractObject> objects = new ArrayList<>(bucket.getObjectCount());
        bucket
                .getAllObjects()
                .forEachRemaining(objects::add);
David Procházka's avatar
David Procházka committed
    @Override
David Procházka's avatar
David Procházka committed
    @Override
        nodes.add(this);
    }

David Procházka's avatar
David Procházka committed
    @Override
    protected void gatherLeafNodes(List<LeafNode> leafNodes) {
        leafNodes.add(this);