summaryrefslogtreecommitdiff
path: root/java/src/Freeze/SharedDb.java
diff options
context:
space:
mode:
authorBernard Normier <bernard@zeroc.com>2005-11-11 19:37:06 +0000
committerBernard Normier <bernard@zeroc.com>2005-11-11 19:37:06 +0000
commit0fd5ba1503be1db3377cc856ec79ed4902a062db (patch)
tree8305898e309a3b91392dbefad8f70ca0d38eaeb1 /java/src/Freeze/SharedDb.java
parentupdate PYTHONPATH paths (diff)
downloadice-0fd5ba1503be1db3377cc856ec79ed4902a062db.tar.bz2
ice-0fd5ba1503be1db3377cc856ec79ed4902a062db.tar.xz
ice-0fd5ba1503be1db3377cc856ec79ed4902a062db.zip
Freeze Map improvements (bug #415)
Diffstat (limited to 'java/src/Freeze/SharedDb.java')
-rwxr-xr-xjava/src/Freeze/SharedDb.java25
1 files changed, 19 insertions, 6 deletions
diff --git a/java/src/Freeze/SharedDb.java b/java/src/Freeze/SharedDb.java
index e192390db7e..35f6b4b9174 100755
--- a/java/src/Freeze/SharedDb.java
+++ b/java/src/Freeze/SharedDb.java
@@ -12,10 +12,12 @@ package Freeze;
class SharedDb
{
public static SharedDb
- get(ConnectionI connection, String dbName, String key, String value, Map.Index[] indices, boolean createDb)
+ get(ConnectionI connection, String dbName, String key, String value,
+ Map.Index[] indices, boolean createDb, java.util.Comparator comparator,
+ java.util.Map indexComparators)
{
MapKey mapKey = new MapKey(connection.envName(), connection.communicator(), dbName);
-
+
if(dbName.equals(Util.catalogName()))
{
//
@@ -34,7 +36,8 @@ class SharedDb
{
try
{
- result = new SharedDb(mapKey, key, value, connection, indices, createDb);
+ result = new SharedDb(mapKey, key, value, connection,
+ indices, createDb, comparator, indexComparators);
}
catch(com.sleepycat.db.DatabaseException dx)
{
@@ -147,7 +150,7 @@ class SharedDb
}
private SharedDb(MapKey mapKey, String key, String value, ConnectionI connection, Map.Index[] indices,
- boolean createDb)
+ boolean createDb, java.util.Comparator comparator, java.util.Map indexComparators)
throws com.sleepycat.db.DatabaseException
{
_mapKey = mapKey;
@@ -159,7 +162,7 @@ class SharedDb
try
{
Catalog catalog = new Catalog(catalogConnection, Util.catalogName(), true);
- CatalogData catalogData = (CatalogData) catalog.get(_mapKey.dbName);
+ CatalogData catalogData = (CatalogData)catalog.get(_mapKey.dbName);
if(catalogData != null)
{
if(catalogData.evictor)
@@ -186,6 +189,10 @@ class SharedDb
com.sleepycat.db.DatabaseConfig config = new com.sleepycat.db.DatabaseConfig();
config.setAllowCreate(createDb);
config.setType(com.sleepycat.db.DatabaseType.BTREE);
+ if(comparator != null)
+ {
+ config.setBtreeComparator(comparator);
+ }
if(_trace >= 1)
{
@@ -198,7 +205,13 @@ class SharedDb
{
for(int i = 0; i < _indices.length; ++i)
{
- _indices[i].associate(mapKey.dbName, _db, txn, createDb);
+ java.util.Comparator indexComparator = null;
+ if(indexComparators != null)
+ {
+ indexComparator = (java.util.Comparator)indexComparators.get(_indices[i].name());
+ }
+
+ _indices[i].associate(mapKey.dbName, _db, txn, createDb, indexComparator);
}
}