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