From 7215c2f982e0f25b2fa49a3e330c15959b265920 Mon Sep 17 00:00:00 2001 From: Georgios Gousios Date: Mon, 12 Dec 2011 13:12:13 +0200 Subject: [PATCH] Factory for getting MessageStores based on configuration --- .../main/scala/gr/grnet/aquarium/store/Store.scala | 78 ++++++++++++++++++++ 1 file changed, 78 insertions(+) create mode 100644 logic/src/main/scala/gr/grnet/aquarium/store/Store.scala diff --git a/logic/src/main/scala/gr/grnet/aquarium/store/Store.scala b/logic/src/main/scala/gr/grnet/aquarium/store/Store.scala new file mode 100644 index 0000000..1b71a60 --- /dev/null +++ b/logic/src/main/scala/gr/grnet/aquarium/store/Store.scala @@ -0,0 +1,78 @@ +/* + * Copyright 2011 GRNET S.A. All rights reserved. + * + * Redistribution and use in source and binary forms, with or + * without modification, are permitted provided that the following + * conditions are met: + * + * 1. Redistributions of source code must retain the above + * copyright notice, this list of conditions and the following + * disclaimer. + * + * 2. Redistributions in binary form must reproduce the above + * copyright notice, this list of conditions and the following + * disclaimer in the documentation and/or other materials + * provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY GRNET S.A. ``AS IS'' AND ANY EXPRESS + * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL GRNET S.A OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF + * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED + * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN + * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + * + * The views and conclusions contained in the software and + * documentation are those of the authors and should not be + * interpreted as representing official policies, either expressed + * or implied, of GRNET S.A. + */ + +package gr.grnet.aquarium.store + +import gr.grnet.aquarium.util.Loggable +import gr.grnet.aquarium.MasterConf +import mongodb.MongoDBStore + +/** + * A factory class for getting access to the underlying message store. + * + * @author Georgios Gousios + */ +object Store extends Loggable { + + private lazy val provider = { + MasterConf.MasterConf.get(MasterConf.Keys.persistence_provider) + } + + private lazy val host = { + MasterConf.MasterConf.get(MasterConf.Keys.persistence_host) + } + + private lazy val uname = { + MasterConf.MasterConf.get(MasterConf.Keys.persistence_username) + } + + private lazy val passwd = { + MasterConf.MasterConf.get(MasterConf.Keys.persistence_password) + } + + private lazy val port = { + MasterConf.MasterConf.get(MasterConf.Keys.persistence_port) + } + + def getConnection(): Option[MessageStore] = { + provider match { + case "mongodb" => + Some(new MongoDBStore(host, port, uname, passwd)) + case _ => + logger.error("Provider <%s> not supported".format(provider)) + None + } + } +} \ No newline at end of file -- 1.7.10.4