00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029 package org.openmobileis.database.fastobjectdb.synchro.client;
00030
00031 import java.util.Enumeration;
00032
00033 import org.openmobileis.common.context.ApplicationContextManager;
00034 import org.openmobileis.common.util.PropertiesManager;
00035 import org.openmobileis.common.util.exception.DatabaseException;
00036 import org.openmobileis.database.fastobjectdb.FastObjectDB;
00037 import org.openmobileis.database.fastobjectdb.FastObjectDBManager;
00038 import org.openmobileis.database.fastobjectdb.FastObjectDBManagerService;
00039 import org.openmobileis.database.fastobjectdb.db.FODBCollection;
00040 import org.openmobileis.database.fastobjectdb.db.crypto.FODBCypher;
00041 import org.openmobileis.synchro.openmsp.client.db.SyncActionDBManager;
00042
00043
00055 public class SynchroFastObjectDBManager extends FastObjectDBManager implements FastObjectDBManagerService {
00056
00057 public SynchroFastObjectDBManager() {
00058 super();
00059 }
00060
00067 public FastObjectDB getCurrentFODB() throws DatabaseException {
00068 if (db == null) {
00069 String dbPath = PropertiesManager.getManager().getProperty("fastobjectdb.database.path");
00070 String dbname = PropertiesManager.getManager().getProperty("fastobjectdb.database.name");
00071 if ((dbPath == null) || (dbname == null)) {
00072 throw new DatabaseException("FPDB ERROR : FODB path or name property is not set. Can't create db");
00073 }
00074 synchronized(SynchroFastObjectDBManager.class) {
00075 if (db==null) {
00076 try {
00077 db = SynchroFastObjectDB.open(dbPath, dbname);
00078 ApplicationContextManager.getManager().addManager(db);
00079 if (cypherList != null) {
00080 Enumeration keys = cypherList.keys();
00081 while (keys.hasMoreElements()) {
00082 String colName = (String) keys.nextElement();
00083 FODBCollection col = db.getCollection(colName);
00084 if (col == null) {
00085 throw new DatabaseException("FPDB ERROR : FODB collection does not exist for declared collection cypher "+colName);
00086 }
00087 col.setCollectionCypher((FODBCypher)cypherList.get(colName));
00088 }
00089 cypherList = null;
00090 }
00091
00092 SyncActionDBManager.registerSyncActionDBQueryManager(new FODBSyncActionDBQueryManager());
00093 SyncActionDBManager.getManager();
00094 } catch (Throwable ex) {
00095 throw new DatabaseException(ex);
00096 }
00097 }
00098 }
00099 }
00100 return db;
00101 }
00102 }