diff options
Diffstat (limited to 'elki/src/main/java/de/lmu/ifi/dbs/elki/database/datastore/memory')
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» |