/*
*
*/
package org.smartly.packages.mongo.impl;
import com.mongodb.DB;
import org.json.JSONObject;
import org.smartly.commons.logging.Level;
import org.smartly.commons.logging.Logger;
import org.smartly.commons.logging.util.LoggingUtils;
import org.smartly.commons.util.FormatUtils;
import org.smartly.commons.util.JsonWrapper;
/**
* @author angelo.geminiani
*/
public class MongoDBConnection {
private static final String USERNAME = "username";
private static final String PASSWORD = "password";
private static final String HOST = "host";
private static final String PORT = "port";
private static final String DBNAME = "dbname";
private final JSONObject _settings;
private String _dbname;
private String _username;
private String _password;
private String _host;
private int _port;
private MongoDB _mongo;
public MongoDBConnection(final JSONObject settings) {
_settings = settings;
try {
// load settings
this.init();
// creates database
_mongo = new MongoDB(_host, _port);
this.getLogger().log(Level.INFO, FormatUtils.format(
"MONGODB initialized on {0}:{1} {2}", _host, _port, _dbname));
} catch (Throwable t) {
this.getLogger().log(Level.SEVERE,
FormatUtils.format("ERROR INITIALIZING MONGO: {0}", t),
t);
}
}
@Override
public String toString() {
final StringBuilder result = new StringBuilder();
result.append("DBName=").append(_dbname);
result.append(", ");
result.append("Host=").append(_host);
result.append(", ");
result.append("Port=").append(_port);
result.append(", ");
result.append("Username=").append(_username);
result.append(", ");
result.append("Password=").append(_password);
return result.toString();
}
public final DB getDB() throws StandardCodedException {
return _mongo.getDB(_dbname, _username, _password);
}
// ------------------------------------------------------------------------
// p r u b l i c
// ------------------------------------------------------------------------
public String getDbname() {
return _dbname;
}
public void setDbname(String dbname) {
this._dbname = dbname;
}
public String getUsername() {
return _username;
}
public void setUsername(String username) {
this._username = username;
}
public String getPassword() {
return _password;
}
public void setPassword(String password) {
this._password = password;
}
public String getHost() {
return _host;
}
public void setHost(String host) {
this._host = host;
}
public int getPort() {
return _port;
}
public void setPort(int port) {
this._port = port;
}
// ------------------------------------------------------------------------
// p r i v a t e
// ------------------------------------------------------------------------
private Logger getLogger() {
return LoggingUtils.getLogger(this);
}
private void init() {
final String dbname = JsonWrapper.getString(_settings,
DBNAME);
final String username = JsonWrapper.getString(_settings,
USERNAME);
final String password = JsonWrapper.getString(_settings,
PASSWORD);
final String host = JsonWrapper.getString(_settings,
HOST);
final int port = JsonWrapper.getInt(_settings,
PORT);
this.setDbname(dbname);
this.setUsername(username);
this.setPassword(password);
this.setHost(host);
this.setPort(port);
}
}