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

com.anwen.mongo.conditions.update.UpdateChainWrapper Maven / Gradle / Ivy

There is a newer version: 2.1.6.1
Show newest version
package com.anwen.mongo.conditions.update;

import com.anwen.mongo.conditions.AbstractChainWrapper;
import com.anwen.mongo.conditions.interfaces.Update;
import com.anwen.mongo.conditions.interfaces.condition.CompareCondition;
import com.anwen.mongo.enums.CompareEnum;
import com.anwen.mongo.enums.LogicTypeEnum;
import com.anwen.mongo.support.SFunction;

import java.util.ArrayList;
import java.util.List;

/**
 * update接口实现
 * @author JiaChaoYang
 * @date 2023/6/24/024 12:45
*/
public class UpdateChainWrapper> extends AbstractChainWrapper> implements Update,T> {

    protected final Children typedThis = (Children) this;

    private final List updateCompareList = new ArrayList<>();

    public List getUpdateCompareList() {
        return updateCompareList;
    }

    @Override
    public Children set(boolean condition, SFunction column, Object value) {
        return condition ? set(column,value) : typedThis;
    }

    @Override
    public Children set(SFunction column, Object value) {
        return getBaseUpdateCompare(column,value);
    }

    @Override
    public Children set(boolean condition, String column, Object value) {
        return condition ? set(column,value) : typedThis;
    }

    @Override
    public Children set(String column, Object value) {
        return getBaseUpdateCompare(column,value);
    }

    @Override
    public Children push(boolean condition, SFunction column, Object value) {
        return condition ? push(column,value) : typedThis;
    }

    @Override
    public Children push(SFunction column, Object value) {
        return getBaseUpdateCompare(column,value);
    }

    @Override
    public Children push(boolean condition, String column, Object value) {
        return condition ? push(column,value) : typedThis;
    }

    @Override
    public Children push(String column, Object value) {
        return getBaseUpdateCompare(column,value);
    }

    @Override
    public Children push(boolean condition, SFunction column, Object... value) {
        return condition ? push(column,value) : typedThis;
    }

    @Override
    public Children push(SFunction column, Object... value) {
        for (Object o : value) {
            getBaseUpdateCompare(column,o);
        }
        return typedThis;
    }

    @Override
    public Children push(boolean condition, String column, Object... value) {
        return condition ? push(column,value) : typedThis;
    }

    @Override
    public Children push(String column, Object... value) {
        for (Object o : value) {
            getBaseUpdateCompare(column,o);
        }
        return typedThis;
    }

    @Override
    public Children push(boolean condition, SFunction column, List value) {
        return condition ? push(column,value) : typedThis;
    }

    @Override
    public Children push(SFunction column, List value) {
        for (Object o : value) {
            getBaseUpdateCompare(column,o);
        }
        return typedThis;
    }

    @Override
    public Children push(boolean condition, String column, List value) {
        return condition ? push(column,value) : typedThis;
    }

    @Override
    public Children push(String column, List value) {
        for (Object o : value) {
            getBaseUpdateCompare(column,o);
        }
        return typedThis;
    }

    private Children getBaseUpdateCompare(SFunction column, Object value){
        updateCompareList.add(CompareCondition.builder().condition(Thread.currentThread().getStackTrace()[2].getMethodName()).column(column.getFieldNameLine()).value(value).type(CompareEnum.UPDATE.getKey()).logicType(LogicTypeEnum.AND.getKey()).build());
        return typedThis;
    }

    private Children getBaseUpdateCompare(String column, Object value){
        updateCompareList.add(CompareCondition.builder().condition(Thread.currentThread().getStackTrace()[2].getMethodName()).column(column).value(value).type(CompareEnum.UPDATE.getKey()).logicType(LogicTypeEnum.AND.getKey()).build());
        return typedThis;
    }

}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy