Commit a13a5af6 authored by xnovak8's avatar xnovak8
Browse files

* processor for getting random objects

 * fixed returning of supproted operations
parent 6da33ba1
Loading
Loading
Loading
Loading
+4 −2
Original line number Diff line number Diff line
@@ -32,7 +32,8 @@
                            <goal>copy-dependencies</goal>
                        </goals>
                        <configuration>
                            <outputDirectory>/Users/david/outbox</outputDirectory>
                            <!--<outputDirectory>/Users/david/outbox</outputDirectory>-->
                            <outputDirectory>/home/xnovak8/work/simcloud/jars</outputDirectory>
                            <overWriteReleases>false</overWriteReleases>
                            <overWriteSnapshots>false</overWriteSnapshots>
                            <overWriteIfNewer>true</overWriteIfNewer>
@@ -54,7 +55,8 @@
                                    <type>${project.packaging}</type>
                                </artifactItem>
                            </artifactItems>
                            <outputDirectory>/Users/david/outbox</outputDirectory>
                            <!--<outputDirectory>/Users/david/outbox</outputDirectory>-->
                            <outputDirectory>/home/xnovak8/work/simcloud/jars</outputDirectory>
                            <overWriteReleases>false</overWriteReleases>
                            <overWriteSnapshots>false</overWriteSnapshots>
                            <overWriteIfNewer>true</overWriteIfNewer>
+10 −8
Original line number Diff line number Diff line
@@ -18,7 +18,8 @@ package pppcodes;

