package com.mongodb.tools.driver;
import java.net.UnknownHostException;
import java.util.ArrayList;
import java.util.List;
import com.mongodb.BasicDBObject;
import com.mongodb.CommandResult;
import com.mongodb.DB;
import com.mongodb.DBCollection;
import com.mongodb.DBCursor;
import com.mongodb.DBObject;
import com.mongodb.Mongo;
import com.mongodb.MongoException;
import com.mongodb.MongoURI;
public class MongoDriverHelper {
public static void stopMongoServerWithoutError(String host, Integer port) {
try {
stopMongoServer(host, port, null, null);
} catch (UnknownHostException e) {
e.printStackTrace();
} catch (MongoException e) {
// https://jira.mongodb.org/browse/JAVA-577
e.printStackTrace();
}
}
public static void stopMongoServer(String host, Integer port)
throws UnknownHostException, MongoException {
stopMongoServer(host, port, null, null);
}
public static void stopMongoServer(String host, Integer port,
String username, char[] passwd) throws UnknownHostException,
MongoException {
Mongo mongo = MongoDriverFactory.createMongo(host, port);
stopMongoServerAndCloseIt(mongo, username, passwd);
}
public static void stopMongoServerAndCloseIt(Mongo mongo, String username,
char[] passwd) {
try {
stopMongoServer(mongo, username, passwd);
} finally {
if (mongo != null) {
mongo.close();
}
}
}
public static void stopMongoServer(Mongo mongo, String username,
char[] passwd) {
DB db = mongo.getDB("admin");
if (username != null) {
db.authenticate(username, passwd);
}
CommandResult shutdownResult = db.command(new BasicDBObject("shutdown",
1));
shutdownResult.throwOnError();
}
public static void tryConnection(Mongo mongo, String dbname)
throws MongoException {
if (dbname == null || dbname.length() < 1) {
mongo.getDatabaseNames();
} else {
mongo.getDB(dbname).getCollectionNames();
}
}
/**
* Seehttp://www.mongodb.org/display/DOCS/Connections
*
* @param host
* @param port
* @param userName
* @param password
* @param databaseName
* @return
*/
public static MongoURI createMongoURI(String host, Integer port,
String userName, String password, String databaseName) {
return new MongoURI(createStringMongoURI(host, port, userName,
password, databaseName));
}
public static String createStringMongoURI(String host, Integer port,
String userName, String password, String databaseName) {
StringBuilder uri = new StringBuilder("mongodb://");
if (userName != null && userName.length() > 0) {
// username:password@
uri.append(userName);
uri.append(":");
uri.append(password);
uri.append("@");
}
uri.append(host);
if (port != null) {
uri.append(":");
uri.append(String.valueOf(port));
}
if (databaseName != null && databaseName.length() > 0) {
uri.append("/");
uri.append(databaseName);
}
return uri.toString();
}
}