package com.xx.map.mongdb;
import com.mongodb.DB;
import com.mongodb.Mongo;
import com.mongodb.MongoOptions;
import java.io.IOException;
import java.util.*;
/**
* @author zhanghui
*/
public class MongoDBConfig {
private static Mongo mongo;
private static DB imgDB;
private static Map<String, String> cfgMap = new HashMap<String, String>();
private static Hashtable<String, DB> mongoDBs = new Hashtable<String, DB>();
public static void init(String tempAddress,int tempPort,String tempUsername,String tempPassword,String tempDbname) {
try {
String address = tempAddress;
int port = tempPort;
String dbName =tempDbname;
String username = tempUsername;
String password =tempPassword;
mongo = new Mongo(address, port);
MongoOptions options=mongo.getMongoOptions();
options.socketTimeout=2000;//
options.autoConnectRetry = true;
options.connectionsPerHost = 80;
imgDB = mongo.getDB(dbName);
imgDB.addUser(username, password.toCharArray());
mongoDBs.put(dbName, imgDB);
} catch (IOException e) {
e.printStackTrace();
}
}
/**
*
* @return
*/
public static Mongo getMongo() {
return mongo;
}
/**
*
* @return
*/
public static DB getImgDB() {
return imgDB;
}
public static List<String> getDBNames() {
return mongo.getDatabaseNames();
}
/**
*
* @param dbName *
* @return
*/
public static DB getDBByName(String dbName) {
DB db = mongo.getDB(dbName);
if (!mongoDBs.contains(db)) {
mongoDBs.put(dbName, db);
}
return db;
}
}
package com.xx.map.mongdb;
import java.io.InputStream;
import java.util.List;
import com.mongodb.DB;
import com.mongodb.DBCollection;
import com.mongodb.gridfs.GridFS;
public interface MongodServiceImpl {
public abstract DBCollection getCollection();
/** * 获得数据库中文件的inputstream流 * @param filename * @return */
public abstract InputStream getFileInputStream(String filename);
/** * 获取所有数据库名称 * @return */
public List<String> getAllDBNames();
public abstract GridFS getGridFS();
public abstract String getDbName();
public abstract void setDbName(String dbName);
public abstract String getCollName();
public abstract void setCollName(String collName);
public abstract DB getDb();
public abstract void setDb(DB db);
}
package com.xx.map.mongdb;
import java.io.InputStream;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import com.mongodb.DB;
import com.mongodb.DBCollection;
import com.mongodb.gridfs.GridFS;
import com.mongodb.gridfs.GridFSDBFile;
import com.mongodb.gridfs.GridFSInputFile;
public class MongoService implements MongodServiceImpl {
private String dbName;
private String collName;
private DB db;
public MongoService(String dbName, String collName) {
this.dbName = dbName;
this.collName = collName;
db = MongoDBConfig.getDBByName(this.dbName);
}
/*
* (non-Javadoc)
*
* @see util.MongodService#getCollection()
*/
public DBCollection getCollection() {
System.out.println(db.getCollection(this.collName));
return db.getCollection(this.collName);
}
public InputStream getFileInputStream(String filename) {
GridFSDBFile gFile=getGridFS().findOne(filename);
if(gFile!=null){
return gFile.getInputStream();
}else{
System.out.println("没有找到图片:"+filename);
}
return getGridFS().findOne(filename).getInputStream();
}
/*
* (non-Javadoc)
*
* @see util.MongodService#getGridFS()
*/
public GridFS getGridFS() {
GridFS gridFS = new GridFS(db);
return gridFS;
}
/*
* (non-Javadoc)
*
* @see util.MongodService#getDbName()
*/
public String getDbName() {
return dbName;
}
/*
* (non-Javadoc)
*
* @see util.MongodService#setDbName(java.lang.String)
*/
public void setDbName(String dbName) {
this.dbName = dbName;
}
/*
* (non-Javadoc)
*
* @see util.MongodService#getCollName()
*/
public String getCollName() {
return collName;
}
/*
* (non-Javadoc)
*
* @see util.MongodService#setCollName(java.lang.String)
*/
public void setCollName(String collName) {
this.collName = collName;
}
/*
* (non-Javadoc)
*
* @see util.MongodService#getDb()
*/
public DB getDb() {
return MongoDBConfig.getDBByName(this.dbName);
}
/*
* (non-Javadoc)
*
* @see util.MongodService#setDb(com.mongodb.DB)
*/
public void setDb(DB db) {
this.db = db;
}
public List<String> getAllDBNames() {
return MongoDBConfig.getDBNames();
}
}