summaryrefslogtreecommitdiff
path: root/elki/src/main/java/de/lmu/ifi/dbs/elki/database/datastore
diff options
context:
space:
mode:
Diffstat (limited to 'elki/src/main/java/de/lmu/ifi/dbs/elki/database/datastore')
-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
28 files changed, 217 insertions, 65 deletions
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»