浏览代码

修改黑白名单过滤逻辑

James 3 年之前
父节点
当前提交
c22d232234
共有 1 个文件被更改,包括 18 次插入6 次删除
  1. 18 6
      src/main/java/com/jfinal/plugin/activerecord/generator/MetaBuilder.java

+ 18 - 6
src/main/java/com/jfinal/plugin/activerecord/generator/MetaBuilder.java

@@ -86,7 +86,11 @@ public class MetaBuilder {
 	public void addWhitelist(String... tableNames) {
 		if (tableNames != null) {
 			for (String table : tableNames) {
-				this.whitelist.add(table.trim());
+				table = table.trim();
+				if (this.blacklist.contains(table)) {
+					throw new IllegalArgumentException("黑名单中已经存在的 table 不能加入白名单 -> " + table);
+				}
+				this.whitelist.add(table);
 			}
 		}
 	}
@@ -103,7 +107,11 @@ public class MetaBuilder {
 	public void addBlacklist(String... tableNames) {
 		if (tableNames != null) {
 			for (String table : tableNames) {
-				this.blacklist.add(table.trim());
+				table = table.trim();
+				if (this.whitelist.contains(table)) {
+					throw new IllegalArgumentException("白名单中已经存在的 table 不能加入黑名单 -> " + table);
+				}
+				this.blacklist.add(table);
 			}
 		}
 	}
@@ -255,14 +263,18 @@ public class MetaBuilder {
 		while (rs.next()) {
 			String tableName = rs.getString("TABLE_NAME");
 			
-			// 白名单优先
-			if (whitelist.contains(tableName)) {
-				;
-			} else if (blacklist.contains(tableName)) {
+			// 如果使用白名单(size>0),则不在白名单之中的都将被过滤
+			if (whitelist.size() > 0 && !whitelist.contains(tableName)) {
+				System.out.println("Skip table :" + tableName);
+				continue ;
+			}
+			// 如果使用黑名单(size>0),则处在黑名单之中的都将被过滤
+			if (blacklist.size() > 0 && blacklist.contains(tableName)) {
 				System.out.println("Skip table :" + tableName);
 				continue ;
 			}
 			
+			// isSkipTable 为最早期的过滤机制,建议使用白名单、黑名单过滤
 			if (isSkipTable(tableName)) {
 				System.out.println("Skip table :" + tableName);
 				continue ;