package com.bangzheng.plugin.mongo;
import com.jfinal.plugin.IPlugin;
import com.mongodb.DB;
import com.mongodb.MongoClient;
import com.mongodb.MongoCredential;
import com.mongodb.ServerAddress;
import com.mongodb.client.MongoDatabase;
import java.util.ArrayList;
import java.util.List;
/**
-
@author tree
/
@SuppressWarnings(“ALL”)
public class MongoDbPlugin implements IPlugin {
static MongoDatabase mongoDatabase;
static DB db;
protected volatile boolean isStarted = false;
private MongoClient mongoClient;
/*- 数据库地址
/
private String host;
/* - 数据库端口
/
private Integer port;
/* - 用户名
/
private String username;
/* - 密码
/
private String password;
/* - 数据库名
*/
private String database;
public MongoDbPlugin(String host, Integer port, String database, String username, String password) {
this.host = host;
this.port = port;
this.database = database;
this.username = username;
this.password = password;
}@Override
public boolean start() {
if (isStarted) {
return true;
}
mongoClient = getMongoClientWithCredential();
mongoDatabase = getMongoDB(mongoClient);
db = getDB(mongoClient);
isStarted = true;
return true;
}@Override
public boolean stop() {
if (mongoClient != null) {
mongoClient.close();
}
isStarted = false;
return true;
}/**********************************************************/
private List getServerAddressList() {
ServerAddress serverAddress = new ServerAddress(this.host, this.port);
List addrs = new ArrayList();
addrs.add(serverAddress);
return addrs;
}private List getMongoCredentialList() {
//MongoCredential.createScramSha1Credential()三个参数分别为 用户名 数据库名称 密码
MongoCredential credential = MongoCredential.createScramSha1Credential(this.username, this.database, this.password.toCharArray());
List credentials = new ArrayList();
credentials.add(credential);
return credentials;
}private MongoClient getMongoClientWithCredential() {
try {
return new MongoClient(getServerAddressList(), getMongoCredentialList());
} catch (Exception e) {
throw new RuntimeException(“无法连接mongodb,请检查配置!”);
}
}/**********************************************************/
private MongoClient getMongoClient() {
try {
return new MongoClient(host, port);
} catch (Exception e) {
throw new RuntimeException(“无法连接mongodb,请检查配置!”);
}
}private MongoDatabase getMongoDB(MongoClient mongoClient) {
try {
return mongoClient.getDatabase(database);
} catch (Exception e) {
throw new RuntimeException(“指定的数据库不存在,请检查配置!”);
}
}private DB getDB(MongoClient mongoClient) {
try {
return mongoClient.getDB(database);
} catch (Exception e) {
throw new RuntimeException(“指定的数据库不存在,请检查配置!”);
}
}
} - 数据库地址