首页>代码>基于Jfinal权限工作流管理系统>/epoch-erp/src/main/java/com/epoch/platform/base/component/annotation/AutoBindModels.java
package com.epoch.platform.base.component.annotation;

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

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import com.epoch.platform.base.component.constant.DBConst;
import com.epoch.platform.base.component.util.Config;
import com.jfinal.core.Controller;
import com.jfinal.kit.PropKit;
import com.jfinal.kit.StrKit;
import com.jfinal.plugin.activerecord.ActiveRecordPlugin;
import com.jfinal.plugin.activerecord.Model;

public class AutoBindModels {
	
	private final Logger logger = LoggerFactory.getLogger(AutoBindModels.class);
	
	private String configName = "main";

	private ActiveRecordPlugin arp;
	
	private List<Class<? extends Controller>> excludeClasses = new ArrayList<Class<? extends Controller>>();

	private List<String> includeJars = new ArrayList<String>();

	public AutoBindModels(ActiveRecordPlugin arp) {
		this.arp = arp;
		config();
	}

	public AutoBindModels(String configName, ActiveRecordPlugin arp) {
		this.configName = configName;
		this.arp = arp;
		config();
	}

	public AutoBindModels addJar(String jarName) {
		if (StrKit.notBlank(jarName)) {
			includeJars.add(jarName);
		}
		return this;
	}

	public AutoBindModels addJars(String jarNames) {
		if (StrKit.notBlank(jarNames)) {
			addJars(jarNames.split(","));
		}
		return this;
	}

	public AutoBindModels addJars(String[] jarsName) {
		includeJars.addAll(Arrays.asList(jarsName));
		return this;
	}
	
	public AutoBindModels addJars(List<String> jarsName) {
		includeJars.addAll(jarsName);
		return this;
	}

	public AutoBindModels addExcludeClass(Class<? extends Controller> clazz) {
		if (clazz != null) {
			excludeClasses.add(clazz);
		}
		return this;
	}

	public AutoBindModels addExcludeClasses(Class<? extends Controller>[] clazzes) {
		excludeClasses.addAll(Arrays.asList(clazzes));
		return this;
	}

	public AutoBindModels addExcludeClasses(List<Class<? extends Controller>> clazzes) {
		excludeClasses.addAll(clazzes);
		return this;
	}
	
	private void config() {
		List<Class<? extends Model>> controllerClasses = ClassSearcher.findInClasspathAndJars(Model.class, includeJars);
		ModelBind ModelBind = null;
		for (Class model : controllerClasses) {
			if (excludeClasses.contains(model)) {
				continue;
			}
			ModelBind = (ModelBind) model.getAnnotation(ModelBind.class);
			if (ModelBind == null || StrKit.isBlank(ModelBind.table())) {
				continue;
			}
			
			// all default ,so not null
			if (StrKit.isBlank(ModelBind.configName()) || StrKit.isBlank(configName)) {
				logger.error("routes.add is null");
				continue;
			}

			// join many database support
			if (configName.equals(ModelBind.configName())) {
				arp.addMapping(ModelBind.table(), ModelBind.key(), model);
				logger.debug(ModelBind.configName() //
						+ " --> routes.add(" + model + "," + ModelBind.table() + ", " + ModelBind.key() + ")");
			}

		}
	}
	
	public List<Class<? extends Controller>> getExcludeClasses() {
		return excludeClasses;
	}

	public void setExcludeClasses(List<Class<? extends Controller>> excludeClasses) {
		this.excludeClasses = excludeClasses;
	}

	public List<String> getIncludeJars() {
		return includeJars;
	}

	public void setIncludeJars(List<String> includeJars) {
		this.includeJars = includeJars;
	}
}
最近下载更多
wubz2008  LV5 2024年4月22日
pfb123456  LV8 2022年11月14日
xindong  LV12 2022年6月24日
bluesky2016  LV15 2022年6月10日
xqyedu  LV3 2022年6月10日
wanglinddad  LV55 2022年5月29日
liangc09  LV2 2022年4月28日
liuzejuncn  LV6 2022年3月27日
刘亦菲9527  LV15 2022年2月14日
yangctz  LV25 2022年1月11日
最近浏览更多
sunqing971  LV2 1月18日
CrystalQ  LV8 2024年8月15日
myfz0662  LV10 2024年5月8日
cityhunter  LV5 2024年4月22日
wubz2008  LV5 2024年4月22日
微信网友_6906962132258816  LV7 2024年4月21日
490154865 2024年3月4日
暂无贡献等级
1049066887  LV13 2024年3月3日
dmy2008  LV6 2023年12月27日
tiansitong  LV14 2023年12月24日
顶部 客服 微信二维码 底部
>扫描二维码关注最代码为好友扫描二维码关注最代码为好友