diff options
Diffstat (limited to 'elki/src/main/java/de/lmu/ifi/dbs/elki/database')
143 files changed, 433 insertions, 156 deletions
diff --git a/elki/src/main/java/de/lmu/ifi/dbs/elki/database/AbstractDatabase.java b/elki/src/main/java/de/lmu/ifi/dbs/elki/database/AbstractDatabase.java index 0c038369..b9424041 100644 --- a/elki/src/main/java/de/lmu/ifi/dbs/elki/database/AbstractDatabase.java +++ b/elki/src/main/java/de/lmu/ifi/dbs/elki/database/AbstractDatabase.java @@ -56,6 +56,7 @@ import de.lmu.ifi.dbs.elki.utilities.optionhandling.OptionID; * <tt>-enableDebug de.lmu.ifi.dbs.elki.database=FINEST</tt> * * @author Erich Schubert + * @since 0.4.0 * * @apiviz.composedOf DatabaseEventManager * @apiviz.has IndexFactory diff --git a/elki/src/main/java/de/lmu/ifi/dbs/elki/database/Database.java b/elki/src/main/java/de/lmu/ifi/dbs/elki/database/Database.java index d553da17..4a008919 100644 --- a/elki/src/main/java/de/lmu/ifi/dbs/elki/database/Database.java +++ b/elki/src/main/java/de/lmu/ifi/dbs/elki/database/Database.java @@ -47,6 +47,7 @@ import de.lmu.ifi.dbs.elki.result.HierarchicalResult; * parameters for dynamic instantiation. * * @author Elke Achtert + * @since 0.2 * * @apiviz.landmark * @apiviz.has DistanceQuery oneway - - provides diff --git a/elki/src/main/java/de/lmu/ifi/dbs/elki/database/DatabaseEventManager.java b/elki/src/main/java/de/lmu/ifi/dbs/elki/database/DatabaseEventManager.java index 3ddba18e..5251366c 100644 --- a/elki/src/main/java/de/lmu/ifi/dbs/elki/database/DatabaseEventManager.java +++ b/elki/src/main/java/de/lmu/ifi/dbs/elki/database/DatabaseEventManager.java @@ -38,6 +38,7 @@ import de.lmu.ifi.dbs.elki.result.ResultListener; * Class to manage database events such as insertions and removals. * * @author Elke Achtert + * @since 0.4.0 * @apiviz.has ResultListener */ public class DatabaseEventManager { diff --git a/elki/src/main/java/de/lmu/ifi/dbs/elki/database/HashmapDatabase.java b/elki/src/main/java/de/lmu/ifi/dbs/elki/database/HashmapDatabase.java index 90fd55ea..56ec0706 100644 --- a/elki/src/main/java/de/lmu/ifi/dbs/elki/database/HashmapDatabase.java +++ b/elki/src/main/java/de/lmu/ifi/dbs/elki/database/HashmapDatabase.java @@ -60,6 +60,7 @@ import de.lmu.ifi.dbs.elki.utilities.optionhandling.parameters.ObjectParameter; * * @author Arthur Zimek * @author Erich Schubert + * @since 0.2 * * @apiviz.landmark * @apiviz.composedOf HashSetModifiableDBIDs diff --git a/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ProxyDatabase.java b/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ProxyDatabase.java index eb8dd05b..5c635f96 100644 --- a/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ProxyDatabase.java +++ b/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ProxyDatabase.java @@ -35,6 +35,7 @@ import de.lmu.ifi.dbs.elki.logging.Logging; * A proxy database to use e.g. for projections and partitions. * * @author Erich Schubert + * @since 0.4.0 */ public class ProxyDatabase extends AbstractDatabase { /** diff --git a/elki/src/main/java/de/lmu/ifi/dbs/elki/database/QueryUtil.java b/elki/src/main/java/de/lmu/ifi/dbs/elki/database/QueryUtil.java index 26262575..a3bfd071 100644 --- a/elki/src/main/java/de/lmu/ifi/dbs/elki/database/QueryUtil.java +++ b/elki/src/main/java/de/lmu/ifi/dbs/elki/database/QueryUtil.java @@ -48,6 +48,7 @@ import de.lmu.ifi.dbs.elki.distance.similarityfunction.SimilarityFunction; * Static class with utilities related to querying a database. * * @author Erich Schubert + * @since 0.4.0 * * @apiviz.landmark * diff --git a/elki/src/main/java/de/lmu/ifi/dbs/elki/database/StaticArrayDatabase.java b/elki/src/main/java/de/lmu/ifi/dbs/elki/database/StaticArrayDatabase.java index da13c5fa..cc889e6f 100644 --- a/elki/src/main/java/de/lmu/ifi/dbs/elki/database/StaticArrayDatabase.java +++ b/elki/src/main/java/de/lmu/ifi/dbs/elki/database/StaticArrayDatabase.java @@ -55,6 +55,7 @@ import de.lmu.ifi.dbs.elki.utilities.optionhandling.parameters.ObjectParameter; * * @author Arthur Zimek * @author Erich Schubert + * @since 0.2 * * @apiviz.landmark * @apiviz.composedOf ArrayStaticDBIDs diff --git a/elki/src/main/java/de/lmu/ifi/dbs/elki/database/UpdatableDatabase.java b/elki/src/main/java/de/lmu/ifi/dbs/elki/database/UpdatableDatabase.java index 45f7ad78..48333aab 100644 --- a/elki/src/main/java/de/lmu/ifi/dbs/elki/database/UpdatableDatabase.java +++ b/elki/src/main/java/de/lmu/ifi/dbs/elki/database/UpdatableDatabase.java @@ -34,6 +34,7 @@ import de.lmu.ifi.dbs.elki.utilities.exceptions.UnableToComplyException; * that cannot be done in dynamic databases. * * @author Erich Schubert + * @since 0.4.0 */ public interface UpdatableDatabase extends Database { /** diff --git a/elki/src/main/java/de/lmu/ifi/dbs/elki/database/datastore/DBIDDataStore.java b/elki/src/main/java/de/lmu/ifi/dbs/elki/database/datastore/DBIDDataStore.java index b79be1f4..8d9d08c8 100644 --- a/elki/src/main/java/de/lmu/ifi/dbs/elki/database/datastore/DBIDDataStore.java +++ b/elki/src/main/java/de/lmu/ifi/dbs/elki/database/datastore/DBIDDataStore.java @@ -31,6 +31,7 @@ import de.lmu.ifi.dbs.elki.database.ids.DBIDVar; * DBID-valued data store (avoids boxing/unboxing). * * @author Erich Schubert + * @since 0.4.0 */ public interface DBIDDataStore extends DataStore<DBID> { /** @@ -40,7 +41,7 @@ public interface DBIDDataStore extends DataStore<DBID> { */ @Override @Deprecated - public DBID get(DBIDRef id); + DBID get(DBIDRef id); /** * Retrieves an object from the storage. @@ -49,5 +50,5 @@ public interface DBIDDataStore extends DataStore<DBID> { * @param var Variable to update. * @return {@code var} */ - public DBIDVar assignVar(DBIDRef id, DBIDVar var); + DBIDVar assignVar(DBIDRef id, DBIDVar var); } diff --git a/elki/src/main/java/de/lmu/ifi/dbs/elki/database/datastore/DataStore.java b/elki/src/main/java/de/lmu/ifi/dbs/elki/database/datastore/DataStore.java index 2c306486..e78fc591 100644 --- a/elki/src/main/java/de/lmu/ifi/dbs/elki/database/datastore/DataStore.java +++ b/elki/src/main/java/de/lmu/ifi/dbs/elki/database/datastore/DataStore.java @@ -31,6 +31,7 @@ import de.lmu.ifi.dbs.elki.result.Result; * Generic storage interface for objects indexed by {@link DBID}. * * @author Erich Schubert + * @since 0.4.0 * * @param <T> Data type */ @@ -41,5 +42,5 @@ public interface DataStore<T> extends Result { * @param id Database ID. * @return Object or {@code null} */ - public T get(DBIDRef id); + T get(DBIDRef id); }
\ No newline at end of file diff --git a/elki/src/main/java/de/lmu/ifi/dbs/elki/database/datastore/DataStoreEvent.java b/elki/src/main/java/de/lmu/ifi/dbs/elki/database/datastore/DataStoreEvent.java index 294a3a19..79afd440 100644 --- a/elki/src/main/java/de/lmu/ifi/dbs/elki/database/datastore/DataStoreEvent.java +++ b/elki/src/main/java/de/lmu/ifi/dbs/elki/database/datastore/DataStoreEvent.java @@ -31,6 +31,7 @@ import de.lmu.ifi.dbs.elki.database.ids.DBIDs; * {@link DataStoreListener} of the change. * * @author Erich Schubert + * @since 0.4.0 * * @see DataStore * @see DataStoreListener diff --git a/elki/src/main/java/de/lmu/ifi/dbs/elki/database/datastore/DataStoreFactory.java b/elki/src/main/java/de/lmu/ifi/dbs/elki/database/datastore/DataStoreFactory.java index 63a12693..17c3221b 100644 --- a/elki/src/main/java/de/lmu/ifi/dbs/elki/database/datastore/DataStoreFactory.java +++ b/elki/src/main/java/de/lmu/ifi/dbs/elki/database/datastore/DataStoreFactory.java @@ -32,6 +32,7 @@ import de.lmu.ifi.dbs.elki.database.ids.DBIDs; * Use {@link #FACTORY} for a static instance. * * @author Erich Schubert + * @since 0.4.0 * * @apiviz.stereotype factory,interface * @apiviz.has WritableDataStore oneway - - «create» diff --git a/elki/src/main/java/de/lmu/ifi/dbs/elki/database/datastore/DataStoreIDMap.java b/elki/src/main/java/de/lmu/ifi/dbs/elki/database/datastore/DataStoreIDMap.java index 70e0a3f6..c9501dd6 100644 --- a/elki/src/main/java/de/lmu/ifi/dbs/elki/database/datastore/DataStoreIDMap.java +++ b/elki/src/main/java/de/lmu/ifi/dbs/elki/database/datastore/DataStoreIDMap.java @@ -29,6 +29,7 @@ import de.lmu.ifi.dbs.elki.database.ids.DBIDRef; * Interface to map DBIDs to integer record ids for use in storage. * * @author Erich Schubert + * @since 0.4.0 */ public interface DataStoreIDMap { /** diff --git a/elki/src/main/java/de/lmu/ifi/dbs/elki/database/datastore/DataStoreListener.java b/elki/src/main/java/de/lmu/ifi/dbs/elki/database/datastore/DataStoreListener.java index 60a1bc16..edf37bf9 100644 --- a/elki/src/main/java/de/lmu/ifi/dbs/elki/database/datastore/DataStoreListener.java +++ b/elki/src/main/java/de/lmu/ifi/dbs/elki/database/datastore/DataStoreListener.java @@ -28,6 +28,7 @@ package de.lmu.ifi.dbs.elki.database.datastore; * {@link DataStore}. * * @author Elke Achtert + * @since 0.4.0 * * @apiviz.uses DataStoreEvent oneway - - listens * @apiviz.excludeSubtypes diff --git a/elki/src/main/java/de/lmu/ifi/dbs/elki/database/datastore/DataStoreUtil.java b/elki/src/main/java/de/lmu/ifi/dbs/elki/database/datastore/DataStoreUtil.java index 5602e0d7..7976759b 100644 --- a/elki/src/main/java/de/lmu/ifi/dbs/elki/database/datastore/DataStoreUtil.java +++ b/elki/src/main/java/de/lmu/ifi/dbs/elki/database/datastore/DataStoreUtil.java @@ -26,14 +26,16 @@ package de.lmu.ifi.dbs.elki.database.datastore; import java.util.Comparator; import de.lmu.ifi.dbs.elki.database.ids.DBIDRef; +import de.lmu.ifi.dbs.elki.database.ids.DBIDUtil; import de.lmu.ifi.dbs.elki.database.ids.DBIDs; /** * Storage utility class. Mostly a shorthand for * {@link DataStoreFactory#FACTORY}. - * + * * @author Erich Schubert - * + * @since 0.4.0 + * * @apiviz.landmark * @apiviz.composedOf de.lmu.ifi.dbs.elki.database.datastore.DataStoreFactory */ @@ -41,7 +43,7 @@ public final class DataStoreUtil { /** * Make a new storage, to associate the given ids with an object of class * dataclass. - * + * * @param <T> stored data type * @param ids DBIDs to store data for * @param hints Hints for the storage manager @@ -55,7 +57,7 @@ public final class DataStoreUtil { /** * Make a new storage, to associate the given ids with an object of class * dataclass. - * + * * @param ids DBIDs to store data for * @param hints Hints for the storage manager * @return new data store @@ -67,7 +69,7 @@ public final class DataStoreUtil { /** * Make a new storage, to associate the given ids with an object of class * dataclass. - * + * * @param ids DBIDs to store data for * @param hints Hints for the storage manager * @return new data store @@ -79,7 +81,7 @@ public final class DataStoreUtil { /** * Make a new storage, to associate the given ids with an object of class * dataclass. - * + * * @param ids DBIDs to store data for * @param hints Hints for the storage manager * @param def Default value @@ -92,7 +94,7 @@ public final class DataStoreUtil { /** * Make a new storage, to associate the given ids with an object of class * dataclass. - * + * * @param ids DBIDs to store data for * @param hints Hints for the storage manager * @return new data store @@ -104,7 +106,7 @@ public final class DataStoreUtil { /** * Make a new storage, to associate the given ids with an object of class * dataclass. - * + * * @param ids DBIDs to store data for * @param hints Hints for the storage manager * @param def Default value @@ -117,7 +119,7 @@ public final class DataStoreUtil { /** * Make a new record storage, to associate the given ids with an object of * class dataclass. - * + * * @param ids DBIDs to store data for * @param hints Hints for the storage manager * @param dataclasses classes to store @@ -129,9 +131,9 @@ public final class DataStoreUtil { /** * Sort objects by a double relation - * + * * @author Erich Schubert - * + * * @apiviz.exclude */ public static class AscendingByDoubleDataStore implements Comparator<DBIDRef> { @@ -139,7 +141,7 @@ public final class DataStoreUtil { * Scores to use for sorting. */ private final DoubleDataStore scores; - + /** * Constructor. * @@ -158,9 +160,9 @@ public final class DataStoreUtil { /** * Sort objects by a double relation - * + * * @author Erich Schubert - * + * * @apiviz.exclude */ public static class DescendingByDoubleDataStore implements Comparator<DBIDRef> { @@ -168,7 +170,7 @@ public final class DataStoreUtil { * Scores to use for sorting. */ private final DoubleDataStore scores; - + /** * Constructor. * @@ -184,4 +186,64 @@ public final class DataStoreUtil { return Double.compare(scores.doubleValue(id2), scores.doubleValue(id1)); } } + + /** + * Sort objects by a double relation + * + * @author Erich Schubert + * + * @apiviz.exclude + */ + public static class AscendingByDoubleDataStoreAndId implements Comparator<DBIDRef> { + /** + * Scores to use for sorting. + */ + private final DoubleDataStore scores; + + /** + * Constructor. + * + * @param scores Scores for sorting + */ + public AscendingByDoubleDataStoreAndId(DoubleDataStore scores) { + super(); + this.scores = scores; + } + + @Override + public int compare(DBIDRef id1, DBIDRef id2) { + int c = Double.compare(scores.doubleValue(id1), scores.doubleValue(id2)); + return c != 0 ? c : DBIDUtil.compare(id1, id2); + } + } + + /** + * Sort objects by a double relation + * + * @author Erich Schubert + * + * @apiviz.exclude + */ + public static class DescendingByDoubleDataStoreAndId implements Comparator<DBIDRef> { + /** + * Scores to use for sorting. + */ + private final DoubleDataStore scores; + + /** + * Constructor. + * + * @param scores Scores for sorting + */ + public DescendingByDoubleDataStoreAndId(DoubleDataStore scores) { + super(); + this.scores = scores; + } + + @Override + public int compare(DBIDRef id1, DBIDRef id2) { + int c = Double.compare(scores.doubleValue(id2), scores.doubleValue(id1)); + return c != 0 ? c : DBIDUtil.compare(id1, id2); + } + } } diff --git a/elki/src/main/java/de/lmu/ifi/dbs/elki/database/datastore/DoubleDataStore.java b/elki/src/main/java/de/lmu/ifi/dbs/elki/database/datastore/DoubleDataStore.java index 8cf6cdf1..8f52f996 100644 --- a/elki/src/main/java/de/lmu/ifi/dbs/elki/database/datastore/DoubleDataStore.java +++ b/elki/src/main/java/de/lmu/ifi/dbs/elki/database/datastore/DoubleDataStore.java @@ -29,6 +29,7 @@ import de.lmu.ifi.dbs.elki.database.ids.DBIDRef; * Double-valued data store (avoids boxing/unboxing). * * @author Erich Schubert + * @since 0.4.0 */ public interface DoubleDataStore extends DataStore<Double> { /** @@ -38,7 +39,7 @@ public interface DoubleDataStore extends DataStore<Double> { */ @Override @Deprecated - public Double get(DBIDRef id); + Double get(DBIDRef id); /** * Retrieves an object from the storage. @@ -46,5 +47,5 @@ public interface DoubleDataStore extends DataStore<Double> { * @param id Database ID. * @return Double value */ - public double doubleValue(DBIDRef id); + double doubleValue(DBIDRef id); }
\ No newline at end of file diff --git a/elki/src/main/java/de/lmu/ifi/dbs/elki/database/datastore/IntegerDataStore.java b/elki/src/main/java/de/lmu/ifi/dbs/elki/database/datastore/IntegerDataStore.java index 986f4fc8..7747bcb3 100644 --- a/elki/src/main/java/de/lmu/ifi/dbs/elki/database/datastore/IntegerDataStore.java +++ b/elki/src/main/java/de/lmu/ifi/dbs/elki/database/datastore/IntegerDataStore.java @@ -29,6 +29,7 @@ import de.lmu.ifi.dbs.elki.database.ids.DBIDRef; * Integer-valued data store (avoids boxing/unboxing). * * @author Erich Schubert + * @since 0.4.0 */ public interface IntegerDataStore extends DataStore<Integer> { /** @@ -38,7 +39,7 @@ public interface IntegerDataStore extends DataStore<Integer> { */ @Override @Deprecated - public Integer get(DBIDRef id); + Integer get(DBIDRef id); /** * Retrieves a value from the storage. @@ -46,5 +47,5 @@ public interface IntegerDataStore extends DataStore<Integer> { * @param id Database ID. * @return Double value */ - public int intValue(DBIDRef id); + int intValue(DBIDRef id); }
\ No newline at end of file diff --git a/elki/src/main/java/de/lmu/ifi/dbs/elki/database/datastore/RecordStore.java b/elki/src/main/java/de/lmu/ifi/dbs/elki/database/datastore/RecordStore.java index b98f4d13..be06aa13 100644 --- a/elki/src/main/java/de/lmu/ifi/dbs/elki/database/datastore/RecordStore.java +++ b/elki/src/main/java/de/lmu/ifi/dbs/elki/database/datastore/RecordStore.java @@ -28,6 +28,7 @@ package de.lmu.ifi.dbs.elki.database.datastore; * Represents a storage which stores multiple values per object in a record fashion. * * @author Erich Schubert + * @since 0.4.0 * * @apiviz.has de.lmu.ifi.dbs.elki.database.datastore.DataStore oneway - - projectsTo */ @@ -40,5 +41,5 @@ public interface RecordStore { * @param datatype data class * @return writable storage */ - public <T> DataStore<T> getStorage(int col, Class<? super T> datatype); + <T> DataStore<T> getStorage(int col, Class<? super T> datatype); } diff --git a/elki/src/main/java/de/lmu/ifi/dbs/elki/database/datastore/WritableDBIDDataStore.java b/elki/src/main/java/de/lmu/ifi/dbs/elki/database/datastore/WritableDBIDDataStore.java index 38fd8adb..df0001ec 100644 --- a/elki/src/main/java/de/lmu/ifi/dbs/elki/database/datastore/WritableDBIDDataStore.java +++ b/elki/src/main/java/de/lmu/ifi/dbs/elki/database/datastore/WritableDBIDDataStore.java @@ -30,6 +30,7 @@ import de.lmu.ifi.dbs.elki.database.ids.DBIDRef; * Data store specialized for doubles. Avoids boxing/unboxing. * * @author Erich Schubert + * @since 0.4.0 */ public interface WritableDBIDDataStore extends DBIDDataStore, WritableDataStore<DBID> { /** @@ -39,7 +40,7 @@ public interface WritableDBIDDataStore extends DBIDDataStore, WritableDataStore< */ @Override @Deprecated - public DBID put(DBIDRef id, DBID value); + DBID put(DBIDRef id, DBID value); /** * Associates the specified value with the specified id in this storage. If @@ -49,7 +50,7 @@ public interface WritableDBIDDataStore extends DBIDDataStore, WritableDataStore< * @param id Database ID. * @param value Value to store. */ - public void putDBID(DBIDRef id, DBIDRef value); + void putDBID(DBIDRef id, DBIDRef value); /** * Associates the specified value with the specified id in this storage. If @@ -59,5 +60,5 @@ public interface WritableDBIDDataStore extends DBIDDataStore, WritableDataStore< * @param id Database ID. * @param value Value to store. */ - public void put(DBIDRef id, DBIDRef value); + void put(DBIDRef id, DBIDRef value); }
\ No newline at end of file diff --git a/elki/src/main/java/de/lmu/ifi/dbs/elki/database/datastore/WritableDataStore.java b/elki/src/main/java/de/lmu/ifi/dbs/elki/database/datastore/WritableDataStore.java index 8baf622e..33f213b8 100644 --- a/elki/src/main/java/de/lmu/ifi/dbs/elki/database/datastore/WritableDataStore.java +++ b/elki/src/main/java/de/lmu/ifi/dbs/elki/database/datastore/WritableDataStore.java @@ -29,6 +29,7 @@ import de.lmu.ifi.dbs.elki.database.ids.DBIDRef; * Writable data store. * * @author Erich Schubert + * @since 0.4.0 * * @apiviz.landmark * @@ -44,13 +45,13 @@ public interface WritableDataStore<T> extends DataStore<T> { * @param value Value to store. * @return previous value */ - public T put(DBIDRef id, T value); + T put(DBIDRef id, T value); /** * Deallocate the storage, freeing the memory and notifies the registered * listeners. */ - public void destroy(); + void destroy(); /** * Delete the contents for a particular ID and notifies the registered @@ -58,5 +59,10 @@ public interface WritableDataStore<T> extends DataStore<T> { * * @param id Database ID. */ - public void delete(DBIDRef id); + void delete(DBIDRef id); + + /** + * Clear the storage (resetting it to the default value). + */ + void clear(); } diff --git a/elki/src/main/java/de/lmu/ifi/dbs/elki/database/datastore/WritableDoubleDataStore.java b/elki/src/main/java/de/lmu/ifi/dbs/elki/database/datastore/WritableDoubleDataStore.java index 8a3f9e8a..ac7fa2f2 100644 --- a/elki/src/main/java/de/lmu/ifi/dbs/elki/database/datastore/WritableDoubleDataStore.java +++ b/elki/src/main/java/de/lmu/ifi/dbs/elki/database/datastore/WritableDoubleDataStore.java @@ -29,6 +29,7 @@ import de.lmu.ifi.dbs.elki.database.ids.DBIDRef; * Data store specialized for doubles. Avoids boxing/unboxing. * * @author Erich Schubert + * @since 0.4.0 */ public interface WritableDoubleDataStore extends DoubleDataStore, WritableDataStore<Double> { /** @@ -38,7 +39,7 @@ public interface WritableDoubleDataStore extends DoubleDataStore, WritableDataSt */ @Override @Deprecated - public Double put(DBIDRef id, Double value); + Double put(DBIDRef id, Double value); /** * Associates the specified value with the specified id in this storage. If @@ -49,7 +50,7 @@ public interface WritableDoubleDataStore extends DoubleDataStore, WritableDataSt * @param value Value to store. * @return previous value */ - public double putDouble(DBIDRef id, double value); + double putDouble(DBIDRef id, double value); /** * Associates the specified value with the specified id in this storage. If @@ -60,8 +61,7 @@ public interface WritableDoubleDataStore extends DoubleDataStore, WritableDataSt * @param value Value to store. * @return previous value */ - public double put(DBIDRef id, double value); - + double put(DBIDRef id, double value); /** * Increment the specified value with the specified id in this storage. @@ -69,10 +69,5 @@ public interface WritableDoubleDataStore extends DoubleDataStore, WritableDataSt * @param id Database ID. * @param value Value to add to the previous value. */ - public void increment(DBIDRef id, double value); - - /** - * Reinitialize (reset to default value). - */ - public void clear(); + void increment(DBIDRef id, double value); }
\ No newline at end of file diff --git a/elki/src/main/java/de/lmu/ifi/dbs/elki/database/datastore/WritableIntegerDataStore.java b/elki/src/main/java/de/lmu/ifi/dbs/elki/database/datastore/WritableIntegerDataStore.java index 0303f45e..09bbc77f 100644 --- a/elki/src/main/java/de/lmu/ifi/dbs/elki/database/datastore/WritableIntegerDataStore.java +++ b/elki/src/main/java/de/lmu/ifi/dbs/elki/database/datastore/WritableIntegerDataStore.java @@ -29,6 +29,7 @@ import de.lmu.ifi.dbs.elki.database.ids.DBIDRef; * Data store specialized for doubles. Avoids boxing/unboxing. * * @author Erich Schubert + * @since 0.4.0 */ public interface WritableIntegerDataStore extends IntegerDataStore, WritableDataStore<Integer> { /** @@ -38,7 +39,7 @@ public interface WritableIntegerDataStore extends IntegerDataStore, WritableData */ @Override @Deprecated - public Integer put(DBIDRef id, Integer value); + Integer put(DBIDRef id, Integer value); /** * Associates the specified value with the specified id in this storage. If @@ -49,7 +50,7 @@ public interface WritableIntegerDataStore extends IntegerDataStore, WritableData * @param value Value to store. * @return previous value */ - public int putInt(DBIDRef id, int value); + int putInt(DBIDRef id, int value); /** * Associates the specified value with the specified id in this storage. If @@ -60,7 +61,7 @@ public interface WritableIntegerDataStore extends IntegerDataStore, WritableData * @param value Value to store. * @return previous value */ - public int put(DBIDRef id, int value); + int put(DBIDRef id, int value); /** * Increment a value. @@ -68,5 +69,5 @@ public interface WritableIntegerDataStore extends IntegerDataStore, WritableData * @param id Database ID. * @param adjust Value to add to the previous value. */ - public void increment(DBIDRef id, int adjust); + void increment(DBIDRef id, int adjust); }
\ No newline at end of file diff --git a/elki/src/main/java/de/lmu/ifi/dbs/elki/database/datastore/WritableRecordStore.java b/elki/src/main/java/de/lmu/ifi/dbs/elki/database/datastore/WritableRecordStore.java index 73106b28..81148c63 100644 --- a/elki/src/main/java/de/lmu/ifi/dbs/elki/database/datastore/WritableRecordStore.java +++ b/elki/src/main/java/de/lmu/ifi/dbs/elki/database/datastore/WritableRecordStore.java @@ -29,6 +29,7 @@ import de.lmu.ifi.dbs.elki.database.ids.DBIDRef; * Represents a storage which stores multiple values per object in a record fashion. * * @author Erich Schubert + * @since 0.4.0 * * @apiviz.landmark * @@ -44,7 +45,7 @@ public interface WritableRecordStore extends RecordStore { * @return writable storage */ @Override - public <T> WritableDataStore<T> getStorage(int col, Class<? super T> datatype); + <T> WritableDataStore<T> getStorage(int col, Class<? super T> datatype); /** * Remove an object from the store, all columns. @@ -52,5 +53,5 @@ public interface WritableRecordStore extends RecordStore { * @param id object ID to remove * @return success code */ - public boolean remove(DBIDRef id); + boolean remove(DBIDRef id); } diff --git a/elki/src/main/java/de/lmu/ifi/dbs/elki/database/datastore/memory/ArrayDBIDStore.java b/elki/src/main/java/de/lmu/ifi/dbs/elki/database/datastore/memory/ArrayDBIDStore.java index 2c73ada4..f557f529 100644 --- a/elki/src/main/java/de/lmu/ifi/dbs/elki/database/datastore/memory/ArrayDBIDStore.java +++ b/elki/src/main/java/de/lmu/ifi/dbs/elki/database/datastore/memory/ArrayDBIDStore.java @@ -35,6 +35,7 @@ import de.lmu.ifi.dbs.elki.database.ids.DBIDVar; * A class to answer representation queries using the stored Array. * * @author Erich Schubert + * @since 0.4.0 * * @apiviz.composedOf de.lmu.ifi.dbs.elki.database.datastore.DataStoreIDMap */ @@ -60,7 +61,7 @@ public class ArrayDBIDStore implements WritableDBIDDataStore { this.data = DBIDUtil.newArray(size); // Initialize DBIDRef inv = DBIDUtil.invalid(); - for (int i = 0; i < size; i++) { + for(int i = 0; i < size; i++) { data.add(inv); } this.idmap = idmap; @@ -106,8 +107,19 @@ public class ArrayDBIDStore implements WritableDBIDDataStore { } @Override + public void clear() { + // Re-initialize + DBIDRef inv = DBIDUtil.invalid(); + final int size = data.size(); + data.clear(); + for(int i = 0; i < size; i++) { + data.add(inv); + } + } + + @Override public void delete(DBIDRef id) { - throw new UnsupportedOperationException("Can't delete from a static array storage."); + put(id, DBIDUtil.invalid()); } @Override diff --git a/elki/src/main/java/de/lmu/ifi/dbs/elki/database/datastore/memory/ArrayDoubleStore.java b/elki/src/main/java/de/lmu/ifi/dbs/elki/database/datastore/memory/ArrayDoubleStore.java index d1a8672e..5f6d687d 100644 --- a/elki/src/main/java/de/lmu/ifi/dbs/elki/database/datastore/memory/ArrayDoubleStore.java +++ b/elki/src/main/java/de/lmu/ifi/dbs/elki/database/datastore/memory/ArrayDoubleStore.java @@ -33,6 +33,7 @@ import de.lmu.ifi.dbs.elki.database.ids.DBIDRef; * A class to answer representation queries using the stored Array. * * @author Erich Schubert + * @since 0.4.0 * * @apiviz.composedOf de.lmu.ifi.dbs.elki.database.datastore.DataStoreIDMap */ diff --git a/elki/src/main/java/de/lmu/ifi/dbs/elki/database/datastore/memory/ArrayIntegerStore.java b/elki/src/main/java/de/lmu/ifi/dbs/elki/database/datastore/memory/ArrayIntegerStore.java index 6b6ac14a..b4a4d7fc 100644 --- a/elki/src/main/java/de/lmu/ifi/dbs/elki/database/datastore/memory/ArrayIntegerStore.java +++ b/elki/src/main/java/de/lmu/ifi/dbs/elki/database/datastore/memory/ArrayIntegerStore.java @@ -33,6 +33,7 @@ import de.lmu.ifi.dbs.elki.database.ids.DBIDRef; * A class to answer representation queries using the stored Array. * * @author Erich Schubert + * @since 0.4.0 * * @apiviz.composedOf de.lmu.ifi.dbs.elki.database.datastore.DataStoreIDMap */ @@ -48,6 +49,11 @@ public class ArrayIntegerStore implements WritableIntegerDataStore { private DataStoreIDMap idmap; /** + * Default value (for {@link #clear()}). + */ + private int def; + + /** * Constructor. * * @param size Size @@ -67,6 +73,7 @@ public class ArrayIntegerStore implements WritableIntegerDataStore { public ArrayIntegerStore(int size, DataStoreIDMap idmap, int def) { super(); this.data = new int[size]; + this.def = def; if(def != 0) { Arrays.fill(this.data, def); } @@ -123,7 +130,12 @@ public class ArrayIntegerStore implements WritableIntegerDataStore { @Override public void delete(DBIDRef id) { - throw new UnsupportedOperationException("Can't delete from a static array storage."); + put(id, def); + } + + @Override + public void clear() { + Arrays.fill(data, def); } @Override diff --git a/elki/src/main/java/de/lmu/ifi/dbs/elki/database/datastore/memory/ArrayRecordStore.java b/elki/src/main/java/de/lmu/ifi/dbs/elki/database/datastore/memory/ArrayRecordStore.java index 62f07448..deb949ff 100644 --- a/elki/src/main/java/de/lmu/ifi/dbs/elki/database/datastore/memory/ArrayRecordStore.java +++ b/elki/src/main/java/de/lmu/ifi/dbs/elki/database/datastore/memory/ArrayRecordStore.java @@ -32,6 +32,7 @@ import de.lmu.ifi.dbs.elki.database.ids.DBIDRef; * A class to answer representation queries using the stored Array. * * @author Erich Schubert + * @since 0.4.0 * * @apiviz.composedOf DataStoreIDMap * @apiviz.has ArrayRecordStore.StorageAccessor oneway - - projectsTo @@ -128,12 +129,17 @@ public class ArrayRecordStore implements WritableRecordStore { @Override public void destroy() { - throw new UnsupportedOperationException("ArrayStore record columns cannot be destroyed."); + throw new UnsupportedOperationException("ArrayStore record columns cannot (yet) be destroyed."); } @Override public void delete(DBIDRef id) { - throw new UnsupportedOperationException("ArrayStore record values cannot be deleted."); + put(id, null); + } + + @Override + public void clear() { + throw new UnsupportedOperationException("ArrayStore record columns cannot (yet) be cleared."); } @Override diff --git a/elki/src/main/java/de/lmu/ifi/dbs/elki/database/datastore/memory/ArrayStore.java b/elki/src/main/java/de/lmu/ifi/dbs/elki/database/datastore/memory/ArrayStore.java index 35871ed9..bbfa967f 100644 --- a/elki/src/main/java/de/lmu/ifi/dbs/elki/database/datastore/memory/ArrayStore.java +++ b/elki/src/main/java/de/lmu/ifi/dbs/elki/database/datastore/memory/ArrayStore.java @@ -1,5 +1,7 @@ package de.lmu.ifi.dbs.elki.database.datastore.memory; +import java.util.Arrays; + /* This file is part of ELKI: Environment for Developing KDD-Applications Supported by Index-Structures @@ -33,6 +35,7 @@ import de.lmu.ifi.dbs.elki.utilities.exceptions.ObjectNotFoundException; * A class to answer representation queries using the stored Array. * * @author Erich Schubert + * @since 0.4.0 * * @apiviz.composedOf de.lmu.ifi.dbs.elki.database.datastore.DataStoreIDMap * @@ -86,7 +89,12 @@ public class ArrayStore<T> implements WritableDataStore<T> { @Override public void delete(DBIDRef id) { - throw new UnsupportedOperationException("Can't delete from a static array storage."); + put(id, null); + } + + @Override + public void clear() { + Arrays.fill(data, null); } @Override diff --git a/elki/src/main/java/de/lmu/ifi/dbs/elki/database/datastore/memory/MapIntegerDBIDDBIDStore.java b/elki/src/main/java/de/lmu/ifi/dbs/elki/database/datastore/memory/MapIntegerDBIDDBIDStore.java index 11b3cbb2..9016e6cf 100644 --- a/elki/src/main/java/de/lmu/ifi/dbs/elki/database/datastore/memory/MapIntegerDBIDDBIDStore.java +++ b/elki/src/main/java/de/lmu/ifi/dbs/elki/database/datastore/memory/MapIntegerDBIDDBIDStore.java @@ -36,6 +36,7 @@ import de.lmu.ifi.dbs.elki.database.ids.DBIDVar; * Writable data store for double values. * * @author Erich Schubert + * @since 0.5.0 */ public class MapIntegerDBIDDBIDStore implements WritableDBIDDataStore { /** @@ -76,17 +77,6 @@ public class MapIntegerDBIDDBIDStore implements WritableDBIDDataStore { } @Override - public void destroy() { - map.clear(); - map = null; - } - - @Override - public void delete(DBIDRef id) { - map.remove(DBIDUtil.asInteger(id)); - } - - @Override public void put(DBIDRef id, DBIDRef value) { map.put(DBIDUtil.asInteger(id), DBIDUtil.asInteger(value)); } @@ -102,4 +92,20 @@ public class MapIntegerDBIDDBIDStore implements WritableDBIDDataStore { DBIDFactory.FACTORY.assignVar(var, val); return var; } + + @Override + public void delete(DBIDRef id) { + map.remove(DBIDUtil.asInteger(id)); + } + + @Override + public void destroy() { + map.clear(); + map = null; + } + + @Override + public void clear() { + map.clear(); + } } diff --git a/elki/src/main/java/de/lmu/ifi/dbs/elki/database/datastore/memory/MapIntegerDBIDDoubleStore.java b/elki/src/main/java/de/lmu/ifi/dbs/elki/database/datastore/memory/MapIntegerDBIDDoubleStore.java index 5e21f6b4..4629a942 100644 --- a/elki/src/main/java/de/lmu/ifi/dbs/elki/database/datastore/memory/MapIntegerDBIDDoubleStore.java +++ b/elki/src/main/java/de/lmu/ifi/dbs/elki/database/datastore/memory/MapIntegerDBIDDoubleStore.java @@ -33,6 +33,7 @@ import de.lmu.ifi.dbs.elki.database.ids.DBIDUtil; * Writable data store for double values. * * @author Erich Schubert + * @since 0.5.0 */ public class MapIntegerDBIDDoubleStore implements WritableDoubleDataStore { /** diff --git a/elki/src/main/java/de/lmu/ifi/dbs/elki/database/datastore/memory/MapIntegerDBIDIntegerStore.java b/elki/src/main/java/de/lmu/ifi/dbs/elki/database/datastore/memory/MapIntegerDBIDIntegerStore.java index 2474aa4a..37fb84c0 100644 --- a/elki/src/main/java/de/lmu/ifi/dbs/elki/database/datastore/memory/MapIntegerDBIDIntegerStore.java +++ b/elki/src/main/java/de/lmu/ifi/dbs/elki/database/datastore/memory/MapIntegerDBIDIntegerStore.java @@ -33,6 +33,7 @@ import de.lmu.ifi.dbs.elki.database.ids.DBIDUtil; * Writable data store for double values. * * @author Erich Schubert + * @since 0.5.0 */ public class MapIntegerDBIDIntegerStore implements WritableIntegerDataStore { /** @@ -112,4 +113,9 @@ public class MapIntegerDBIDIntegerStore implements WritableIntegerDataStore { public void increment(DBIDRef id, int adjust) { map.adjustOrPutValue(DBIDUtil.asInteger(id), adjust, adjust); } + + @Override + public void clear() { + map.clear(); + } } diff --git a/elki/src/main/java/de/lmu/ifi/dbs/elki/database/datastore/memory/MapIntegerDBIDRecordStore.java b/elki/src/main/java/de/lmu/ifi/dbs/elki/database/datastore/memory/MapIntegerDBIDRecordStore.java index 66f885d5..6461ad97 100644 --- a/elki/src/main/java/de/lmu/ifi/dbs/elki/database/datastore/memory/MapIntegerDBIDRecordStore.java +++ b/elki/src/main/java/de/lmu/ifi/dbs/elki/database/datastore/memory/MapIntegerDBIDRecordStore.java @@ -35,6 +35,7 @@ import de.lmu.ifi.dbs.elki.database.ids.DBIDUtil; * record. * * @author Erich Schubert + * @since 0.4.0 * * @apiviz.has MapIntegerDBIDRecordStore.StorageAccessor oneway - - projectsTo */ @@ -165,7 +166,12 @@ public class MapIntegerDBIDRecordStore implements WritableRecordStore { @Override public void delete(DBIDRef id) { - throw new UnsupportedOperationException("Record storage values cannot be deleted."); + throw new UnsupportedOperationException("Record storage accessors cannot be deleted."); + } + + @Override + public void clear() { + throw new UnsupportedOperationException("Record storage accessors cannot be cleared."); } @Override diff --git a/elki/src/main/java/de/lmu/ifi/dbs/elki/database/datastore/memory/MapIntegerDBIDStore.java b/elki/src/main/java/de/lmu/ifi/dbs/elki/database/datastore/memory/MapIntegerDBIDStore.java index 08e31971..2d21dccb 100644 --- a/elki/src/main/java/de/lmu/ifi/dbs/elki/database/datastore/memory/MapIntegerDBIDStore.java +++ b/elki/src/main/java/de/lmu/ifi/dbs/elki/database/datastore/memory/MapIntegerDBIDStore.java @@ -34,6 +34,7 @@ import de.lmu.ifi.dbs.elki.database.ids.DBIDUtil; * wrapper around a regular map. * * @author Erich Schubert + * @since 0.4.0 * * @param <T> Representation object type */ @@ -94,6 +95,11 @@ public class MapIntegerDBIDStore<T> implements WritableDataStore<T> { } @Override + public void clear() { + data.clear(); + } + + @Override public String getLongName() { return "raw"; } diff --git a/elki/src/main/java/de/lmu/ifi/dbs/elki/database/datastore/memory/MapRecordStore.java b/elki/src/main/java/de/lmu/ifi/dbs/elki/database/datastore/memory/MapRecordStore.java index 6ed7f581..e6cf1198 100644 --- a/elki/src/main/java/de/lmu/ifi/dbs/elki/database/datastore/memory/MapRecordStore.java +++ b/elki/src/main/java/de/lmu/ifi/dbs/elki/database/datastore/memory/MapRecordStore.java @@ -37,6 +37,7 @@ import de.lmu.ifi.dbs.elki.database.ids.DBIDUtil; * record. * * @author Erich Schubert + * @since 0.4.0 * * @apiviz.has MapRecordStore.StorageAccessor oneway - - projectsTo */ @@ -90,7 +91,7 @@ public class MapRecordStore implements WritableRecordStore { @SuppressWarnings("unchecked") protected <T> T get(DBIDRef id, int index) { Object[] d = data.get(DBIDUtil.deref(id)); - if (d == null) { + if(d == null) { return null; } return (T) d[index]; @@ -108,7 +109,7 @@ public class MapRecordStore implements WritableRecordStore { @SuppressWarnings("unchecked") protected <T> T set(DBIDRef id, int index, T value) { Object[] d = data.get(DBIDUtil.deref(id)); - if (d == null) { + if(d == null) { d = new Object[rlen]; data.put(DBIDUtil.deref(id), d); } @@ -157,6 +158,11 @@ public class MapRecordStore implements WritableRecordStore { } @Override + public void clear() { + throw new UnsupportedOperationException("Record storage accessors cannot (yet) be cleared."); + } + + @Override public void delete(DBIDRef id) { throw new UnsupportedOperationException("Record storage values cannot be deleted."); } diff --git a/elki/src/main/java/de/lmu/ifi/dbs/elki/database/datastore/memory/MapStore.java b/elki/src/main/java/de/lmu/ifi/dbs/elki/database/datastore/memory/MapStore.java index 98e5fc57..758e8bec 100644 --- a/elki/src/main/java/de/lmu/ifi/dbs/elki/database/datastore/memory/MapStore.java +++ b/elki/src/main/java/de/lmu/ifi/dbs/elki/database/datastore/memory/MapStore.java @@ -36,6 +36,7 @@ import de.lmu.ifi.dbs.elki.database.ids.DBIDUtil; * wrapper around a regular map. * * @author Erich Schubert + * @since 0.4.0 * * @param <T> Representation object type */ @@ -87,6 +88,11 @@ public class MapStore<T> implements WritableDataStore<T> { } @Override + public void clear() { + data.clear(); + } + + @Override public String getLongName() { return "raw"; } diff --git a/elki/src/main/java/de/lmu/ifi/dbs/elki/database/datastore/memory/MemoryDataStoreFactory.java b/elki/src/main/java/de/lmu/ifi/dbs/elki/database/datastore/memory/MemoryDataStoreFactory.java index 649de071..6e9427f5 100644 --- a/elki/src/main/java/de/lmu/ifi/dbs/elki/database/datastore/memory/MemoryDataStoreFactory.java +++ b/elki/src/main/java/de/lmu/ifi/dbs/elki/database/datastore/memory/MemoryDataStoreFactory.java @@ -40,6 +40,7 @@ import de.lmu.ifi.dbs.elki.database.ids.DBIDs; * in-memory. * * @author Erich Schubert + * @since 0.4.0 * * @apiviz.stereotype factory * @apiviz.has ArrayStore oneway - - «create» diff --git a/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/ArrayDBIDs.java b/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/ArrayDBIDs.java index c48e575d..8fc27ff3 100644 --- a/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/ArrayDBIDs.java +++ b/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/ArrayDBIDs.java @@ -27,6 +27,7 @@ package de.lmu.ifi.dbs.elki.database.ids; * Interface for array based DBIDs. * * @author Erich Schubert + * @since 0.4.0 * * @apiviz.has DBIDArrayIter */ diff --git a/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/ArrayModifiableDBIDs.java b/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/ArrayModifiableDBIDs.java index 498d090a..c879ae95 100644 --- a/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/ArrayModifiableDBIDs.java +++ b/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/ArrayModifiableDBIDs.java @@ -28,6 +28,7 @@ import java.util.Comparator; * Array-oriented implementation of a modifiable DBID collection. * * @author Erich Schubert + * @since 0.4.0 * * @apiviz.has DBIDArrayMIter */ diff --git a/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/ArrayStaticDBIDs.java b/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/ArrayStaticDBIDs.java index 7331edce..623b102d 100644 --- a/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/ArrayStaticDBIDs.java +++ b/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/ArrayStaticDBIDs.java @@ -28,6 +28,7 @@ package de.lmu.ifi.dbs.elki.database.ids; * Unmodifiable, indexed DBIDs. * * @author Erich Schubert + * @since 0.4.0 */ public interface ArrayStaticDBIDs extends ArrayDBIDs, StaticDBIDs { // empty. diff --git a/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/DBID.java b/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/DBID.java index 3fb4cc93..66001a7a 100644 --- a/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/DBID.java +++ b/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/DBID.java @@ -34,6 +34,7 @@ package de.lmu.ifi.dbs.elki.database.ids; * consistent across multiple results/databases. * * @author Erich Schubert + * @since 0.4.0 * * @apiviz.landmark */ diff --git a/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/DBIDArrayIter.java b/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/DBIDArrayIter.java index 9168e7c6..0f638fe0 100644 --- a/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/DBIDArrayIter.java +++ b/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/DBIDArrayIter.java @@ -28,6 +28,7 @@ import de.lmu.ifi.dbs.elki.utilities.datastructures.iterator.ArrayIter; * Array iterators that can also go backwards and seek. * * @author Erich Schubert + * @since 0.4.0 */ public interface DBIDArrayIter extends DBIDIter, ArrayIter { @Override diff --git a/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/DBIDArrayMIter.java b/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/DBIDArrayMIter.java index e4bca297..5da6b6ae 100644 --- a/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/DBIDArrayMIter.java +++ b/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/DBIDArrayMIter.java @@ -27,6 +27,7 @@ package de.lmu.ifi.dbs.elki.database.ids; * Modifiable array iterator. * * @author Erich Schubert + * @since 0.4.0 */ public interface DBIDArrayMIter extends DBIDArrayIter, DBIDMIter { // Nothing new, see {@link DBIDArrayIter} and {@link DBIDMIter} diff --git a/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/DBIDFactory.java b/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/DBIDFactory.java index dc424b71..6ac06aab 100644 --- a/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/DBIDFactory.java +++ b/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/DBIDFactory.java @@ -32,6 +32,7 @@ import de.lmu.ifi.dbs.elki.utilities.io.FixedSizeByteBufferSerializer; * instance to use. * * @author Erich Schubert + * @since 0.4.0 * * @apiviz.stereotype factory * @apiviz.uses DBID oneway - - «create» diff --git a/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/DBIDIter.java b/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/DBIDIter.java index d2c816a2..f9e9e381 100644 --- a/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/DBIDIter.java +++ b/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/DBIDIter.java @@ -54,6 +54,7 @@ import de.lmu.ifi.dbs.elki.utilities.datastructures.iterator.Iter; * </ul> * * @author Erich Schubert + * @since 0.5.0 * * @apiviz.landmark */ diff --git a/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/DBIDMIter.java b/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/DBIDMIter.java index d52e87ed..7dc3dca6 100644 --- a/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/DBIDMIter.java +++ b/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/DBIDMIter.java @@ -29,6 +29,7 @@ import de.lmu.ifi.dbs.elki.utilities.datastructures.iterator.MIter; * Modifiable DBID iterator. * * @author Erich Schubert + * @since 0.4.0 */ public interface DBIDMIter extends DBIDIter, MIter { /** diff --git a/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/DBIDPair.java b/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/DBIDPair.java index 29d993ea..675f8810 100644 --- a/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/DBIDPair.java +++ b/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/DBIDPair.java @@ -28,6 +28,7 @@ package de.lmu.ifi.dbs.elki.database.ids; * using {@link de.lmu.ifi.dbs.elki.utilities.pairs.Pair} * * @author Erich Schubert + * @since 0.4.0 * * @apiviz.composedOf de.lmu.ifi.dbs.elki.database.ids.DBID */ diff --git a/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/DBIDRange.java b/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/DBIDRange.java index 710ec3c6..1e515893 100644 --- a/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/DBIDRange.java +++ b/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/DBIDRange.java @@ -29,6 +29,7 @@ import de.lmu.ifi.dbs.elki.database.datastore.DataStoreIDMap; * Static DBID range. * * @author Erich Schubert + * @since 0.4.0 */ public interface DBIDRange extends ArrayStaticDBIDs, DataStoreIDMap { /** diff --git a/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/DBIDRef.java b/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/DBIDRef.java index 80b69a1e..7f051e35 100644 --- a/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/DBIDRef.java +++ b/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/DBIDRef.java @@ -31,6 +31,7 @@ package de.lmu.ifi.dbs.elki.database.ids; * are a good example how the DBIDRef may change. * * @author Erich Schubert + * @since 0.5.0 * * @apiviz.landmark * diff --git a/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/DBIDUtil.java b/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/DBIDUtil.java index ae85fa12..c9f2c1f1 100644 --- a/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/DBIDUtil.java +++ b/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/DBIDUtil.java @@ -41,11 +41,12 @@ import de.lmu.ifi.dbs.elki.utilities.io.ByteBufferSerializer; /** * DBID Utility functions. - * + * * @author Erich Schubert - * + * @since 0.4.0 + * * @apiviz.landmark - * + * * @apiviz.has DBIDs * @apiviz.has DBIDRef * @apiviz.composedOf DBIDFactory @@ -65,7 +66,7 @@ public final class DBIDUtil { /** * Get the invalid special ID. - * + * * @return invalid ID value */ public static DBIDRef invalid() { @@ -74,9 +75,9 @@ public final class DBIDUtil { /** * Import and integer as DBID. - * + * * Note: this may not be possible for some factories! - * + * * @param id Integer ID to import * @return DBID */ @@ -86,9 +87,9 @@ public final class DBIDUtil { /** * Export a DBID as int. - * + * * Note: this may not be possible for some factories! - * + * * @param id DBID to export * @return integer value */ @@ -98,7 +99,7 @@ public final class DBIDUtil { /** * Compare two DBIDs. - * + * * @param id1 First ID * @param id2 Second ID * @return Comparison result @@ -109,7 +110,7 @@ public final class DBIDUtil { /** * Test two DBIDs for equality. - * + * * @param id1 First ID * @param id2 Second ID * @return Comparison result @@ -120,7 +121,7 @@ public final class DBIDUtil { /** * Dereference a DBID reference. - * + * * @param ref DBID reference * @return DBID */ @@ -133,7 +134,7 @@ public final class DBIDUtil { /** * Format a DBID as string. - * + * * @param id DBID * @return String representation */ @@ -143,7 +144,7 @@ public final class DBIDUtil { /** * Format a DBID as string. - * + * * @param ids DBIDs * @return String representation */ @@ -163,7 +164,7 @@ public final class DBIDUtil { /** * Get a serializer for DBIDs. - * + * * @return DBID serializer */ public static ByteBufferSerializer<DBID> getDBIDSerializer() { @@ -172,7 +173,7 @@ public final class DBIDUtil { /** * Get a serializer for DBIDs with static size. - * + * * @return DBID serializer */ public static ByteBufferSerializer<DBID> getDBIDSerializerStatic() { @@ -181,7 +182,7 @@ public final class DBIDUtil { /** * Generate a single DBID. - * + * * @return A single DBID */ public static DBID generateSingleDBID() { @@ -190,7 +191,7 @@ public final class DBIDUtil { /** * Return a single DBID for reuse. - * + * * @param id DBID to deallocate */ public static void deallocateSingleDBID(DBID id) { @@ -199,7 +200,7 @@ public final class DBIDUtil { /** * Generate a static DBID range. - * + * * @param size Requested size * @return DBID range */ @@ -209,7 +210,7 @@ public final class DBIDUtil { /** * Deallocate a static DBID range. - * + * * @param range Range to deallocate */ public static void deallocateDBIDRange(DBIDRange range) { @@ -218,7 +219,7 @@ public final class DBIDUtil { /** * Make a new DBID variable. - * + * * @param val Initial value. * @return Variable */ @@ -228,7 +229,7 @@ public final class DBIDUtil { /** * Make a new DBID variable. - * + * * @return Variable */ public static DBIDVar newVar() { @@ -237,7 +238,7 @@ public final class DBIDUtil { /** * Make a new (modifiable) array of DBIDs. - * + * * @return New array */ public static ArrayModifiableDBIDs newArray() { @@ -246,7 +247,7 @@ public final class DBIDUtil { /** * Make a new (modifiable) hash set of DBIDs. - * + * * @return New hash set */ public static HashSetModifiableDBIDs newHashSet() { @@ -255,7 +256,7 @@ public final class DBIDUtil { /** * Make a new (modifiable) array of DBIDs. - * + * * @param size Size hint * @return New array */ @@ -265,7 +266,7 @@ public final class DBIDUtil { /** * Make a new (modifiable) hash set of DBIDs. - * + * * @param size Size hint * @return New hash set */ @@ -275,7 +276,7 @@ public final class DBIDUtil { /** * Make a new (modifiable) array of DBIDs. - * + * * @param existing Existing DBIDs * @return New array */ @@ -285,7 +286,7 @@ public final class DBIDUtil { /** * Make a new (modifiable) hash set of DBIDs. - * + * * @param existing Existing DBIDs * @return New hash set */ @@ -295,7 +296,7 @@ public final class DBIDUtil { /** * Compute the set intersection of two sets. - * + * * @param first First set * @param second Second set * @return result. @@ -316,7 +317,7 @@ public final class DBIDUtil { /** * Compute the set intersection size of two sets. - * + * * @param first First set * @param second Second set * @return size @@ -345,7 +346,7 @@ public final class DBIDUtil { /** * Compute the set intersection size of two sets. - * + * * @param first First set * @param second Second set * @return size @@ -362,7 +363,7 @@ public final class DBIDUtil { /** * Compute the set symmetric intersection of two sets. - * + * * @param first First set * @param second Second set * @param firstonly OUTPUT: elements only in first. MUST BE EMPTY @@ -393,7 +394,7 @@ public final class DBIDUtil { /** * Returns the union of the two specified collection of IDs. - * + * * @param ids1 the first collection * @param ids2 the second collection * @return the union of ids1 and ids2 without duplicates @@ -407,7 +408,7 @@ public final class DBIDUtil { /** * Returns the difference of the two specified collection of IDs. - * + * * @param ids1 the first collection * @param ids2 the second collection * @return the difference of ids1 minus ids2 @@ -420,7 +421,7 @@ public final class DBIDUtil { /** * Wrap an existing DBIDs collection to be unmodifiable. - * + * * @param existing Existing collection * @return Unmodifiable collection */ @@ -442,7 +443,7 @@ public final class DBIDUtil { /** * Ensure that the given DBIDs are array-indexable. - * + * * @param ids IDs * @return Array DBIDs. */ @@ -457,7 +458,7 @@ public final class DBIDUtil { /** * Ensure that the given DBIDs support fast "contains" operations. - * + * * @param ids IDs * @return Set DBIDs. */ @@ -472,7 +473,7 @@ public final class DBIDUtil { /** * Ensure modifiable. - * + * * @param ids IDs * @return Modifiable DBIDs. */ @@ -493,10 +494,10 @@ public final class DBIDUtil { /** * Make a DBID pair. - * + * * @param id1 first ID * @param id2 second ID - * + * * @return DBID pair */ public static DBIDPair newPair(DBIDRef id1, DBIDRef id2) { @@ -505,7 +506,7 @@ public final class DBIDUtil { /** * Make a DoubleDBIDPair. - * + * * @param val double value * @param id ID * @return new pair @@ -516,9 +517,9 @@ public final class DBIDUtil { /** * Create an appropriate heap for the distance type. - * + * * This will use a double heap if appropriate. - * + * * @param k K value * @return New heap of size k, appropriate for this distance type. */ @@ -528,7 +529,7 @@ public final class DBIDUtil { /** * Build a new heap from a given list. - * + * * @param exist Existing result * @return New heap */ @@ -538,7 +539,7 @@ public final class DBIDUtil { /** * Produce a random shuffling of the given DBID array. - * + * * @param ids Original DBIDs * @param rnd Random generator */ @@ -548,7 +549,7 @@ public final class DBIDUtil { /** * Produce a random shuffling of the given DBID array. - * + * * @param ids Original DBIDs * @param random Random generator */ @@ -558,22 +559,24 @@ public final class DBIDUtil { /** * Produce a random shuffling of the given DBID array. - * - * Only the first {@code limit} elements will be randomized. - * + * + * Only the first {@code limit} elements will be fully randomized, but the + * remaining objects will also be changed. + * * @param ids Original DBIDs * @param random Random generator * @param limit Shuffling limit. */ public static void randomShuffle(ArrayModifiableDBIDs ids, Random random, final int limit) { + final int end = ids.size(); for(int i = 1; i < limit; i++) { - ids.swap(i - 1, i + random.nextInt(limit - i)); + ids.swap(i - 1, i + random.nextInt(end - i)); } } /** * Produce a random sample of the given DBIDs. - * + * * @param source Original DBIDs * @param k k Parameter * @param seed Random generator seed @@ -585,7 +588,7 @@ public final class DBIDUtil { /** * Produce a random sample of the given DBIDs. - * + * * @param source Original DBIDs * @param k k Parameter * @param seed Random generator seed @@ -602,7 +605,7 @@ public final class DBIDUtil { /** * Produce a random sample of the given DBIDs. - * + * * @param source Original DBIDs * @param k k Parameter * @param rnd Random generator @@ -614,7 +617,7 @@ public final class DBIDUtil { /** * Produce a random sample of the given DBIDs. - * + * * @param source Original DBIDs * @param k k Parameter * @param random Random generator @@ -645,7 +648,7 @@ public final class DBIDUtil { ArrayModifiableDBIDs sample = DBIDUtil.newArray(source); randomShuffle(sample, random, k); // Delete trailing elements - for(int i = sample.size() - 1; i > k; i--) { + for(int i = sample.size() - 1; i >= k; i--) { sample.remove(i); } return sample; @@ -654,7 +657,7 @@ public final class DBIDUtil { /** * Produce a random sample of the given DBIDs. - * + * * @param ids Original ids * @param rate Sampling rate * @param random Random generator @@ -666,7 +669,7 @@ public final class DBIDUtil { /** * Produce a random sample of the given DBIDs. - * + * * @param ids Original ids * @param rate Sampling rate * @param random Random generator @@ -711,7 +714,7 @@ public final class DBIDUtil { /** * Randomly split IDs into {@code p} partitions of almost-equal size. - * + * * @param ids Original DBIDs * @param p Desired number of partitions. * @param rnd Random generator @@ -722,7 +725,7 @@ public final class DBIDUtil { /** * Randomly split IDs into {@code p} partitions of almost-equal size. - * + * * @param oids Original DBIDs * @param p Desired number of partitions. * @param random Random generator @@ -752,7 +755,7 @@ public final class DBIDUtil { /** * Get a subset of the KNN result. - * + * * @param list Existing list * @param k k * @return Subset @@ -769,7 +772,7 @@ public final class DBIDUtil { /** * Create a modifiable list to store distance-DBID pairs. - * + * * @param size Estimated upper list size * @return Empty list */ @@ -779,7 +782,7 @@ public final class DBIDUtil { /** * Create a modifiable list to store distance-DBID pairs. - * + * * @return Empty list */ public static ModifiableDoubleDBIDList newDistanceDBIDList() { @@ -788,7 +791,7 @@ public final class DBIDUtil { /** * Assert that the presented ids constitute a continuous {@link DBIDRange}. - * + * * @param ids ID range. * @return DBID range. * @throws AbortException diff --git a/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/DBIDVar.java b/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/DBIDVar.java index adfa9aed..80dfaf53 100644 --- a/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/DBIDVar.java +++ b/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/DBIDVar.java @@ -33,6 +33,7 @@ import de.lmu.ifi.dbs.elki.database.datastore.DBIDDataStore; * candidate. * * @author Erich Schubert + * @since 0.4.0 */ public interface DBIDVar extends DBIDRef, ArrayDBIDs, SetDBIDs { /** diff --git a/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/DBIDs.java b/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/DBIDs.java index 47ab6c2b..95a07f80 100644 --- a/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/DBIDs.java +++ b/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/DBIDs.java @@ -28,6 +28,7 @@ package de.lmu.ifi.dbs.elki.database.ids; * Interface for a collection of database references (IDs). * * @author Erich Schubert + * @since 0.4.0 * * @apiviz.landmark * @apiviz.composedOf DBID diff --git a/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/DoubleDBIDList.java b/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/DoubleDBIDList.java index 4ac19f95..355f9c17 100644 --- a/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/DoubleDBIDList.java +++ b/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/DoubleDBIDList.java @@ -50,6 +50,7 @@ package de.lmu.ifi.dbs.elki.database.ids; * </pre> * * @author Erich Schubert + * @since 0.5.5 * * @apiviz.landmark * diff --git a/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/DoubleDBIDListIter.java b/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/DoubleDBIDListIter.java index 92fe9233..6435a048 100644 --- a/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/DoubleDBIDListIter.java +++ b/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/DoubleDBIDListIter.java @@ -31,6 +31,7 @@ package de.lmu.ifi.dbs.elki.database.ids; * {@link de.lmu.ifi.dbs.elki.database.ids.DBIDRef}. * * @author Erich Schubert + * @since 0.3 * * @apiviz.landmark * diff --git a/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/DoubleDBIDListMIter.java b/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/DoubleDBIDListMIter.java index 0e371ff8..638c32ee 100644 --- a/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/DoubleDBIDListMIter.java +++ b/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/DoubleDBIDListMIter.java @@ -26,6 +26,7 @@ package de.lmu.ifi.dbs.elki.database.ids; * Modifiable DBIDList iterator. * * @author Erich Schubert + * @since 0.2 */ public interface DoubleDBIDListMIter extends DoubleDBIDListIter, DBIDArrayMIter { /** diff --git a/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/DoubleDBIDPair.java b/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/DoubleDBIDPair.java index 725861d6..1a49ad56 100644 --- a/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/DoubleDBIDPair.java +++ b/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/DoubleDBIDPair.java @@ -30,6 +30,7 @@ package de.lmu.ifi.dbs.elki.database.ids; * object reference. * * @author Erich Schubert + * @since 0.2 */ public interface DoubleDBIDPair extends DBIDRef, Comparable<DoubleDBIDPair> { /** diff --git a/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/EmptyDBIDs.java b/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/EmptyDBIDs.java index 5c1c3e2d..444b632c 100644 --- a/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/EmptyDBIDs.java +++ b/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/EmptyDBIDs.java @@ -31,6 +31,7 @@ import de.lmu.ifi.dbs.elki.logging.LoggingUtil; * Empty DBID collection. * * @author Erich Schubert + * @since 0.4.0 * * @apiviz.composedOf EmptyDBIDIterator */ diff --git a/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/HashSetDBIDs.java b/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/HashSetDBIDs.java index c7deb732..e5a3c4d3 100644 --- a/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/HashSetDBIDs.java +++ b/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/HashSetDBIDs.java @@ -28,6 +28,7 @@ package de.lmu.ifi.dbs.elki.database.ids; * Hash-organized DBIDs * * @author Erich Schubert + * @since 0.4.0 */ public interface HashSetDBIDs extends SetDBIDs { // Empty marker interface diff --git a/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/HashSetModifiableDBIDs.java b/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/HashSetModifiableDBIDs.java index e5cde131..f3a43b8b 100644 --- a/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/HashSetModifiableDBIDs.java +++ b/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/HashSetModifiableDBIDs.java @@ -27,6 +27,7 @@ package de.lmu.ifi.dbs.elki.database.ids; * Set-oriented implementation of a modifiable DBID collection. * * @author Erich Schubert + * @since 0.4.0 */ public interface HashSetModifiableDBIDs extends HashSetDBIDs, ModifiableDBIDs { /** diff --git a/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/KNNHeap.java b/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/KNNHeap.java index f2ae4c0e..73fddbb2 100644 --- a/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/KNNHeap.java +++ b/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/KNNHeap.java @@ -31,6 +31,7 @@ package de.lmu.ifi.dbs.elki.database.ids; * {@link de.lmu.ifi.dbs.elki.database.ids.DBIDUtil#newHeap}! * * @author Erich Schubert + * @since 0.5.5 * * @apiviz.landmark * diff --git a/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/KNNList.java b/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/KNNList.java index 94c26a5f..f23e81e2 100644 --- a/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/KNNList.java +++ b/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/KNNList.java @@ -51,6 +51,7 @@ package de.lmu.ifi.dbs.elki.database.ids; * </pre> * * @author Erich Schubert + * @since 0.5.5 * * @apiviz.landmark * diff --git a/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/ModifiableDBIDs.java b/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/ModifiableDBIDs.java index fa88c373..f59f1d92 100644 --- a/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/ModifiableDBIDs.java +++ b/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/ModifiableDBIDs.java @@ -25,43 +25,46 @@ package de.lmu.ifi.dbs.elki.database.ids; /** * Interface for a generic modifiable DBID collection. - * + * * Note: we had this use the Java Collections API for a long time, however this * prevented certain optimizations. So it now only mimics the Collections API * <em>deliberately</em>. - * + * * @author Erich Schubert - * + * @since 0.4.0 + * * @apiviz.has DBIDMIter */ public interface ModifiableDBIDs extends DBIDs { /** * Add DBIDs to collection. - * + * * @param ids IDs to add. - * @return {@code true} when modified + * @return {@code true} if the collection changed. */ boolean addDBIDs(DBIDs ids); /** * Remove DBIDs from collection. - * + * * @param ids IDs to remove. - * @return {@code true} when modified + * @return {@code true} if the collection changed. */ boolean removeDBIDs(DBIDs ids); /** * Add a single DBID to the collection. - * + * * @param id ID to add + * @return {@code true} if the collection changed. */ boolean add(DBIDRef id); /** * Remove a single DBID from the collection. - * + * * @param id ID to remove + * @return {@code true} if the collection changed. */ boolean remove(DBIDRef id); @@ -72,9 +75,9 @@ public interface ModifiableDBIDs extends DBIDs { /** * Get a <em>modifiable</em> DBID iterator (a more efficient API). - * + * * usage example: - * + * * <pre> * {@code * for(DBIDMIter iter = ids.iter(); iter.valid(); iter.advance()) { @@ -83,7 +86,7 @@ public interface ModifiableDBIDs extends DBIDs { * } * } * </pre> - * + * * @return modifiable iterator */ @Override @@ -93,6 +96,8 @@ public interface ModifiableDBIDs extends DBIDs { * Pop (get and remove) one DBID from the set, into a variable. * * @param outvar Output variable + * @return Always {@code outvar}, for inlining + * @throws ArrayIndexOutOfBoundsException when empty. */ - void pop(DBIDVar outvar); + DBIDVar pop(DBIDVar outvar); }
\ No newline at end of file diff --git a/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/ModifiableDoubleDBIDList.java b/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/ModifiableDoubleDBIDList.java index 964e18d0..8b4409ee 100644 --- a/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/ModifiableDoubleDBIDList.java +++ b/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/ModifiableDoubleDBIDList.java @@ -27,6 +27,7 @@ package de.lmu.ifi.dbs.elki.database.ids; * Modifiable API for Distance-DBID results * * @author Erich Schubert + * @since 0.3 * * @apiviz.composedOf DoubleDBIDPair */ diff --git a/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/SetDBIDs.java b/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/SetDBIDs.java index bcae4fec..cead3cb6 100644 --- a/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/SetDBIDs.java +++ b/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/SetDBIDs.java @@ -29,6 +29,7 @@ package de.lmu.ifi.dbs.elki.database.ids; * "contains" lookups. * * @author Erich Schubert + * @since 0.4.0 */ public interface SetDBIDs extends DBIDs { // empty marker interface diff --git a/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/StaticDBIDs.java b/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/StaticDBIDs.java index f1b96812..3b4ccc16 100644 --- a/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/StaticDBIDs.java +++ b/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/StaticDBIDs.java @@ -28,6 +28,7 @@ package de.lmu.ifi.dbs.elki.database.ids; * Unmodifiable DBIDs. * * @author Erich Schubert + * @since 0.4.0 */ public interface StaticDBIDs extends DBIDs { // Empty marker interface. diff --git a/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/generic/KNNSubList.java b/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/generic/KNNSubList.java index 1563efd4..770c3792 100644 --- a/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/generic/KNNSubList.java +++ b/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/generic/KNNSubList.java @@ -33,6 +33,7 @@ import de.lmu.ifi.dbs.elki.database.ids.KNNList; * Sublist of an existing result to contain only the first k elements. * * @author Erich Schubert + * @since 0.5.5 */ public class KNNSubList implements KNNList { /** diff --git a/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/generic/MaskedDBIDs.java b/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/generic/MaskedDBIDs.java index f71498bd..b61b2a98 100644 --- a/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/generic/MaskedDBIDs.java +++ b/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/generic/MaskedDBIDs.java @@ -35,6 +35,7 @@ import de.lmu.ifi.dbs.elki.utilities.BitsUtil; * View on an ArrayDBIDs masked using a BitMask for efficient mask changing. * * @author Erich Schubert + * @since 0.4.0 * * @apiviz.uses DBIDs */ diff --git a/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/generic/UnmodifiableArrayDBIDs.java b/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/generic/UnmodifiableArrayDBIDs.java index 637ad758..698e63ab 100644 --- a/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/generic/UnmodifiableArrayDBIDs.java +++ b/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/generic/UnmodifiableArrayDBIDs.java @@ -35,6 +35,7 @@ import de.lmu.ifi.dbs.elki.database.ids.DBIDVar; * Unmodifiable wrapper for DBIDs. * * @author Erich Schubert + * @since 0.4.0 * * @apiviz.uses ArrayDBIDs * @apiviz.has UnmodifiableDBIDArrayIter diff --git a/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/generic/UnmodifiableDBIDs.java b/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/generic/UnmodifiableDBIDs.java index 16ff1f81..7ce291e8 100644 --- a/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/generic/UnmodifiableDBIDs.java +++ b/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/generic/UnmodifiableDBIDs.java @@ -33,6 +33,7 @@ import de.lmu.ifi.dbs.elki.database.ids.StaticDBIDs; * Unmodifiable wrapper for DBIDs. * * @author Erich Schubert + * @since 0.4.0 * * @apiviz.uses DBIDs * @apiviz.has UnmodifiableDBIDIter diff --git a/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/integer/AbstractIntegerDBIDFactory.java b/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/integer/AbstractIntegerDBIDFactory.java index cbf29e9c..6ad8c6fe 100644 --- a/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/integer/AbstractIntegerDBIDFactory.java +++ b/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/integer/AbstractIntegerDBIDFactory.java @@ -41,6 +41,7 @@ import de.lmu.ifi.dbs.elki.utilities.io.FixedSizeByteBufferSerializer; * Abstract base class for DBID factories. * * @author Erich Schubert + * @since 0.4.0 * * @apiviz.uses IntegerDBID oneway - - «create» * @apiviz.uses IntegerDBIDPair oneway - - «create» @@ -83,7 +84,8 @@ abstract class AbstractIntegerDBIDFactory implements DBIDFactory { @Override public String toString(DBIDRef id) { - return (id != null) ? Integer.toString(id.internalGetIndex()) : "null"; + return (id != null && id.internalGetIndex() != Integer.MIN_VALUE) // + ? Integer.toString(id.internalGetIndex()) : "null"; } @Override diff --git a/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/integer/ArrayModifiableIntegerDBIDs.java b/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/integer/ArrayModifiableIntegerDBIDs.java index 835bcd8d..8aa6813c 100644 --- a/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/integer/ArrayModifiableIntegerDBIDs.java +++ b/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/integer/ArrayModifiableIntegerDBIDs.java @@ -37,6 +37,7 @@ import de.lmu.ifi.dbs.elki.database.ids.DBIDs; * Class using a primitive int[] array as storage. * * @author Erich Schubert + * @since 0.6.0 */ class ArrayModifiableIntegerDBIDs implements ArrayModifiableDBIDs, IntegerArrayDBIDs { /** @@ -271,7 +272,7 @@ class ArrayModifiableIntegerDBIDs implements ArrayModifiableDBIDs, IntegerArrayD } @Override - public void pop(DBIDVar var) { + public DBIDVar pop(DBIDVar var) { if(size == 0) { throw new ArrayIndexOutOfBoundsException("Cannot pop() from an empty array."); } @@ -282,6 +283,7 @@ class ArrayModifiableIntegerDBIDs implements ArrayModifiableDBIDs, IntegerArrayD // less efficient, involves object creation. var.set(get(--size)); } + return var; } @Override diff --git a/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/integer/ArrayStaticIntegerDBIDs.java b/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/integer/ArrayStaticIntegerDBIDs.java index 210dbb15..fb171416 100644 --- a/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/integer/ArrayStaticIntegerDBIDs.java +++ b/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/integer/ArrayStaticIntegerDBIDs.java @@ -36,6 +36,7 @@ import de.lmu.ifi.dbs.elki.logging.LoggingUtil; * Static (no modifications allowed) set of Database Object IDs. * * @author Erich Schubert + * @since 0.4.0 */ class ArrayStaticIntegerDBIDs implements IntegerArrayStaticDBIDs { /** diff --git a/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/integer/DoubleIntegerDBIDKNNHeap.java b/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/integer/DoubleIntegerDBIDKNNHeap.java index 7162dbc2..1fe22b71 100644 --- a/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/integer/DoubleIntegerDBIDKNNHeap.java +++ b/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/integer/DoubleIntegerDBIDKNNHeap.java @@ -34,6 +34,7 @@ import de.lmu.ifi.dbs.elki.utilities.datastructures.heap.DoubleIntegerMaxHeap; * Class to efficiently manage a kNN heap. * * @author Erich Schubert + * @since 0.6.0 * * @apiviz.has DoubleIntegerDBIDKNNList * @apiviz.composedOf DoubleIntegerMaxHeap diff --git a/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/integer/DoubleIntegerDBIDKNNList.java b/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/integer/DoubleIntegerDBIDKNNList.java index 449497d1..e0e891e3 100644 --- a/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/integer/DoubleIntegerDBIDKNNList.java +++ b/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/integer/DoubleIntegerDBIDKNNList.java @@ -29,6 +29,7 @@ import de.lmu.ifi.dbs.elki.database.ids.DoubleDBIDListIter; * the results to be sorted! * * @author Erich Schubert + * @since 0.6.0 */ public class DoubleIntegerDBIDKNNList extends DoubleIntegerDBIDList implements IntegerDBIDKNNList { /** diff --git a/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/integer/DoubleIntegerDBIDList.java b/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/integer/DoubleIntegerDBIDList.java index 6f551189..9c97f779 100644 --- a/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/integer/DoubleIntegerDBIDList.java +++ b/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/integer/DoubleIntegerDBIDList.java @@ -33,6 +33,7 @@ import de.lmu.ifi.dbs.elki.utilities.datastructures.arrays.DoubleIntegerArrayQui * Class to store double distance, integer DBID results. * * @author Erich Schubert + * @since 0.6.0 * * @apiviz.uses DoubleIntegerArrayQuickSort */ diff --git a/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/integer/DoubleIntegerDBIDListIter.java b/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/integer/DoubleIntegerDBIDListIter.java index 0cd7f33a..f944df03 100644 --- a/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/integer/DoubleIntegerDBIDListIter.java +++ b/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/integer/DoubleIntegerDBIDListIter.java @@ -28,6 +28,7 @@ import de.lmu.ifi.dbs.elki.database.ids.DoubleDBIDListIter; * Combination interface of the DoubleDBIDListIter with IntegerDBIDIter. * * @author Erich Schubert + * @since 0.7.0 */ public interface DoubleIntegerDBIDListIter extends DoubleDBIDListIter, IntegerDBIDIter { // No additional methods. diff --git a/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/integer/DoubleIntegerDBIDListKNNHeap.java b/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/integer/DoubleIntegerDBIDListKNNHeap.java index 82c0f184..4ddf7ba3 100644 --- a/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/integer/DoubleIntegerDBIDListKNNHeap.java +++ b/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/integer/DoubleIntegerDBIDListKNNHeap.java @@ -33,6 +33,7 @@ import de.lmu.ifi.dbs.elki.database.ids.KNNList; * order. * * @author Erich Schubert + * @since 0.6.0 */ class DoubleIntegerDBIDListKNNHeap extends DoubleIntegerDBIDKNNList implements KNNHeap { /** diff --git a/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/integer/DoubleIntegerDBIDListMIter.java b/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/integer/DoubleIntegerDBIDListMIter.java index 59824d85..d46b2952 100644 --- a/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/integer/DoubleIntegerDBIDListMIter.java +++ b/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/integer/DoubleIntegerDBIDListMIter.java @@ -29,6 +29,7 @@ import de.lmu.ifi.dbs.elki.database.ids.DoubleDBIDListMIter; * Combination interface for modifiable iterators. * * @author Erich Schubert + * @since 0.4.0 */ interface DoubleIntegerDBIDListMIter extends DoubleIntegerDBIDListIter, DoubleDBIDListMIter { diff --git a/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/integer/DoubleIntegerDBIDPair.java b/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/integer/DoubleIntegerDBIDPair.java index 7cb247ce..f18ab125 100644 --- a/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/integer/DoubleIntegerDBIDPair.java +++ b/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/integer/DoubleIntegerDBIDPair.java @@ -29,6 +29,7 @@ import de.lmu.ifi.dbs.elki.database.ids.DoubleDBIDPair; * Pair containing a double value and an integer DBID. * * @author Erich Schubert + * @since 0.4.0 */ class DoubleIntegerDBIDPair implements DoubleDBIDPair, IntegerDBIDRef { /** diff --git a/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/integer/DoubleIntegerDBIDPairKNNListHeap.java b/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/integer/DoubleIntegerDBIDPairKNNListHeap.java index ee06d7fa..eb2c8267 100644 --- a/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/integer/DoubleIntegerDBIDPairKNNListHeap.java +++ b/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/integer/DoubleIntegerDBIDPairKNNListHeap.java @@ -37,6 +37,7 @@ import de.lmu.ifi.dbs.elki.database.ids.KNNList; * Currently unused, needs benchmarking. * * @author Erich Schubert + * @since 0.6.0 * * @apiviz.composedOf DoubleIntegerDBIDPair */ diff --git a/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/integer/DoubleIntegerDBIDPairList.java b/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/integer/DoubleIntegerDBIDPairList.java index 990e572f..593ba6ed 100644 --- a/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/integer/DoubleIntegerDBIDPairList.java +++ b/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/integer/DoubleIntegerDBIDPairList.java @@ -36,6 +36,7 @@ import de.lmu.ifi.dbs.elki.database.ids.ModifiableDoubleDBIDList; * Currently unused. Needs benchmarking. * * @author Erich Schubert + * @since 0.6.0 */ class DoubleIntegerDBIDPairList implements ModifiableDoubleDBIDList, IntegerDBIDs { /** diff --git a/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/integer/IntegerArrayDBIDs.java b/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/integer/IntegerArrayDBIDs.java index 4afc942a..3f93a4b9 100644 --- a/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/integer/IntegerArrayDBIDs.java +++ b/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/integer/IntegerArrayDBIDs.java @@ -29,6 +29,7 @@ import de.lmu.ifi.dbs.elki.database.ids.ArrayDBIDs; * Trivial combination interface. * * @author Erich Schubert + * @since 0.4.0 */ public interface IntegerArrayDBIDs extends IntegerDBIDs, ArrayDBIDs { @Override diff --git a/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/integer/IntegerArrayStaticDBIDs.java b/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/integer/IntegerArrayStaticDBIDs.java index fac20bca..c3ba28da 100644 --- a/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/integer/IntegerArrayStaticDBIDs.java +++ b/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/integer/IntegerArrayStaticDBIDs.java @@ -29,6 +29,7 @@ import de.lmu.ifi.dbs.elki.database.ids.ArrayStaticDBIDs; * Combination of {@link ArrayStaticDBIDs} and {@link IntegerDBIDs}. * * @author Erich Schubert + * @since 0.4.0 */ interface IntegerArrayStaticDBIDs extends ArrayStaticDBIDs, IntegerArrayDBIDs { @Override diff --git a/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/integer/IntegerDBID.java b/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/integer/IntegerDBID.java index bdc5196b..11cc8c07 100644 --- a/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/integer/IntegerDBID.java +++ b/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/integer/IntegerDBID.java @@ -48,6 +48,7 @@ import de.lmu.ifi.dbs.elki.utilities.io.FixedSizeByteBufferSerializer; * consistent across multiple results/databases. * * @author Erich Schubert + * @since 0.4.0 * * @apiviz.composedOf DynamicSerializer * @apiviz.composedOf StaticSerializer @@ -100,7 +101,7 @@ final class IntegerDBID implements DBID, IntegerDBIDRef { @Override public String toString() { - return Integer.toString(id); + return (id != Integer.MIN_VALUE) ? Integer.toString(id) : "null"; } @Override @@ -111,11 +112,11 @@ final class IntegerDBID implements DBID, IntegerDBIDRef { @Override @Deprecated public boolean equals(Object obj) { - if (this == obj) { + if(this == obj) { return true; } - if (!(obj instanceof IntegerDBID)) { - if (obj instanceof DBIDRef) { + if(!(obj instanceof IntegerDBID)) { + if(obj instanceof DBIDRef) { LoggingUtil.warning("Programming error: DBID.equals(DBIDRef) is not well-defined. Use DBIDUtil.equal() instead!", new Throwable()); } return false; @@ -137,7 +138,7 @@ final class IntegerDBID implements DBID, IntegerDBIDRef { @Override public DBID get(int i) { - if (i != 0) { + if(i != 0) { throw new ArrayIndexOutOfBoundsException(); } return this; @@ -145,7 +146,7 @@ final class IntegerDBID implements DBID, IntegerDBIDRef { @Override public DBIDVar assignVar(int index, DBIDVar var) { - if (index != 0) { + if(index != 0) { throw new ArrayIndexOutOfBoundsException(); } var.set(this); @@ -165,9 +166,10 @@ final class IntegerDBID implements DBID, IntegerDBIDRef { @Override public ArrayDBIDs slice(int begin, int end) { - if (begin == 0 && end == 1) { + if(begin == 0 && end == 1) { return this; - } else { + } + else { return DBIDUtil.EMPTYDBIDS; } } @@ -232,7 +234,7 @@ final class IntegerDBID implements DBID, IntegerDBIDRef { @Override public boolean equals(Object other) { - if (other instanceof DBID) { + if(other instanceof DBID) { LoggingUtil.warning("Programming error detected: DBIDItr.equals(DBID). Use sameDBID()!", new Throwable()); } return super.equals(other); diff --git a/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/integer/IntegerDBIDArrayIter.java b/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/integer/IntegerDBIDArrayIter.java index f0ac9928..4b120c8c 100644 --- a/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/integer/IntegerDBIDArrayIter.java +++ b/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/integer/IntegerDBIDArrayIter.java @@ -28,6 +28,7 @@ import de.lmu.ifi.dbs.elki.database.ids.DBIDArrayIter; * Modifiable integer array iterator. * * @author Erich Schubert + * @since 0.4.0 */ interface IntegerDBIDArrayIter extends IntegerDBIDIter, DBIDArrayIter { // Empty diff --git a/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/integer/IntegerDBIDArrayMIter.java b/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/integer/IntegerDBIDArrayMIter.java index c9234060..946484ec 100644 --- a/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/integer/IntegerDBIDArrayMIter.java +++ b/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/integer/IntegerDBIDArrayMIter.java @@ -28,6 +28,7 @@ import de.lmu.ifi.dbs.elki.database.ids.DBIDArrayMIter; * Modifiable integer array iterator. * * @author Erich Schubert + * @since 0.4.0 */ interface IntegerDBIDArrayMIter extends IntegerDBIDArrayIter, IntegerDBIDMIter, DBIDArrayMIter { // Empty diff --git a/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/integer/IntegerDBIDArrayQuickSort.java b/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/integer/IntegerDBIDArrayQuickSort.java index bfbde351..7e020554 100644 --- a/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/integer/IntegerDBIDArrayQuickSort.java +++ b/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/integer/IntegerDBIDArrayQuickSort.java @@ -41,6 +41,7 @@ import de.lmu.ifi.dbs.elki.utilities.documentation.Reference; * </p> * * @author Erich Schubert + * @since 0.5.5 * * @apiviz.uses IntegerArrayDBIDs */ diff --git a/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/integer/IntegerDBIDIter.java b/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/integer/IntegerDBIDIter.java index 687a64b2..08b7fa01 100644 --- a/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/integer/IntegerDBIDIter.java +++ b/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/integer/IntegerDBIDIter.java @@ -28,6 +28,7 @@ import de.lmu.ifi.dbs.elki.database.ids.DBIDIter; * Iterator for integer DBIDs. * * @author Erich Schubert + * @since 0.4.0 * * @apiviz.landmark */ diff --git a/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/integer/IntegerDBIDKNNList.java b/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/integer/IntegerDBIDKNNList.java index 3fb0d381..c71253de 100644 --- a/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/integer/IntegerDBIDKNNList.java +++ b/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/integer/IntegerDBIDKNNList.java @@ -29,6 +29,7 @@ import de.lmu.ifi.dbs.elki.database.ids.KNNList; * Combination interface for KNNList and IntegerDBIDs. * * @author Erich Schubert + * @since 0.7.0 */ public interface IntegerDBIDKNNList extends KNNList, DoubleDBIDList, IntegerDBIDs { @Override diff --git a/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/integer/IntegerDBIDKNNSubList.java b/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/integer/IntegerDBIDKNNSubList.java index 4d1095e0..ac050ab9 100644 --- a/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/integer/IntegerDBIDKNNSubList.java +++ b/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/integer/IntegerDBIDKNNSubList.java @@ -31,6 +31,7 @@ import de.lmu.ifi.dbs.elki.database.ids.DoubleDBIDPair; * Sublist of an existing result to contain only the first k elements. * * @author Erich Schubert + * @since 0.5.5 */ public class IntegerDBIDKNNSubList implements IntegerDBIDKNNList { /** diff --git a/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/integer/IntegerDBIDMIter.java b/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/integer/IntegerDBIDMIter.java index 6bf1cffd..bf6bfcd8 100644 --- a/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/integer/IntegerDBIDMIter.java +++ b/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/integer/IntegerDBIDMIter.java @@ -28,6 +28,7 @@ import de.lmu.ifi.dbs.elki.database.ids.DBIDMIter; * Modifiable iterator interface for integer DBIDs. * * @author Erich Schubert + * @since 0.4.0 */ interface IntegerDBIDMIter extends DBIDMIter, IntegerDBIDIter { // Empty. diff --git a/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/integer/IntegerDBIDPair.java b/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/integer/IntegerDBIDPair.java index cd50f00e..5ed718d3 100644 --- a/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/integer/IntegerDBIDPair.java +++ b/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/integer/IntegerDBIDPair.java @@ -34,6 +34,7 @@ import de.lmu.ifi.dbs.elki.database.ids.DBIDVar; * DBID pair using two ints for storage. * * @author Erich Schubert + * @since 0.4.0 */ class IntegerDBIDPair implements DBIDPair, IntegerDBIDs { /** diff --git a/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/integer/IntegerDBIDRange.java b/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/integer/IntegerDBIDRange.java index 2b790fb5..b7a21419 100644 --- a/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/integer/IntegerDBIDRange.java +++ b/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/integer/IntegerDBIDRange.java @@ -36,6 +36,7 @@ import de.lmu.ifi.dbs.elki.database.ids.SetDBIDs; * Representing a DBID range allocation. * * @author Erich Schubert + * @since 0.4.0 */ final class IntegerDBIDRange implements IntegerDBIDs, DBIDRange, SetDBIDs { /** diff --git a/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/integer/IntegerDBIDRef.java b/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/integer/IntegerDBIDRef.java index da21b007..e2cb0b2e 100644 --- a/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/integer/IntegerDBIDRef.java +++ b/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/integer/IntegerDBIDRef.java @@ -29,6 +29,7 @@ import de.lmu.ifi.dbs.elki.database.ids.DBIDRef; * DBID reference that references an integer value. * * @author Erich Schubert + * @since 0.4.0 * * @apiviz.landmark */ diff --git a/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/integer/IntegerDBIDVar.java b/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/integer/IntegerDBIDVar.java index 12e320e9..b2721a20 100644 --- a/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/integer/IntegerDBIDVar.java +++ b/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/integer/IntegerDBIDVar.java @@ -40,6 +40,7 @@ import de.lmu.ifi.dbs.elki.logging.LoggingUtil; * should come for free! * * @author Erich Schubert + * @since 0.4.0 */ class IntegerDBIDVar implements DBIDVar, IntegerDBIDs { /** @@ -165,7 +166,7 @@ class IntegerDBIDVar implements DBIDVar, IntegerDBIDs { @Override public String toString() { - return Integer.toString(id); + return (id != Integer.MIN_VALUE) ? Integer.toString(id) : "null"; } @Override diff --git a/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/integer/IntegerDBIDs.java b/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/integer/IntegerDBIDs.java index 3146f829..50c2b950 100644 --- a/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/integer/IntegerDBIDs.java +++ b/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/integer/IntegerDBIDs.java @@ -28,6 +28,7 @@ import de.lmu.ifi.dbs.elki.database.ids.DBIDs; * Integer DBID collection. * * @author Erich Schubert + * @since 0.4.0 * * @apiviz.has IntegerDBIDIter */ diff --git a/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/integer/ReusingDBIDFactory.java b/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/integer/ReusingDBIDFactory.java index 02819f0f..ac4715a8 100644 --- a/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/integer/ReusingDBIDFactory.java +++ b/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/integer/ReusingDBIDFactory.java @@ -40,6 +40,7 @@ import de.lmu.ifi.dbs.elki.logging.Logging; * TODO: manage fragmentation of ranges? * * @author Erich Schubert + * @since 0.4.0 * * @apiviz.stereotype factory */ diff --git a/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/integer/SimpleDBIDFactory.java b/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/integer/SimpleDBIDFactory.java index b49ab39a..99b96b03 100644 --- a/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/integer/SimpleDBIDFactory.java +++ b/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/integer/SimpleDBIDFactory.java @@ -34,6 +34,7 @@ import de.lmu.ifi.dbs.elki.utilities.exceptions.AbortException; * negative values. * * @author Erich Schubert + * @since 0.4.0 * * @apiviz.landmark * @apiviz.stereotype factory diff --git a/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/integer/TrivialDBIDFactory.java b/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/integer/TrivialDBIDFactory.java index c3e77e99..e9c3b30c 100644 --- a/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/integer/TrivialDBIDFactory.java +++ b/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/integer/TrivialDBIDFactory.java @@ -35,6 +35,7 @@ import de.lmu.ifi.dbs.elki.utilities.exceptions.AbortException; * sequence. All IDs will be positive. * * @author Erich Schubert + * @since 0.4.0 * * @apiviz.landmark * @apiviz.stereotype factory diff --git a/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/integer/TroveHashSetModifiableDBIDs.java b/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/integer/TroveHashSetModifiableDBIDs.java index 2fc54afd..912a501b 100644 --- a/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/integer/TroveHashSetModifiableDBIDs.java +++ b/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/integer/TroveHashSetModifiableDBIDs.java @@ -40,6 +40,7 @@ import de.lmu.ifi.dbs.elki.utilities.datastructures.iterator.Iter; * Implementation using GNU Trove Int Hash Sets. * * @author Erich Schubert + * @since 0.4.0 * * @apiviz.has Itr */ @@ -158,7 +159,7 @@ class TroveHashSetModifiableDBIDs implements HashSetModifiableDBIDs, IntegerDBID } @Override - public void pop(DBIDVar outvar) { + public DBIDVar pop(DBIDVar outvar) { if(store.size() == 0) { throw new ArrayIndexOutOfBoundsException("Cannot pop() from an empty array."); } @@ -167,9 +168,8 @@ class TroveHashSetModifiableDBIDs implements HashSetModifiableDBIDs, IntegerDBID while(i-- > 0 && (states[i] != TPrimitiveHash.FULL)) { ; // Not occupied. Continue } - if(i < 0) { - outvar.unset(); - return; + if(i < 0) { // Should never happen because size > 0 + throw new ArrayIndexOutOfBoundsException("Cannot pop() from an empty array."); } final int val = store._set[i]; if(outvar instanceof IntegerDBIDVar) { @@ -180,6 +180,7 @@ class TroveHashSetModifiableDBIDs implements HashSetModifiableDBIDs, IntegerDBID } // Unfortunately, not visible: store.removeAt(i); store.remove(val); + return outvar; } /** diff --git a/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/integer/UnmodifiableIntegerArrayDBIDs.java b/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/integer/UnmodifiableIntegerArrayDBIDs.java index b7c1fb87..402b780e 100644 --- a/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/integer/UnmodifiableIntegerArrayDBIDs.java +++ b/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/integer/UnmodifiableIntegerArrayDBIDs.java @@ -33,6 +33,7 @@ import de.lmu.ifi.dbs.elki.database.ids.DBIDVar; * Unmodifiable wrapper for DBIDs. * * @author Erich Schubert + * @since 0.4.0 * * @apiviz.uses IntegerArrayDBIDs * @apiviz.has UnmodifiableDBIDIter diff --git a/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/integer/UnmodifiableIntegerDBIDs.java b/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/integer/UnmodifiableIntegerDBIDs.java index 2c4ad2f6..cd48f2b3 100644 --- a/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/integer/UnmodifiableIntegerDBIDs.java +++ b/elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/integer/UnmodifiableIntegerDBIDs.java @@ -32,6 +32,7 @@ import de.lmu.ifi.dbs.elki.database.ids.StaticDBIDs; * Unmodifiable wrapper for DBIDs. * * @author Erich Schubert + * @since 0.4.0 * * @apiviz.uses IntegerDBIDs * @apiviz.has UnmodifiableDBIDIter diff --git a/elki/src/main/java/de/lmu/ifi/dbs/elki/database/query/DatabaseQuery.java b/elki/src/main/java/de/lmu/ifi/dbs/elki/database/query/DatabaseQuery.java index 703f0abd..f37694fe 100644 --- a/elki/src/main/java/de/lmu/ifi/dbs/elki/database/query/DatabaseQuery.java +++ b/elki/src/main/java/de/lmu/ifi/dbs/elki/database/query/DatabaseQuery.java @@ -29,6 +29,7 @@ package de.lmu.ifi.dbs.elki.database.query; * Will only contain elemental stuff such as some hints. * * @author Erich Schubert + * @since 0.4.0 * * @apiviz.landmark */ diff --git a/elki/src/main/java/de/lmu/ifi/dbs/elki/database/query/DistanceSimilarityQuery.java b/elki/src/main/java/de/lmu/ifi/dbs/elki/database/query/DistanceSimilarityQuery.java index 5f0ea430..aae16b79 100644 --- a/elki/src/main/java/de/lmu/ifi/dbs/elki/database/query/DistanceSimilarityQuery.java +++ b/elki/src/main/java/de/lmu/ifi/dbs/elki/database/query/DistanceSimilarityQuery.java @@ -31,6 +31,7 @@ import de.lmu.ifi.dbs.elki.database.query.similarity.SimilarityQuery; * combined implementations of both. * * @author Erich Schubert + * @since 0.4.0 * * @param <O> Object type */ diff --git a/elki/src/main/java/de/lmu/ifi/dbs/elki/database/query/LinearScanQuery.java b/elki/src/main/java/de/lmu/ifi/dbs/elki/database/query/LinearScanQuery.java index ad580c97..fa4b43b7 100644 --- a/elki/src/main/java/de/lmu/ifi/dbs/elki/database/query/LinearScanQuery.java +++ b/elki/src/main/java/de/lmu/ifi/dbs/elki/database/query/LinearScanQuery.java @@ -28,6 +28,7 @@ package de.lmu.ifi.dbs.elki.database.query; * Marker interface for linear scan (slow, non-accelerated) queries. * * @author Erich Schubert + * @since 0.4.0 * * @apiviz.uses de.lmu.ifi.dbs.elki.database.Database */ diff --git a/elki/src/main/java/de/lmu/ifi/dbs/elki/database/query/distance/AbstractDatabaseDistanceQuery.java b/elki/src/main/java/de/lmu/ifi/dbs/elki/database/query/distance/AbstractDatabaseDistanceQuery.java index f37c7cc7..a52da9af 100644 --- a/elki/src/main/java/de/lmu/ifi/dbs/elki/database/query/distance/AbstractDatabaseDistanceQuery.java +++ b/elki/src/main/java/de/lmu/ifi/dbs/elki/database/query/distance/AbstractDatabaseDistanceQuery.java @@ -30,6 +30,7 @@ import de.lmu.ifi.dbs.elki.database.relation.Relation; * Run a database query in a database context. * * @author Erich Schubert + * @since 0.4.0 * * @param <O> Database object type. */ diff --git a/elki/src/main/java/de/lmu/ifi/dbs/elki/database/query/distance/AbstractDistanceQuery.java b/elki/src/main/java/de/lmu/ifi/dbs/elki/database/query/distance/AbstractDistanceQuery.java index b6ea580a..77aeccb4 100644 --- a/elki/src/main/java/de/lmu/ifi/dbs/elki/database/query/distance/AbstractDistanceQuery.java +++ b/elki/src/main/java/de/lmu/ifi/dbs/elki/database/query/distance/AbstractDistanceQuery.java @@ -31,6 +31,7 @@ import de.lmu.ifi.dbs.elki.database.relation.Relation; * distances. * * @author Erich Schubert + * @since 0.4.0 * * @param O Input object type */ diff --git a/elki/src/main/java/de/lmu/ifi/dbs/elki/database/query/distance/DBIDDistanceQuery.java b/elki/src/main/java/de/lmu/ifi/dbs/elki/database/query/distance/DBIDDistanceQuery.java index 2cb55529..3185376b 100644 --- a/elki/src/main/java/de/lmu/ifi/dbs/elki/database/query/distance/DBIDDistanceQuery.java +++ b/elki/src/main/java/de/lmu/ifi/dbs/elki/database/query/distance/DBIDDistanceQuery.java @@ -32,6 +32,7 @@ import de.lmu.ifi.dbs.elki.distance.distancefunction.DBIDDistanceFunction; * Run a distance query based on DBIDs * * @author Erich Schubert + * @since 0.4.0 * * @apiviz.landmark * @apiviz.uses DBIDDistanceFunction diff --git a/elki/src/main/java/de/lmu/ifi/dbs/elki/database/query/distance/DBIDRangeDistanceQuery.java b/elki/src/main/java/de/lmu/ifi/dbs/elki/database/query/distance/DBIDRangeDistanceQuery.java index 5976d247..70c17202 100644 --- a/elki/src/main/java/de/lmu/ifi/dbs/elki/database/query/distance/DBIDRangeDistanceQuery.java +++ b/elki/src/main/java/de/lmu/ifi/dbs/elki/database/query/distance/DBIDRangeDistanceQuery.java @@ -35,6 +35,7 @@ import de.lmu.ifi.dbs.elki.distance.distancefunction.DBIDRangeDistanceFunction; * Run a distance query based on DBIDRanges * * @author Erich Schubert + * @since 0.4.0 * * @apiviz.landmark * @apiviz.uses DBIDRangeDistanceFunction @@ -59,6 +60,7 @@ public class DBIDRangeDistanceQuery extends DBIDDistanceQuery { public DBIDRangeDistanceQuery(Relation<DBID> relation, DBIDRangeDistanceFunction distanceFunction) { super(relation, distanceFunction); this.range = DBIDUtil.assertRange(relation.getDBIDs()); + distanceFunction.checkRange(this.range); this.distanceFunction = distanceFunction; } diff --git a/elki/src/main/java/de/lmu/ifi/dbs/elki/database/query/distance/DistanceQuery.java b/elki/src/main/java/de/lmu/ifi/dbs/elki/database/query/distance/DistanceQuery.java index c1ce98a1..6eac7fa8 100644 --- a/elki/src/main/java/de/lmu/ifi/dbs/elki/database/query/distance/DistanceQuery.java +++ b/elki/src/main/java/de/lmu/ifi/dbs/elki/database/query/distance/DistanceQuery.java @@ -33,6 +33,7 @@ import de.lmu.ifi.dbs.elki.distance.distancefunction.DistanceFunction; * distances. * * @author Erich Schubert + * @since 0.4.0 * * @apiviz.landmark * diff --git a/elki/src/main/java/de/lmu/ifi/dbs/elki/database/query/distance/PrimitiveDistanceQuery.java b/elki/src/main/java/de/lmu/ifi/dbs/elki/database/query/distance/PrimitiveDistanceQuery.java index 1dbd0dff..a91c7e43 100644 --- a/elki/src/main/java/de/lmu/ifi/dbs/elki/database/query/distance/PrimitiveDistanceQuery.java +++ b/elki/src/main/java/de/lmu/ifi/dbs/elki/database/query/distance/PrimitiveDistanceQuery.java @@ -31,6 +31,7 @@ import de.lmu.ifi.dbs.elki.distance.distancefunction.PrimitiveDistanceFunction; * Run a database query in a database context. * * @author Erich Schubert + * @since 0.4.0 * * @apiviz.landmark * @apiviz.uses PrimitiveDistanceFunction diff --git a/elki/src/main/java/de/lmu/ifi/dbs/elki/database/query/distance/PrimitiveDistanceSimilarityQuery.java b/elki/src/main/java/de/lmu/ifi/dbs/elki/database/query/distance/PrimitiveDistanceSimilarityQuery.java index ccea951b..bb2c7d8c 100644 --- a/elki/src/main/java/de/lmu/ifi/dbs/elki/database/query/distance/PrimitiveDistanceSimilarityQuery.java +++ b/elki/src/main/java/de/lmu/ifi/dbs/elki/database/query/distance/PrimitiveDistanceSimilarityQuery.java @@ -33,6 +33,7 @@ import de.lmu.ifi.dbs.elki.distance.similarityfunction.PrimitiveSimilarityFuncti * Combination query class, for convenience. * * @author Erich Schubert + * @since 0.4.0 * * @apiviz.uses PrimitiveSimilarityFunction * diff --git a/elki/src/main/java/de/lmu/ifi/dbs/elki/database/query/distance/SpatialDistanceQuery.java b/elki/src/main/java/de/lmu/ifi/dbs/elki/database/query/distance/SpatialDistanceQuery.java index 21e0deda..9ddc5bdb 100644 --- a/elki/src/main/java/de/lmu/ifi/dbs/elki/database/query/distance/SpatialDistanceQuery.java +++ b/elki/src/main/java/de/lmu/ifi/dbs/elki/database/query/distance/SpatialDistanceQuery.java @@ -31,6 +31,7 @@ import de.lmu.ifi.dbs.elki.distance.distancefunction.SpatialPrimitiveDistanceFun * Query interface for spatial distance queries. * * @author Erich Schubert + * @since 0.4.0 * * @param <V> Vector type */ diff --git a/elki/src/main/java/de/lmu/ifi/dbs/elki/database/query/distance/SpatialPrimitiveDistanceQuery.java b/elki/src/main/java/de/lmu/ifi/dbs/elki/database/query/distance/SpatialPrimitiveDistanceQuery.java index f7272014..50ff7992 100644 --- a/elki/src/main/java/de/lmu/ifi/dbs/elki/database/query/distance/SpatialPrimitiveDistanceQuery.java +++ b/elki/src/main/java/de/lmu/ifi/dbs/elki/database/query/distance/SpatialPrimitiveDistanceQuery.java @@ -31,6 +31,7 @@ import de.lmu.ifi.dbs.elki.distance.distancefunction.SpatialPrimitiveDistanceFun /** * Distance query for spatial distance functions * @author Erich Schubert + * @since 0.4.0 * * @apiviz.uses SpatialPrimitiveDistanceFunction * diff --git a/elki/src/main/java/de/lmu/ifi/dbs/elki/database/query/knn/AbstractDistanceKNNQuery.java b/elki/src/main/java/de/lmu/ifi/dbs/elki/database/query/knn/AbstractDistanceKNNQuery.java index 883e4e74..69856801 100644 --- a/elki/src/main/java/de/lmu/ifi/dbs/elki/database/query/knn/AbstractDistanceKNNQuery.java +++ b/elki/src/main/java/de/lmu/ifi/dbs/elki/database/query/knn/AbstractDistanceKNNQuery.java @@ -37,6 +37,7 @@ import de.lmu.ifi.dbs.elki.database.relation.Relation; * Instance for the query on a particular database. * * @author Erich Schubert + * @since 0.4.0 */ public abstract class AbstractDistanceKNNQuery<O> implements KNNQuery<O> { /** diff --git a/elki/src/main/java/de/lmu/ifi/dbs/elki/database/query/knn/KNNQuery.java b/elki/src/main/java/de/lmu/ifi/dbs/elki/database/query/knn/KNNQuery.java index 67010016..cf214a4e 100644 --- a/elki/src/main/java/de/lmu/ifi/dbs/elki/database/query/knn/KNNQuery.java +++ b/elki/src/main/java/de/lmu/ifi/dbs/elki/database/query/knn/KNNQuery.java @@ -34,6 +34,7 @@ import de.lmu.ifi.dbs.elki.database.query.DatabaseQuery; * The interface of an actual instance. * * @author Erich Schubert + * @since 0.4.0 * * @apiviz.landmark * @apiviz.has KNNList oneway - - «create» diff --git a/elki/src/main/java/de/lmu/ifi/dbs/elki/database/query/knn/LinearScanDistanceKNNQuery.java b/elki/src/main/java/de/lmu/ifi/dbs/elki/database/query/knn/LinearScanDistanceKNNQuery.java index 31e27242..8e362b56 100644 --- a/elki/src/main/java/de/lmu/ifi/dbs/elki/database/query/knn/LinearScanDistanceKNNQuery.java +++ b/elki/src/main/java/de/lmu/ifi/dbs/elki/database/query/knn/LinearScanDistanceKNNQuery.java @@ -39,6 +39,7 @@ import de.lmu.ifi.dbs.elki.database.query.distance.DistanceQuery; * Instance of this query for a particular database. * * @author Erich Schubert + * @since 0.4.0 * * @apiviz.landmark * @apiviz.has DistanceQuery diff --git a/elki/src/main/java/de/lmu/ifi/dbs/elki/database/query/knn/LinearScanEuclideanDistanceKNNQuery.java b/elki/src/main/java/de/lmu/ifi/dbs/elki/database/query/knn/LinearScanEuclideanDistanceKNNQuery.java index e4ca590d..807b194f 100644 --- a/elki/src/main/java/de/lmu/ifi/dbs/elki/database/query/knn/LinearScanEuclideanDistanceKNNQuery.java +++ b/elki/src/main/java/de/lmu/ifi/dbs/elki/database/query/knn/LinearScanEuclideanDistanceKNNQuery.java @@ -47,6 +47,7 @@ import de.lmu.ifi.dbs.elki.distance.distancefunction.minkowski.SquaredEuclideanD * retrieve the query object from the relation only once! * * @author Erich Schubert + * @since 0.4.0 * * @apiviz.uses PrimitiveDistanceQuery * @apiviz.uses EuclideanDistanceFunction diff --git a/elki/src/main/java/de/lmu/ifi/dbs/elki/database/query/knn/LinearScanPrimitiveDistanceKNNQuery.java b/elki/src/main/java/de/lmu/ifi/dbs/elki/database/query/knn/LinearScanPrimitiveDistanceKNNQuery.java index ccb52533..a1234a43 100644 --- a/elki/src/main/java/de/lmu/ifi/dbs/elki/database/query/knn/LinearScanPrimitiveDistanceKNNQuery.java +++ b/elki/src/main/java/de/lmu/ifi/dbs/elki/database/query/knn/LinearScanPrimitiveDistanceKNNQuery.java @@ -44,6 +44,7 @@ import de.lmu.ifi.dbs.elki.distance.distancefunction.PrimitiveDistanceFunction; * retrieve the query object from the relation only once! * * @author Erich Schubert + * @since 0.4.0 * * @apiviz.uses PrimitiveDistanceQuery * @apiviz.uses PrimitiveDistanceFunction diff --git a/elki/src/main/java/de/lmu/ifi/dbs/elki/database/query/knn/PreprocessorKNNQuery.java b/elki/src/main/java/de/lmu/ifi/dbs/elki/database/query/knn/PreprocessorKNNQuery.java index 6a851b80..10957258 100644 --- a/elki/src/main/java/de/lmu/ifi/dbs/elki/database/query/knn/PreprocessorKNNQuery.java +++ b/elki/src/main/java/de/lmu/ifi/dbs/elki/database/query/knn/PreprocessorKNNQuery.java @@ -41,6 +41,7 @@ import de.lmu.ifi.dbs.elki.utilities.exceptions.AbortException; * Instance for a particular database, invoking the preprocessor. * * @author Erich Schubert + * @since 0.4.0 * * @param <O> Data object type */ diff --git a/elki/src/main/java/de/lmu/ifi/dbs/elki/database/query/range/AbstractDistanceRangeQuery.java b/elki/src/main/java/de/lmu/ifi/dbs/elki/database/query/range/AbstractDistanceRangeQuery.java index af121f59..809ccf25 100644 --- a/elki/src/main/java/de/lmu/ifi/dbs/elki/database/query/range/AbstractDistanceRangeQuery.java +++ b/elki/src/main/java/de/lmu/ifi/dbs/elki/database/query/range/AbstractDistanceRangeQuery.java @@ -35,6 +35,7 @@ import de.lmu.ifi.dbs.elki.database.relation.Relation; * instance * * @author Erich Schubert + * @since 0.4.0 * * @param <O> Database object type */ diff --git a/elki/src/main/java/de/lmu/ifi/dbs/elki/database/query/range/LinearScanDistanceRangeQuery.java b/elki/src/main/java/de/lmu/ifi/dbs/elki/database/query/range/LinearScanDistanceRangeQuery.java index 809d563b..bab6521c 100644 --- a/elki/src/main/java/de/lmu/ifi/dbs/elki/database/query/range/LinearScanDistanceRangeQuery.java +++ b/elki/src/main/java/de/lmu/ifi/dbs/elki/database/query/range/LinearScanDistanceRangeQuery.java @@ -35,6 +35,7 @@ import de.lmu.ifi.dbs.elki.database.query.distance.DistanceQuery; * Default linear scan range query class. * * @author Erich Schubert + * @since 0.4.0 * * @apiviz.landmark * @apiviz.has DistanceQuery diff --git a/elki/src/main/java/de/lmu/ifi/dbs/elki/database/query/range/LinearScanEuclideanDistanceRangeQuery.java b/elki/src/main/java/de/lmu/ifi/dbs/elki/database/query/range/LinearScanEuclideanDistanceRangeQuery.java index d89b3b60..74e0bc6b 100644 --- a/elki/src/main/java/de/lmu/ifi/dbs/elki/database/query/range/LinearScanEuclideanDistanceRangeQuery.java +++ b/elki/src/main/java/de/lmu/ifi/dbs/elki/database/query/range/LinearScanEuclideanDistanceRangeQuery.java @@ -37,6 +37,7 @@ import de.lmu.ifi.dbs.elki.distance.distancefunction.minkowski.SquaredEuclideanD * Optimized linear scan for Euclidean distance range queries. * * @author Erich Schubert + * @since 0.4.0 * * @apiviz.uses SquaredEuclideanDistanceFunction * diff --git a/elki/src/main/java/de/lmu/ifi/dbs/elki/database/query/range/LinearScanPrimitiveDistanceRangeQuery.java b/elki/src/main/java/de/lmu/ifi/dbs/elki/database/query/range/LinearScanPrimitiveDistanceRangeQuery.java index 80828bd8..aff636fa 100644 --- a/elki/src/main/java/de/lmu/ifi/dbs/elki/database/query/range/LinearScanPrimitiveDistanceRangeQuery.java +++ b/elki/src/main/java/de/lmu/ifi/dbs/elki/database/query/range/LinearScanPrimitiveDistanceRangeQuery.java @@ -39,6 +39,7 @@ import de.lmu.ifi.dbs.elki.distance.distancefunction.PrimitiveDistanceFunction; * once from the relation. * * @author Erich Schubert + * @since 0.4.0 * * @apiviz.uses PrimitiveDistanceQuery * diff --git a/elki/src/main/java/de/lmu/ifi/dbs/elki/database/query/range/RangeQuery.java b/elki/src/main/java/de/lmu/ifi/dbs/elki/database/query/range/RangeQuery.java index 3dfe9c5e..f5cf8525 100644 --- a/elki/src/main/java/de/lmu/ifi/dbs/elki/database/query/range/RangeQuery.java +++ b/elki/src/main/java/de/lmu/ifi/dbs/elki/database/query/range/RangeQuery.java @@ -36,6 +36,7 @@ import de.lmu.ifi.dbs.elki.database.query.DatabaseQuery; * called "range queries". * * @author Erich Schubert + * @since 0.4.0 * * @apiviz.landmark * @apiviz.uses DoubleDBIDList oneway - - «create» diff --git a/elki/src/main/java/de/lmu/ifi/dbs/elki/database/query/rknn/AbstractRKNNQuery.java b/elki/src/main/java/de/lmu/ifi/dbs/elki/database/query/rknn/AbstractRKNNQuery.java index 32d19c76..36550fe4 100644 --- a/elki/src/main/java/de/lmu/ifi/dbs/elki/database/query/rknn/AbstractRKNNQuery.java +++ b/elki/src/main/java/de/lmu/ifi/dbs/elki/database/query/rknn/AbstractRKNNQuery.java @@ -32,6 +32,7 @@ import de.lmu.ifi.dbs.elki.database.relation.Relation; * Instance for the query on a particular database. * * @author Erich Schubert + * @since 0.4.0 */ public abstract class AbstractRKNNQuery<O> implements RKNNQuery<O> { /** diff --git a/elki/src/main/java/de/lmu/ifi/dbs/elki/database/query/rknn/LinearScanRKNNQuery.java b/elki/src/main/java/de/lmu/ifi/dbs/elki/database/query/rknn/LinearScanRKNNQuery.java index 60a64552..bd16a8a1 100644 --- a/elki/src/main/java/de/lmu/ifi/dbs/elki/database/query/rknn/LinearScanRKNNQuery.java +++ b/elki/src/main/java/de/lmu/ifi/dbs/elki/database/query/rknn/LinearScanRKNNQuery.java @@ -42,6 +42,7 @@ import de.lmu.ifi.dbs.elki.database.query.knn.KNNQuery; * Default linear scan RKNN query class. * * @author Erich Schubert + * @since 0.4.0 * * @apiviz.landmark * @apiviz.has KNNQuery diff --git a/elki/src/main/java/de/lmu/ifi/dbs/elki/database/query/rknn/PreprocessorRKNNQuery.java b/elki/src/main/java/de/lmu/ifi/dbs/elki/database/query/rknn/PreprocessorRKNNQuery.java index 2f971854..4be95a39 100644 --- a/elki/src/main/java/de/lmu/ifi/dbs/elki/database/query/rknn/PreprocessorRKNNQuery.java +++ b/elki/src/main/java/de/lmu/ifi/dbs/elki/database/query/rknn/PreprocessorRKNNQuery.java @@ -39,6 +39,7 @@ import de.lmu.ifi.dbs.elki.utilities.exceptions.AbortException; * Instance for a particular database, invoking the preprocessor. * * @author Elke Achtert + * @since 0.4.0 */ public class PreprocessorRKNNQuery<O> implements RKNNQuery<O> { /** diff --git a/elki/src/main/java/de/lmu/ifi/dbs/elki/database/query/rknn/RKNNQuery.java b/elki/src/main/java/de/lmu/ifi/dbs/elki/database/query/rknn/RKNNQuery.java index a0822585..c45aa782 100644 --- a/elki/src/main/java/de/lmu/ifi/dbs/elki/database/query/rknn/RKNNQuery.java +++ b/elki/src/main/java/de/lmu/ifi/dbs/elki/database/query/rknn/RKNNQuery.java @@ -34,6 +34,7 @@ import de.lmu.ifi.dbs.elki.database.query.DatabaseQuery; * Abstract reverse kNN Query interface. * * @author Erich Schubert + * @since 0.4.0 * * @apiviz.uses DoubleDBIDList oneway - - «create» * diff --git a/elki/src/main/java/de/lmu/ifi/dbs/elki/database/query/similarity/AbstractDBIDSimilarityQuery.java b/elki/src/main/java/de/lmu/ifi/dbs/elki/database/query/similarity/AbstractDBIDSimilarityQuery.java index 142d0577..f30c4cdb 100644 --- a/elki/src/main/java/de/lmu/ifi/dbs/elki/database/query/similarity/AbstractDBIDSimilarityQuery.java +++ b/elki/src/main/java/de/lmu/ifi/dbs/elki/database/query/similarity/AbstractDBIDSimilarityQuery.java @@ -30,6 +30,7 @@ import de.lmu.ifi.dbs.elki.database.relation.Relation; * Run a database query in a database context. * * @author Erich Schubert + * @since 0.4.0 * * @param <O> Database object type. */ diff --git a/elki/src/main/java/de/lmu/ifi/dbs/elki/database/query/similarity/AbstractSimilarityQuery.java b/elki/src/main/java/de/lmu/ifi/dbs/elki/database/query/similarity/AbstractSimilarityQuery.java index 44e10020..08b51dcc 100644 --- a/elki/src/main/java/de/lmu/ifi/dbs/elki/database/query/similarity/AbstractSimilarityQuery.java +++ b/elki/src/main/java/de/lmu/ifi/dbs/elki/database/query/similarity/AbstractSimilarityQuery.java @@ -31,6 +31,7 @@ import de.lmu.ifi.dbs.elki.database.relation.Relation; * similarity functions. * * @author Erich Schubert + * @since 0.4.0 * * @param <O> Input object type */ diff --git a/elki/src/main/java/de/lmu/ifi/dbs/elki/database/query/similarity/PrimitiveSimilarityQuery.java b/elki/src/main/java/de/lmu/ifi/dbs/elki/database/query/similarity/PrimitiveSimilarityQuery.java index b961222c..450f674e 100644 --- a/elki/src/main/java/de/lmu/ifi/dbs/elki/database/query/similarity/PrimitiveSimilarityQuery.java +++ b/elki/src/main/java/de/lmu/ifi/dbs/elki/database/query/similarity/PrimitiveSimilarityQuery.java @@ -31,6 +31,7 @@ import de.lmu.ifi.dbs.elki.distance.similarityfunction.PrimitiveSimilarityFuncti * Run a database query in a database context. * * @author Erich Schubert + * @since 0.4.0 * * @apiviz.has PrimitiveSimilarityFunction * diff --git a/elki/src/main/java/de/lmu/ifi/dbs/elki/database/query/similarity/SimilarityQuery.java b/elki/src/main/java/de/lmu/ifi/dbs/elki/database/query/similarity/SimilarityQuery.java index 9f9e2531..7dbf7403 100644 --- a/elki/src/main/java/de/lmu/ifi/dbs/elki/database/query/similarity/SimilarityQuery.java +++ b/elki/src/main/java/de/lmu/ifi/dbs/elki/database/query/similarity/SimilarityQuery.java @@ -33,6 +33,7 @@ import de.lmu.ifi.dbs.elki.distance.similarityfunction.SimilarityFunction; * similarity functions. * * @author Erich Schubert + * @since 0.4.0 * * @apiviz.landmark * diff --git a/elki/src/main/java/de/lmu/ifi/dbs/elki/database/relation/AbstractRelation.java b/elki/src/main/java/de/lmu/ifi/dbs/elki/database/relation/AbstractRelation.java index 9022c2d0..21694a4c 100644 --- a/elki/src/main/java/de/lmu/ifi/dbs/elki/database/relation/AbstractRelation.java +++ b/elki/src/main/java/de/lmu/ifi/dbs/elki/database/relation/AbstractRelation.java @@ -49,6 +49,7 @@ import de.lmu.ifi.dbs.elki.utilities.exceptions.AbortException; * Abstract base class for relations. * * @author Erich Schubert + * @since 0.7.0 * * @param <O> Data type */ diff --git a/elki/src/main/java/de/lmu/ifi/dbs/elki/database/relation/ConvertToStringView.java b/elki/src/main/java/de/lmu/ifi/dbs/elki/database/relation/ConvertToStringView.java index df4da4ef..6ab6753c 100644 --- a/elki/src/main/java/de/lmu/ifi/dbs/elki/database/relation/ConvertToStringView.java +++ b/elki/src/main/java/de/lmu/ifi/dbs/elki/database/relation/ConvertToStringView.java @@ -35,6 +35,7 @@ import de.lmu.ifi.dbs.elki.logging.Logging; * representation. * * @author Erich Schubert + * @since 0.4.0 */ public class ConvertToStringView extends AbstractRelation<String> { /** diff --git a/elki/src/main/java/de/lmu/ifi/dbs/elki/database/relation/DBIDView.java b/elki/src/main/java/de/lmu/ifi/dbs/elki/database/relation/DBIDView.java index f2a3b741..612b0755 100644 --- a/elki/src/main/java/de/lmu/ifi/dbs/elki/database/relation/DBIDView.java +++ b/elki/src/main/java/de/lmu/ifi/dbs/elki/database/relation/DBIDView.java @@ -36,6 +36,7 @@ import de.lmu.ifi.dbs.elki.logging.Logging; * Pseudo-representation that is the object ID itself. * * @author Erich Schubert + * @since 0.4.0 */ public class DBIDView extends AbstractRelation<DBID> { /** diff --git a/elki/src/main/java/de/lmu/ifi/dbs/elki/database/relation/DoubleRelation.java b/elki/src/main/java/de/lmu/ifi/dbs/elki/database/relation/DoubleRelation.java index 73641b9c..35ce7bc4 100644 --- a/elki/src/main/java/de/lmu/ifi/dbs/elki/database/relation/DoubleRelation.java +++ b/elki/src/main/java/de/lmu/ifi/dbs/elki/database/relation/DoubleRelation.java @@ -28,6 +28,7 @@ import de.lmu.ifi.dbs.elki.database.ids.DBIDRef; * Interface for double-valued relations. * * @author Erich Schubert + * @since 0.7.0 */ public interface DoubleRelation extends ModifiableRelation<Double> { /** diff --git a/elki/src/main/java/de/lmu/ifi/dbs/elki/database/relation/MaterializedDoubleRelation.java b/elki/src/main/java/de/lmu/ifi/dbs/elki/database/relation/MaterializedDoubleRelation.java index 0d9c2a21..2b2d6ef7 100644 --- a/elki/src/main/java/de/lmu/ifi/dbs/elki/database/relation/MaterializedDoubleRelation.java +++ b/elki/src/main/java/de/lmu/ifi/dbs/elki/database/relation/MaterializedDoubleRelation.java @@ -42,6 +42,7 @@ import de.lmu.ifi.dbs.elki.logging.Logging; * set(), remove the DBID, then delete(). * * @author Erich Schubert + * @since 0.4.0 */ public class MaterializedDoubleRelation extends AbstractRelation<Double>implements DoubleRelation { /** diff --git a/elki/src/main/java/de/lmu/ifi/dbs/elki/database/relation/MaterializedRelation.java b/elki/src/main/java/de/lmu/ifi/dbs/elki/database/relation/MaterializedRelation.java index a7aa2995..463c5c26 100644 --- a/elki/src/main/java/de/lmu/ifi/dbs/elki/database/relation/MaterializedRelation.java +++ b/elki/src/main/java/de/lmu/ifi/dbs/elki/database/relation/MaterializedRelation.java @@ -48,6 +48,7 @@ import de.lmu.ifi.dbs.elki.utilities.exceptions.AbortException; * TODO: is this semantic sane? * * @author Erich Schubert + * @since 0.4.0 * * @param <O> Data type */ diff --git a/elki/src/main/java/de/lmu/ifi/dbs/elki/database/relation/ModifiableRelation.java b/elki/src/main/java/de/lmu/ifi/dbs/elki/database/relation/ModifiableRelation.java index 0127fa66..98cd93a5 100644 --- a/elki/src/main/java/de/lmu/ifi/dbs/elki/database/relation/ModifiableRelation.java +++ b/elki/src/main/java/de/lmu/ifi/dbs/elki/database/relation/ModifiableRelation.java @@ -31,6 +31,7 @@ import de.lmu.ifi.dbs.elki.database.ids.DBIDRef; * creation (i.e. notifying them of inserts and deletions). * * @author Erich Schubert + * @since 0.4.0 * * @param <O> Data type. */ diff --git a/elki/src/main/java/de/lmu/ifi/dbs/elki/database/relation/ProjectedView.java b/elki/src/main/java/de/lmu/ifi/dbs/elki/database/relation/ProjectedView.java index 513dab9d..170d5ad2 100644 --- a/elki/src/main/java/de/lmu/ifi/dbs/elki/database/relation/ProjectedView.java +++ b/elki/src/main/java/de/lmu/ifi/dbs/elki/database/relation/ProjectedView.java @@ -34,6 +34,7 @@ import de.lmu.ifi.dbs.elki.logging.Logging; * Projected relation view (non-materialized) * * @author Erich Schubert + * @since 0.4.0 * * @param <IN> Vector type * @param <OUT> Vector type diff --git a/elki/src/main/java/de/lmu/ifi/dbs/elki/database/relation/ProxyView.java b/elki/src/main/java/de/lmu/ifi/dbs/elki/database/relation/ProxyView.java index 51306d52..03221e94 100644 --- a/elki/src/main/java/de/lmu/ifi/dbs/elki/database/relation/ProxyView.java +++ b/elki/src/main/java/de/lmu/ifi/dbs/elki/database/relation/ProxyView.java @@ -35,6 +35,7 @@ import de.lmu.ifi.dbs.elki.logging.Logging; * passed on to the wrapped representation. * * @author Erich Schubert + * @since 0.4.0 * * @param <O> Object type */ diff --git a/elki/src/main/java/de/lmu/ifi/dbs/elki/database/relation/Relation.java b/elki/src/main/java/de/lmu/ifi/dbs/elki/database/relation/Relation.java index 88b4b18d..9bc9eff2 100644 --- a/elki/src/main/java/de/lmu/ifi/dbs/elki/database/relation/Relation.java +++ b/elki/src/main/java/de/lmu/ifi/dbs/elki/database/relation/Relation.java @@ -41,6 +41,7 @@ import de.lmu.ifi.dbs.elki.result.HierarchicalResult; * An object representation from a database. * * @author Erich Schubert + * @since 0.4.0 * * @apiviz.uses DBIDRef * @apiviz.exclude TooltipStringVisualization diff --git a/elki/src/main/java/de/lmu/ifi/dbs/elki/database/relation/RelationUtil.java b/elki/src/main/java/de/lmu/ifi/dbs/elki/database/relation/RelationUtil.java index ac9fed6d..2dd8c62e 100644 --- a/elki/src/main/java/de/lmu/ifi/dbs/elki/database/relation/RelationUtil.java +++ b/elki/src/main/java/de/lmu/ifi/dbs/elki/database/relation/RelationUtil.java @@ -44,6 +44,7 @@ import de.lmu.ifi.dbs.elki.database.ids.DBIDs; * Utility functions for handling database relation. * * @author Erich Schubert + * @since 0.5.5 * * @apiviz.uses Relation oneway * @apiviz.has CollectionFromRelation |