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

cn.schoolwow.quickdao.module.entity.flow.common.ShouldIgnoreClassFlow Maven / Gradle / Ivy

There is a newer version: 5.3.1
Show newest version
package cn.schoolwow.quickdao.module.entity.flow.common;

import cn.schoolwow.quickdao.annotation.Ignore;
import cn.schoolwow.quickdao.domain.QuickDAOConfig;
import cn.schoolwow.quickflow.domain.FlowContext;
import cn.schoolwow.quickflow.flow.BusinessFlow;

public class ShouldIgnoreClassFlow implements BusinessFlow {
    @Override
    public void executeBusinessFlow(FlowContext flowContext) throws Exception {
        boolean shouldIgnoreClass = shouldIgnoreClass(flowContext);
        flowContext.putData("shouldIgnoreClass", shouldIgnoreClass);
    }

    @Override
    public String name() {
        return "是否应该忽略该实体类";
    }

    private boolean shouldIgnoreClass(FlowContext flowContext){
        QuickDAOConfig quickDAOConfig = (QuickDAOConfig) flowContext.checkData("quickDAOConfig");
        Class clazz = (Class) flowContext.checkData("clazz");

        if (clazz.isEnum()) {
            return true;
        }
        if (clazz.getAnnotation(Ignore.class) != null) {
            return true;
        }
        //排除内部类
        if(clazz.isMemberClass()){
            return true;
        }

        //根据类过滤
        if (null != quickDAOConfig.entityOption.ignoreClassList) {
            for (Class _clazz : quickDAOConfig.entityOption.ignoreClassList) {
                if (_clazz.getName().equals(clazz.getName())) {
                    return true;
                }
            }
        }
        //根据包名过滤
        if (null != quickDAOConfig.entityOption.ignorePackageNameList) {
            for (String ignorePackageName : quickDAOConfig.entityOption.ignorePackageNameList) {
                if (clazz.getName().contains(ignorePackageName)) {
                    return true;
                }
            }
        }
        //如果用户已经指定了该实体类,则跳过
        for (Class _clazz : quickDAOConfig.entityOption.entityClassMap.keySet()) {
            if (_clazz.getName().equals(clazz.getName())) {
                return true;
            }
        }
        //执行用户判断逻辑
        if (null != quickDAOConfig.entityOption.ignorePredicate) {
            if (quickDAOConfig.entityOption.ignorePredicate.test(clazz)) {
                return true;
            }
        }
        return false;
    }
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy