Loading pom.xml +4 −2 Original line number Diff line number Diff line Loading @@ -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> Loading @@ -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> Loading src/main/java/pppcodes/PPPCodeIndex.java +10 −8 Original line number Diff line number Diff line Loading @@ -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; Loading @@ -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; Loading Loading @@ -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 */ Loading src/main/java/pppcodes/algorithms/PPPCodeAlgorithm.java +22 −5 Original line number Diff line number Diff line Loading @@ -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. Loading Loading @@ -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) { Loading @@ -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; } Loading src/main/java/pppcodes/algorithms/PPPCodeSingleAlgorithm.java +8 −0 Original line number Diff line number Diff line Loading @@ -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; Loading Loading @@ -68,4 +71,9 @@ public class PPPCodeSingleAlgorithm extends MIndexAlgorithm { return (PPPCodeIndex) mIndex; } @Override public List<Class<? extends AbstractOperation>> getSupportedOperations() { return mIndex.getSupportedOpList(); } } src/main/java/pppcodes/index/PPPCodeObject.java +0 −2 Original line number Diff line number Diff line Loading @@ -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 Loading
pom.xml +4 −2 Original line number Diff line number Diff line Loading @@ -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> Loading @@ -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> Loading
src/main/java/pppcodes/PPPCodeIndex.java +10 −8 Original line number Diff line number Diff line Loading @@ -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; Loading @@ -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; Loading Loading @@ -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 */ Loading
src/main/java/pppcodes/algorithms/PPPCodeAlgorithm.java +22 −5 Original line number Diff line number Diff line Loading @@ -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. Loading Loading @@ -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) { Loading @@ -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; } Loading
src/main/java/pppcodes/algorithms/PPPCodeSingleAlgorithm.java +8 −0 Original line number Diff line number Diff line Loading @@ -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; Loading Loading @@ -68,4 +71,9 @@ public class PPPCodeSingleAlgorithm extends MIndexAlgorithm { return (PPPCodeIndex) mIndex; } @Override public List<Class<? extends AbstractOperation>> getSupportedOperations() { return mIndex.getSupportedOpList(); } }
src/main/java/pppcodes/index/PPPCodeObject.java +0 −2 Original line number Diff line number Diff line Loading @@ -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