-
Eike Cochu authoredEike Cochu authored
Code owners
Assign users and groups as approvers for specific file changes. Learn more.
Mongo.java 1.69 KiB
package de.vipra.util;
import org.mongodb.morphia.Datastore;
import org.mongodb.morphia.Morphia;
import org.mongodb.morphia.logging.MorphiaLoggerFactory;
import org.mongodb.morphia.logging.slf4j.SLF4JLoggerImplFactory;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import com.mongodb.MongoClient;
import com.mongodb.MongoClientOptions;
import de.vipra.util.ex.ConfigException;
public class Mongo {
public static final Logger log = LoggerFactory.getLogger(Mongo.class);
static {
MorphiaLoggerFactory.registerLogger(SLF4JLoggerImplFactory.class);
}
private static Mongo instance;
private final MongoClient client;
private final Morphia morphia;
private final Datastore datastore;
private Mongo(final Config config) throws ConfigException {
final String host = config.databaseHost;
final Integer port = config.databasePort;
final String databaseName = config.databaseName;
if (host == null || port == null || databaseName == null) {
log.error("host/port/dbname missing in configuration");
throw new ConfigException("host/port/dbname missing in configuration");
}
final MongoClientOptions options = MongoClientOptions.builder().connectTimeout(10000).build();
client = new MongoClient(host + ":" + port, options);
morphia = new Morphia();
morphia.mapPackage("de.vipra.util.model");
datastore = morphia.createDatastore(client, databaseName);
}
public MongoClient getClient() {
return client;
}
public Morphia getMorphia() {
return morphia;
}
public Datastore getDatastore() {
return datastore;
}
public static Mongo getInstance(final Config config) throws ConfigException {
if (instance == null) {
instance = new Mongo(config);
}
return instance;
}
}