Revision 7215c2f9

b/logic/src/main/scala/gr/grnet/aquarium/store/Store.scala
1
/*
2
 * Copyright 2011 GRNET S.A. All rights reserved.
3
 *
4
 *  Redistribution and use in source and binary forms, with or
5
 *  without modification, are permitted provided that the following
6
 *  conditions are met:
7
 *
8
 *    1. Redistributions of source code must retain the above
9
 *       copyright notice, this list of conditions and the following
10
 *       disclaimer.
11
 *
12
 *    2. Redistributions in binary form must reproduce the above
13
 *       copyright notice, this list of conditions and the following
14
 *       disclaimer in the documentation and/or other materials
15
 *       provided with the distribution.
16
 *
17
 *  THIS SOFTWARE IS PROVIDED BY GRNET S.A. ``AS IS'' AND ANY EXPRESS
18
 *  OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
19
 *  WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
20
 *  PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL GRNET S.A OR
21
 *  CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
22
 *  SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
23
 *  LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
24
 *  USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
25
 *  AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
26
 *  LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
27
 *  ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
28
 *  POSSIBILITY OF SUCH DAMAGE.
29
 *
30
 *  The views and conclusions contained in the software and
31
 *  documentation are those of the authors and should not be
32
 *  interpreted as representing official policies, either expressed
33
 *  or implied, of GRNET S.A.
34
 */
35

  
36
package gr.grnet.aquarium.store
37

  
38
import gr.grnet.aquarium.util.Loggable
39
import gr.grnet.aquarium.MasterConf
40
import mongodb.MongoDBStore
41

  
42
/**
43
 * A factory class for getting access to the underlying message store.
44
 *
45
 * @author Georgios Gousios <gousiosg@gmail.com>
46
 */
47
object Store extends Loggable {
48

  
49
  private lazy val provider = {
50
    MasterConf.MasterConf.get(MasterConf.Keys.persistence_provider)
51
  }
52

  
53
  private lazy val host = {
54
    MasterConf.MasterConf.get(MasterConf.Keys.persistence_host)
55
  }
56

  
57
  private lazy val uname = {
58
    MasterConf.MasterConf.get(MasterConf.Keys.persistence_username)
59
  }
60

  
61
  private lazy val passwd = {
62
    MasterConf.MasterConf.get(MasterConf.Keys.persistence_password)
63
  }
64

  
65
  private lazy val port = {
66
    MasterConf.MasterConf.get(MasterConf.Keys.persistence_port)
67
  }
68

  
69
  def getConnection(): Option[MessageStore] = {
70
    provider match {
71
      case "mongodb" =>
72
        Some(new MongoDBStore(host, port, uname, passwd))
73
      case _ => 
74
        logger.error("Provider <%s> not supported".format(provider))
75
        None
76
    }
77
  }
78
}

Also available in: Unified diff