summaryrefslogtreecommitdiff
path: root/elki/src/main/java/de/lmu/ifi/dbs/elki/database
diff options
context:
space:
mode:
Diffstat (limited to 'elki/src/main/java/de/lmu/ifi/dbs/elki/database')
-rw-r--r--elki/src/main/java/de/lmu/ifi/dbs/elki/database/AbstractDatabase.java1
-rw-r--r--elki/src/main/java/de/lmu/ifi/dbs/elki/database/Database.java1
-rw-r--r--elki/src/main/java/de/lmu/ifi/dbs/elki/database/DatabaseEventManager.java1
-rw-r--r--elki/src/main/java/de/lmu/ifi/dbs/elki/database/HashmapDatabase.java1
-rw-r--r--elki/src/main/java/de/lmu/ifi/dbs/elki/database/ProxyDatabase.java1
-rw-r--r--elki/src/main/java/de/lmu/ifi/dbs/elki/database/QueryUtil.java1
-rw-r--r--elki/src/main/java/de/lmu/ifi/dbs/elki/database/StaticArrayDatabase.java1
-rw-r--r--elki/src/main/java/de/lmu/ifi/dbs/elki/database/UpdatableDatabase.java1
-rw-r--r--elki/src/main/java/de/lmu/ifi/dbs/elki/database/datastore/DBIDDataStore.java5
-rw-r--r--elki/src/main/java/de/lmu/ifi/dbs/elki/database/datastore/DataStore.java3
-rw-r--r--elki/src/main/java/de/lmu/ifi/dbs/elki/database/datastore/DataStoreEvent.java1
-rw-r--r--elki/src/main/java/de/lmu/ifi/dbs/elki/database/datastore/DataStoreFactory.java1
-rw-r--r--elki/src/main/java/de/lmu/ifi/dbs/elki/database/datastore/DataStoreIDMap.java1
-rw-r--r--elki/src/main/java/de/lmu/ifi/dbs/elki/database/datastore/DataStoreListener.java1
-rw-r--r--elki/src/main/java/de/lmu/ifi/dbs/elki/database/datastore/DataStoreUtil.java92
-rw-r--r--elki/src/main/java/de/lmu/ifi/dbs/elki/database/datastore/DoubleDataStore.java5
-rw-r--r--elki/src/main/java/de/lmu/ifi/dbs/elki/database/datastore/IntegerDataStore.java5
-rw-r--r--elki/src/main/java/de/lmu/ifi/dbs/elki/database/datastore/RecordStore.java3
-rw-r--r--elki/src/main/java/de/lmu/ifi/dbs/elki/database/datastore/WritableDBIDDataStore.java7
-rw-r--r--elki/src/main/java/de/lmu/ifi/dbs/elki/database/datastore/WritableDataStore.java12
-rw-r--r--elki/src/main/java/de/lmu/ifi/dbs/elki/database/datastore/WritableDoubleDataStore.java15
-rw-r--r--elki/src/main/java/de/lmu/ifi/dbs/elki/database/datastore/WritableIntegerDataStore.java9
-rw-r--r--elki/src/main/java/de/lmu/ifi/dbs/elki/database/datastore/WritableRecordStore.java5
-rw-r--r--elki/src/main/java/de/lmu/ifi/dbs/elki/database/datastore/memory/ArrayDBIDStore.java16
-rw-r--r--elki/src/main/java/de/lmu/ifi/dbs/elki/database/datastore/memory/ArrayDoubleStore.java1
-rw-r--r--elki/src/main/java/de/lmu/ifi/dbs/elki/database/datastore/memory/ArrayIntegerStore.java14
-rw-r--r--elki/src/main/java/de/lmu/ifi/dbs/elki/database/datastore/memory/ArrayRecordStore.java10
-rw-r--r--elki/src/main/java/de/lmu/ifi/dbs/elki/database/datastore/memory/ArrayStore.java10
-rw-r--r--elki/src/main/java/de/lmu/ifi/dbs/elki/database/datastore/memory/MapIntegerDBIDDBIDStore.java28
-rw-r--r--elki/src/main/java/de/lmu/ifi/dbs/elki/database/datastore/memory/MapIntegerDBIDDoubleStore.java1
-rw-r--r--elki/src/main/java/de/lmu/ifi/dbs/elki/database/datastore/memory/MapIntegerDBIDIntegerStore.java6
-rw-r--r--elki/src/main/java/de/lmu/ifi/dbs/elki/database/datastore/memory/MapIntegerDBIDRecordStore.java8
-rw-r--r--elki/src/main/java/de/lmu/ifi/dbs/elki/database/datastore/memory/MapIntegerDBIDStore.java6
-rw-r--r--elki/src/main/java/de/lmu/ifi/dbs/elki/database/datastore/memory/MapRecordStore.java10
-rw-r--r--elki/src/main/java/de/lmu/ifi/dbs/elki/database/datastore/memory/MapStore.java6
-rw-r--r--elki/src/main/java/de/lmu/ifi/dbs/elki/database/datastore/memory/MemoryDataStoreFactory.java1
-rw-r--r--elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/ArrayDBIDs.java1
-rw-r--r--elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/ArrayModifiableDBIDs.java1
-rw-r--r--elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/ArrayStaticDBIDs.java1
-rw-r--r--elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/DBID.java1
-rw-r--r--elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/DBIDArrayIter.java1
-rw-r--r--elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/DBIDArrayMIter.java1
-rw-r--r--elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/DBIDFactory.java1
-rw-r--r--elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/DBIDIter.java1
-rw-r--r--elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/DBIDMIter.java1
-rw-r--r--elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/DBIDPair.java1
-rw-r--r--elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/DBIDRange.java1
-rw-r--r--elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/DBIDRef.java1
-rw-r--r--elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/DBIDUtil.java127
-rw-r--r--elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/DBIDVar.java1
-rw-r--r--elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/DBIDs.java1
-rw-r--r--elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/DoubleDBIDList.java1
-rw-r--r--elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/DoubleDBIDListIter.java1
-rw-r--r--elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/DoubleDBIDListMIter.java1
-rw-r--r--elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/DoubleDBIDPair.java1
-rw-r--r--elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/EmptyDBIDs.java1
-rw-r--r--elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/HashSetDBIDs.java1
-rw-r--r--elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/HashSetModifiableDBIDs.java1
-rw-r--r--elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/KNNHeap.java1
-rw-r--r--elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/KNNList.java1
-rw-r--r--elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/ModifiableDBIDs.java31
-rw-r--r--elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/ModifiableDoubleDBIDList.java1
-rw-r--r--elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/SetDBIDs.java1
-rw-r--r--elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/StaticDBIDs.java1
-rw-r--r--elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/generic/KNNSubList.java1
-rw-r--r--elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/generic/MaskedDBIDs.java1
-rw-r--r--elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/generic/UnmodifiableArrayDBIDs.java1
-rw-r--r--elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/generic/UnmodifiableDBIDs.java1
-rw-r--r--elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/integer/AbstractIntegerDBIDFactory.java4
-rw-r--r--elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/integer/ArrayModifiableIntegerDBIDs.java4
-rw-r--r--elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/integer/ArrayStaticIntegerDBIDs.java1
-rw-r--r--elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/integer/DoubleIntegerDBIDKNNHeap.java1
-rw-r--r--elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/integer/DoubleIntegerDBIDKNNList.java1
-rw-r--r--elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/integer/DoubleIntegerDBIDList.java1
-rw-r--r--elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/integer/DoubleIntegerDBIDListIter.java1
-rw-r--r--elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/integer/DoubleIntegerDBIDListKNNHeap.java1
-rw-r--r--elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/integer/DoubleIntegerDBIDListMIter.java1
-rw-r--r--elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/integer/DoubleIntegerDBIDPair.java1
-rw-r--r--elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/integer/DoubleIntegerDBIDPairKNNListHeap.java1
-rw-r--r--elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/integer/DoubleIntegerDBIDPairList.java1
-rw-r--r--elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/integer/IntegerArrayDBIDs.java1
-rw-r--r--elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/integer/IntegerArrayStaticDBIDs.java1
-rw-r--r--elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/integer/IntegerDBID.java20
-rw-r--r--elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/integer/IntegerDBIDArrayIter.java1
-rw-r--r--elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/integer/IntegerDBIDArrayMIter.java1
-rw-r--r--elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/integer/IntegerDBIDArrayQuickSort.java1
-rw-r--r--elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/integer/IntegerDBIDIter.java1
-rw-r--r--elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/integer/IntegerDBIDKNNList.java1
-rw-r--r--elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/integer/IntegerDBIDKNNSubList.java1
-rw-r--r--elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/integer/IntegerDBIDMIter.java1
-rw-r--r--elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/integer/IntegerDBIDPair.java1
-rw-r--r--elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/integer/IntegerDBIDRange.java1
-rw-r--r--elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/integer/IntegerDBIDRef.java1
-rw-r--r--elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/integer/IntegerDBIDVar.java3
-rw-r--r--elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/integer/IntegerDBIDs.java1
-rw-r--r--elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/integer/ReusingDBIDFactory.java1
-rw-r--r--elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/integer/SimpleDBIDFactory.java1
-rw-r--r--elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/integer/TrivialDBIDFactory.java1
-rw-r--r--elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/integer/TroveHashSetModifiableDBIDs.java9
-rw-r--r--elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/integer/UnmodifiableIntegerArrayDBIDs.java1
-rw-r--r--elki/src/main/java/de/lmu/ifi/dbs/elki/database/ids/integer/UnmodifiableIntegerDBIDs.java1
-rw-r--r--elki/src/main/java/de/lmu/ifi/dbs/elki/database/query/DatabaseQuery.java1
-rw-r--r--elki/src/main/java/de/lmu/ifi/dbs/elki/database/query/DistanceSimilarityQuery.java1
-rw-r--r--elki/src/main/java/de/lmu/ifi/dbs/elki/database/query/LinearScanQuery.java1
-rw-r--r--elki/src/main/java/de/lmu/ifi/dbs/elki/database/query/distance/AbstractDatabaseDistanceQuery.java1
-rw-r--r--elki/src/main/java/de/lmu/ifi/dbs/elki/database/query/distance/AbstractDistanceQuery.java1
-rw-r--r--elki/src/main/java/de/lmu/ifi/dbs/elki/database/query/distance/DBIDDistanceQuery.java1
-rw-r--r--elki/src/main/java/de/lmu/ifi/dbs/elki/database/query/distance/DBIDRangeDistanceQuery.java2
-rw-r--r--elki/src/main/java/de/lmu/ifi/dbs/elki/database/query/distance/DistanceQuery.java1
-rw-r--r--elki/src/main/java/de/lmu/ifi/dbs/elki/database/query/distance/PrimitiveDistanceQuery.java1
-rw-r--r--elki/src/main/java/de/lmu/ifi/dbs/elki/database/query/distance/PrimitiveDistanceSimilarityQuery.java1
-rw-r--r--elki/src/main/java/de/lmu/ifi/dbs/elki/database/query/distance/SpatialDistanceQuery.java1
-rw-r--r--elki/src/main/java/de/lmu/ifi/dbs/elki/database/query/distance/SpatialPrimitiveDistanceQuery.java1
-rw-r--r--elki/src/main/java/de/lmu/ifi/dbs/elki/database/query/knn/AbstractDistanceKNNQuery.java1
-rw-r--r--elki/src/main/java/de/lmu/ifi/dbs/elki/database/query/knn/KNNQuery.java1
-rw-r--r--elki/src/main/java/de/lmu/ifi/dbs/elki/database/query/knn/LinearScanDistanceKNNQuery.java1
-rw-r--r--elki/src/main/java/de/lmu/ifi/dbs/elki/database/query/knn/LinearScanEuclideanDistanceKNNQuery.java1
-rw-r--r--elki/src/main/java/de/lmu/ifi/dbs/elki/database/query/knn/LinearScanPrimitiveDistanceKNNQuery.java1
-rw-r--r--elki/src/main/java/de/lmu/ifi/dbs/elki/database/query/knn/PreprocessorKNNQuery.java1
-rw-r--r--elki/src/main/java/de/lmu/ifi/dbs/elki/database/query/range/AbstractDistanceRangeQuery.java1
-rw-r--r--elki/src/main/java/de/lmu/ifi/dbs/elki/database/query/range/LinearScanDistanceRangeQuery.java1
-rw-r--r--elki/src/main/java/de/lmu/ifi/dbs/elki/database/query/range/LinearScanEuclideanDistanceRangeQuery.java1
-rw-r--r--elki/src/main/java/de/lmu/ifi/dbs/elki/database/query/range/LinearScanPrimitiveDistanceRangeQuery.java1
-rw-r--r--elki/src/main/java/de/lmu/ifi/dbs/elki/database/query/range/RangeQuery.java1
-rw-r--r--elki/src/main/java/de/lmu/ifi/dbs/elki/database/query/rknn/AbstractRKNNQuery.java1
-rw-r--r--elki/src/main/java/de/lmu/ifi/dbs/elki/database/query/rknn/LinearScanRKNNQuery.java1
-rw-r--r--elki/src/main/java/de/lmu/ifi/dbs/elki/database/query/rknn/PreprocessorRKNNQuery.java1
-rw-r--r--elki/src/main/java/de/lmu/ifi/dbs/elki/database/query/rknn/RKNNQuery.java1
-rw-r--r--elki/src/main/java/de/lmu/ifi/dbs/elki/database/query/similarity/AbstractDBIDSimilarityQuery.java1
-rw-r--r--elki/src/main/java/de/lmu/ifi/dbs/elki/database/query/similarity/AbstractSimilarityQuery.java1
-rw-r--r--elki/src/main/java/de/lmu/ifi/dbs/elki/database/query/similarity/PrimitiveSimilarityQuery.java1
-rw-r--r--elki/src/main/java/de/lmu/ifi/dbs/elki/database/query/similarity/SimilarityQuery.java1
-rw-r--r--elki/src/main/java/de/lmu/ifi/dbs/elki/database/relation/AbstractRelation.java1
-rw-r--r--elki/src/main/java/de/lmu/ifi/dbs/elki/database/relation/ConvertToStringView.java1
-rw-r--r--elki/src/main/java/de/lmu/ifi/dbs/elki/database/relation/DBIDView.java1
-rw-r--r--elki/src/main/java/de/lmu/ifi/dbs/elki/database/relation/DoubleRelation.java1
-rw-r--r--elki/src/main/java/de/lmu/ifi/dbs/elki/database/relation/MaterializedDoubleRelation.java1
-rw-r--r--elki/src/main/java/de/lmu/ifi/dbs/elki/database/relation/MaterializedRelation.java1
-rw-r--r--elki/src/main/java/de/lmu/ifi/dbs/elki/database/relation/ModifiableRelation.java1
-rw-r--r--elki/src/main/java/de/lmu/ifi/dbs/elki/database/relation/ProjectedView.java1
-rw-r--r--elki/src/main/java/de/lmu/ifi/dbs/elki/database/relation/ProxyView.java1
-rw-r--r--elki/src/main/java/de/lmu/ifi/dbs/elki/database/relation/Relation.java1
-rw-r--r--elki/src/main/java/de/lmu/ifi/dbs/elki/database/relation/RelationUtil.java1
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