package middleware; import implementations.CassandraHandler; import implementations.DynamoDbHandler; import implementations.HBaseHandler; import implementations.HypertableHandler; import interfaces.MiddlewareInterface; public class NoSQLMiddleware { private static Implementations usedDatabase; public enum Implementations { Cassandra, DynamoDb, Hbase, Hypertable } private static MiddlewareInterface queryHandler; public synchronized static MiddlewareInterface getQueryHandler( Implementations database, String databaseHost, String databasePort) { if (queryHandler == null) { ComparisonOperatorMapper.initConditionalOperatorMapper(); switch (database) { case DynamoDb: setUsedDatabase(Implementations.DynamoDb); DynamoDbHandler.connectToDatabase(databaseHost + ":" + databasePort); queryHandler = new DynamoDbHandler(); break; case Hbase: setUsedDatabase(Implementations.Hbase); HBaseHandler.connect(); queryHandler = new HBaseHandler(); break; case Hypertable: setUsedDatabase(Implementations.Hypertable); queryHandler = new HypertableHandler(); queryHandler.connectToDatabase(databaseHost, databasePort); break; case Cassandra: setUsedDatabase(Implementations.Cassandra); queryHandler = new CassandraHandler(); queryHandler.connectToDatabase(databaseHost, databasePort); break; } } return queryHandler; } public static Implementations getUsedDatabase() { return usedDatabase; } public static void setUsedDatabase(Implementations usedDatabase) { NoSQLMiddleware.usedDatabase = usedDatabase; } }