import pppcodes.index.PPPCodeInternalCell;
import java.util.Arrays;
import java.util.Collection;
import java.util.Collections;
import java.util.List;
import java.util.Map;
import java.util.Properties;
import java.util.concurrent.atomic.AtomicInteger;
@@ -31,8 +32,6 @@ import messif.operations.AbstractOperation;
import messif.operations.data.BulkInsertOperation;
import messif.operations.data.DeleteOperation;
import messif.operations.data.InsertOperation;
import messif.operations.query.ApproxKNNQueryOperation;
import messif.operations.data.GetCandidateSetOperation;
import mindex.MIndexObjectInitilizer;
import mindex.MIndexProperties;
import mindex.MetricIndex;
@@ -159,15 +158,18 @@ public class PPPCodeIndex extends MetricIndex {
    
    // *******************************   Methods processing operations *************************************** //
    
    /** Pre-created list of supported operations. */
    private final static List<Class<? extends AbstractOperation>> supportedOperations = 
            Collections.unmodifiableList(Arrays.asList(BulkInsertOperation.class, InsertOperation.class, DeleteOperation.class));
    
    @Override
    protected Collection<Class<? extends AbstractOperation>> getSupportedOpList() {
        return Arrays.asList(BulkInsertOperation.class, InsertOperation.class, DeleteOperation.class, 
                ApproxKNNQueryOperation.class, GetCandidateSetOperation.class);
    public List<Class<? extends AbstractOperation>> getSupportedOpList() {
        return PPPCodeIndex.supportedOperations;
    }

    /**
     * Method that creates specific implementation of NavigationProcessor for
     * each type of operation
     * Method that creates specific implementation of NavigationProcessor for  each type of operation - a single
     *  PPP-Code index can process only the insert/delete/update operations.
     * @param operation to be processed
     * @return a specific implementation of NavigationProcessor
     */
+22 −5
Original line number Diff line number Diff line
@@ -32,13 +32,16 @@ import messif.algorithms.impl.MultipleOverlaysAlgorithm;
import messif.operations.AbstractOperation;
import messif.operations.RankingSingleQueryOperation;
import messif.operations.data.BulkInsertOperation;
import messif.operations.data.DeleteOperation;
import messif.operations.data.InsertOperation;
import messif.operations.query.ApproxKNNQueryOperation;
import messif.operations.data.GetCandidateSetOperation;
import messif.operations.query.GetRandomObjectsQueryOperation;
import pppcodes.PPPCodeIndex;
import pppcodes.ids.LocatorStringIntConvertor;
import pppcodes.processors.ApproxNavProcessorCandSet;
import pppcodes.processors.ApproxNavProcessorNorefine;
import pppcodes.processors.GetRandomNoDataObjectsNavigationProcessor;

/**
 * This is an algorithm for PPP Codes that internally uses several standard M-Index algorithms.
@@ -88,17 +91,24 @@ public class PPPCodeAlgorithm extends MultipleOverlaysAlgorithm {
    
    // **********************************       Overriding methods      ******************************* //
    
    /** Pre-created list of supported operations. */
    private final static List<Class<? extends AbstractOperation>> supportedOperations = 
            Collections.unmodifiableList(Arrays.asList(BulkInsertOperation.class, InsertOperation.class, DeleteOperation.class, 
                ApproxKNNQueryOperation.class, GetCandidateSetOperation.class, GetRandomObjectsQueryOperation.class));

    @Override
    public <E extends AbstractOperation> List<Class<? extends E>> getSupportedOperations(Class<? extends E> subclassToSearch) {
        if (algorithms.size() > 0) {
            return algorithms.get(0).getSupportedOperations(subclassToSearch);
    public List<Class<? extends AbstractOperation>> getSupportedOperations() {
        return PPPCodeAlgorithm.supportedOperations;
    }        
        return super.getSupportedOperations(subclassToSearch);
    
    @Override
    public <E extends AbstractOperation> List<Class<? extends E>> getSupportedOperations(Class<? extends E> subclassToSearch) {
        return Algorithm.getOperationSubClasses(getSupportedOperations(), subclassToSearch);
    }
    
    @Override
    public NavigationProcessor<? extends AbstractOperation> getNavigationProcessor(AbstractOperation operation) {
        if ((operation instanceof InsertOperation) || (operation instanceof BulkInsertOperation)) {
        if ((operation instanceof InsertOperation) || (operation instanceof BulkInsertOperation) || (operation instanceof DeleteOperation)) {
            return super.getNavigationProcessor(operation);
        }
        if (operation instanceof ApproxKNNQueryOperation || operation instanceof GetCandidateSetOperation) {
@@ -117,6 +127,13 @@ public class PPPCodeAlgorithm extends MultipleOverlaysAlgorithm {
                return new ApproxNavProcessorCandSet((GetCandidateSetOperation) operation, indexesToRunOn, locatorConvertor);
            }
        }
        if (operation instanceof GetRandomObjectsQueryOperation) {
            if (algorithms.isEmpty()) {
                return null;
            }
            return new GetRandomNoDataObjectsNavigationProcessor((GetRandomObjectsQueryOperation) operation, 
                    algorithms.get(0).getmIndex().getVoronoiCellTree(), locatorConvertor);
        }
        return null;
    }
    
+8 −0
Original line number Diff line number Diff line
@@ -16,9 +16,12 @@
 */
package pppcodes.algorithms;

import java.util.ArrayList;
import java.util.List;
import java.util.Properties;
import messif.algorithms.Algorithm;
import messif.algorithms.AlgorithmMethodException;
import messif.operations.AbstractOperation;
import mindex.algorithms.MIndexAlgorithm;
import pppcodes.PPPCodeIndex;

@@ -68,4 +71,9 @@ public class PPPCodeSingleAlgorithm extends MIndexAlgorithm {
        return (PPPCodeIndex) mIndex;
    }
    
    @Override
    public List<Class<? extends AbstractOperation>> getSupportedOperations() {
        return mIndex.getSupportedOpList();
    }    
    
}
+0 −2
Original line number Diff line number Diff line
@@ -22,8 +22,6 @@ import java.nio.BufferOverflowException;
import java.nio.BufferUnderflowException;
import java.util.Arrays;
import messif.objects.LocalAbstractObject;
import mindex.MIndexPP;
import mindex.MetricIndexes;

/**
 * This object represents a single pivot permutation prefix of an object according to
Loading