package com.sleepycat.compat; import java.io.*; import java.util.Comparator; import com.sleepycat.je.Cursor; import com.sleepycat.je.CursorConfig; import com.sleepycat.je.Database; import com.sleepycat.je.DatabaseConfig; import com.sleepycat.je.DatabaseEntry; import com.sleepycat.je.DatabaseException; import com.sleepycat.je.Environment; import com.sleepycat.je.EnvironmentConfig; import com.sleepycat.je.LockMode; import com.sleepycat.je.OperationStatus; import com.sleepycat.je.SecondaryConfig; import com.sleepycat.je.SecondaryCursor; import com.sleepycat.je.SecondaryDatabase; import com.sleepycat.je.Transaction; import com.sleepycat.je.TransactionConfig; import de.ovgu.cide.jakutil.*; /** * A minimal set of DB-JE compatibility methods for internal use only. * Two versions are maintained in parallel in the DB and JE source trees. * Used by the collections package. */ public class DbCompat { public static final boolean CDB=false; public static final boolean JOIN=true; public static final boolean NESTED_TRANSACTIONS=false; public static final boolean INSERTION_ORDERED_DUPLICATES=false; public static final boolean SEPARATE_DATABASE_FILES=false; public static final boolean MEMORY_SUBSYSTEM=false; public static final boolean LOCK_SUBSYSTEM=false; public static final boolean HASH_METHOD=false; public static final boolean RECNO_METHOD=false; public static final boolean QUEUE_METHOD=false; public static final boolean BTREE_RECNUM_METHOD=false; public static final boolean OPTIONAL_READ_UNCOMMITTED=false; public static final boolean SECONDARIES=true; public static boolean getInitializeLocking( EnvironmentConfig config){ return true; } public static boolean getInitializeCDB( EnvironmentConfig config){ return false; } public static boolean isTypeBtree( DatabaseConfig dbConfig){ return true; } public static boolean isTypeHash( DatabaseConfig dbConfig){ return false; } public static boolean isTypeQueue( DatabaseConfig dbConfig){ return false; } public static boolean isTypeRecno( DatabaseConfig dbConfig){ return false; } public static boolean getBtreeRecordNumbers( DatabaseConfig dbConfig){ return false; } public static boolean getReadUncommitted( DatabaseConfig dbConfig){ return true; } public static boolean getRenumbering( DatabaseConfig dbConfig){ return false; } public static boolean getSortedDuplicates( DatabaseConfig dbConfig){ return dbConfig.getSortedDuplicates(); } public static boolean getUnsortedDuplicates( DatabaseConfig dbConfig){ return false; } public static CursorConfig cloneCursorConfig( CursorConfig config){ CursorConfig newConfig=new CursorConfig(); newConfig.setReadCommitted(config.getReadCommitted()); newConfig.setReadUncommitted(config.getReadUncommitted()); return newConfig; } public static boolean getWriteCursor( CursorConfig config){ return false; } public static void setWriteCursor( CursorConfig config, boolean write){ if (write) { throw new UnsupportedOperationException(); } } public static void setRecordNumber( DatabaseEntry entry, int recNum){ throw new UnsupportedOperationException(); } public static int getRecordNumber( DatabaseEntry entry){ throw new UnsupportedOperationException(); } public static String getDatabaseFile( Database db) throws DatabaseException { return null; } public static OperationStatus getCurrentRecordNumber( Cursor cursor, DatabaseEntry key, LockMode lockMode) throws DatabaseException { throw new UnsupportedOperationException(); } public static OperationStatus getSearchRecordNumber( Cursor cursor, DatabaseEntry key, DatabaseEntry data, LockMode lockMode) throws DatabaseException { throw new UnsupportedOperationException(); } public static OperationStatus getSearchRecordNumber( SecondaryCursor cursor, DatabaseEntry key, DatabaseEntry pKey, DatabaseEntry data, LockMode lockMode) throws DatabaseException { throw new UnsupportedOperationException(); } public static OperationStatus putAfter( Cursor cursor, DatabaseEntry key, DatabaseEntry data) throws DatabaseException { throw new UnsupportedOperationException(); } public static OperationStatus putBefore( Cursor cursor, DatabaseEntry key, DatabaseEntry data) throws DatabaseException { throw new UnsupportedOperationException(); } public static OperationStatus append( Database db, Transaction txn, DatabaseEntry key, DatabaseEntry data) throws DatabaseException { throw new UnsupportedOperationException(); } public static Transaction getThreadTransaction( Environment env) throws DatabaseException { return env.getThreadTransaction(); } public static void setInitializeCache( EnvironmentConfig config, boolean val){ if (!val) { throw new UnsupportedOperationException(); } } public static void setInitializeLocking( EnvironmentConfig config, boolean val){ if (!val) { throw new UnsupportedOperationException(); } } public static void setInitializeCDB( EnvironmentConfig config, boolean val){ if (val) { throw new UnsupportedOperationException(); } } public static void setLockDetectModeOldest( EnvironmentConfig config){ } public static void setSerializableIsolation( TransactionConfig config, boolean val){ config.setSerializableIsolation(val); } public static void setBtreeComparator( DatabaseConfig dbConfig, Comparator comparator){ dbConfig.setBtreeComparator(comparator.getClass()); } public static void setTypeBtree( DatabaseConfig dbConfig){ } public static void setTypeHash( DatabaseConfig dbConfig){ throw new UnsupportedOperationException(); } public static void setTypeRecno( DatabaseConfig dbConfig){ throw new UnsupportedOperationException(); } public static void setTypeQueue( DatabaseConfig dbConfig){ throw new UnsupportedOperationException(); } public static void setBtreeRecordNumbers( DatabaseConfig dbConfig, boolean val){ throw new UnsupportedOperationException(); } public static void setReadUncommitted( DatabaseConfig dbConfig, boolean val){ } public static void setRenumbering( DatabaseConfig dbConfig, boolean val){ throw new UnsupportedOperationException(); } public static void setSortedDuplicates( DatabaseConfig dbConfig, boolean val){ dbConfig.setSortedDuplicates(val); } public static void setUnsortedDuplicates( DatabaseConfig dbConfig, boolean val){ if (val) { throw new UnsupportedOperationException(); } } public static void setRecordLength( DatabaseConfig dbConfig, int val){ if (val != 0) { throw new UnsupportedOperationException(); } } public static void setRecordPad( DatabaseConfig dbConfig, int val){ throw new UnsupportedOperationException(); } public static Database openDatabase( Environment env, Transaction txn, String file, String name, DatabaseConfig config) throws DatabaseException, FileNotFoundException { return env.openDatabase(txn,makeDbName(file,name),config); } public static SecondaryDatabase openSecondaryDatabase( Environment env, Transaction txn, String file, String name, Database primary, SecondaryConfig config) throws DatabaseException, FileNotFoundException { return env.openSecondaryDatabase(txn,makeDbName(file,name),primary,config); } private static String makeDbName( String file, String name){ if (file == null) { return name; } else { if (name != null) { return file + '.' + name; } else { return file; } } } }