package uk.co.panaxiom.playjongo; import play.Configuration; import com.mongodb.DB; import com.mongodb.MongoClient; import com.mongodb.MongoClientURI; import com.mongodb.WriteConcern; /** * The default MongoClient factory class for PlayJongo. * * @author ssayles */ public class MongoClientFactory { protected Configuration config; protected boolean isTest; public MongoClientFactory(Configuration config) { this.config = config; } protected MongoClientFactory(Configuration config, boolean isTest) { this.config = config; this.isTest = isTest; } /** * Creates and returns a new instance of a MongoClient. * * @return a new MongoClient * @throws Exception */ public MongoClient createClient() throws Exception { MongoClientURI uri = getClientURI(); MongoClient mongo = new MongoClient(uri); DB db = new DB(mongo, uri.getDatabase()); // Set write concern if configured String defaultWriteConcern = config.getString("playjongo.defaultWriteConcern"); if(defaultWriteConcern != null) { db.setWriteConcern(WriteConcern.valueOf(defaultWriteConcern)); } return mongo; } /** * Returns the database name associated with the current configuration. * * @return The database name */ public String getDBName() { return getClientURI().getDatabase(); } protected MongoClientURI getClientURI() { MongoClientURI uri = new MongoClientURI( isTest ? config.getString("playjongo.test-uri", "mongodb://127.0.0.1:27017/test") : config.getString("playjongo.uri", "mongodb://127.0.0.1:27017/play")); return uri; } }