
com.anwen.mongo.manager.MongoPlusClient Maven / Gradle / Ivy
package com.anwen.mongo.manager;
import com.anwen.mongo.annotation.collection.CollectionName;
import com.anwen.mongo.conn.CollectionManager;
import com.anwen.mongo.convert.CollectionNameConvert;
import com.anwen.mongo.model.BaseProperty;
import com.anwen.mongo.toolkit.StringUtils;
import com.mongodb.client.MongoClient;
import com.mongodb.client.MongoCollection;
import com.mongodb.client.MongoDatabase;
import org.bson.Document;
import java.util.Arrays;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
/**
* 连接管理器
*
* @author JiaChaoYang
**/
public class MongoPlusClient {
private BaseProperty baseProperty;
private MongoClient mongoClient;
private List mongoDatabase;
/**
* 连接管理器
* @author JiaChaoYang
* @date 2024/1/6 2:12
*/
private Map collectionManager;
private CollectionNameConvert collectionNameConvert;
public CollectionNameConvert getCollectionNameConvert() {
return collectionNameConvert;
}
public void setCollectionNameConvert(CollectionNameConvert collectionNameConvert) {
this.collectionNameConvert = collectionNameConvert;
}
public Map getCollectionManager() {
return collectionManager;
}
public MongoCollection getCollection(Class> clazz){
return getCollectionManager(clazz).getCollection(clazz);
}
public MongoCollection getCollection(Class> clazz,String collectionName){
return getCollectionManager(clazz).getCollection(collectionName);
}
public MongoCollection getCollection(String database,String collectionName){
return getCollectionManager(database).getCollection(collectionName);
}
public MongoCollection getCollection(String database,Class> clazz){
return getCollectionManager(database).getCollection(clazz);
}
public CollectionManager getCollectionManager(Class> clazz){
String database = baseProperty.getDatabase();
if (database.contains(",")){
database = Arrays.stream(database.split(",")).collect(Collectors.toList()).get(0);
}
CollectionName collectionName = clazz.getAnnotation(CollectionName.class);
if (collectionName != null && StringUtils.isNotBlank(collectionName.database())){
database = collectionName.database();
}
return getCollectionManager(database);
}
public CollectionManager getCollectionManager(String database){
Map managerMap = getCollectionManager();
if (StringUtils.isBlank(database)){
database = managerMap.keySet().stream().findFirst().get();
}
CollectionManager collectionManager = managerMap.get(database);
if (null == collectionManager){
collectionManager = new CollectionManager(getMongoClient(), collectionNameConvert, database);
getMongoDatabase().add(getMongoClient().getDatabase(database));
getCollectionManager().put(database,collectionManager);
}
return collectionManager;
}
public void setCollectionManager(Map collectionManager) {
this.collectionManager = collectionManager;
}
public BaseProperty getBaseProperty() {
return baseProperty;
}
public void setBaseProperty(BaseProperty baseProperty) {
this.baseProperty = baseProperty;
}
public MongoClient getMongoClient() {
return mongoClient;
}
public void setMongoClient(MongoClient mongoClient) {
this.mongoClient = mongoClient;
}
public List getMongoDatabase() {
return mongoDatabase;
}
public void setMongoDatabase(List mongoDatabase) {
this.mongoDatabase = mongoDatabase;
}
@Override
public String toString() {
return "ConnectionManager{" +
"baseProperty=" + baseProperty +
", mongoClient=" + mongoClient +
", mongoDatabase=" + mongoDatabase +
", collectionManager=" + collectionManager +
'}';
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy