All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.anwen.mongo.manager.MongoPlusClient Maven / Gradle / Ivy

There is a newer version: 2.1.6.1
Show newest version
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