Browse Source

add BeeCP support

Looly 5 years ago
parent
commit
ef235aab5d

+ 2 - 0
CHANGELOG.md

@@ -21,6 +21,8 @@
 * 【extra 】     SpringUtil增加getBean(TypeReference)(pr#1009@Github)
 * 【core  】     Assert增加方法,支持自定义异常处理(pr#154@Gitee)
 * 【core  】     BooleanConverter增加数字转换规则(issue#I1R2AB@Gitee)
+* 【poi   】     sax方式读取增加一个sheet结束的回调(issue#155@Gitee)
+* 【db    】     增加BeeCP连接池支持
 
 ### Bug修复#
 * 【core  】     修复原始类型转换时,转换失败没有抛出异常的问题

+ 0 - 1
hutool-core/src/main/java/cn/hutool/core/util/ServiceLoaderUtil.java

@@ -28,7 +28,6 @@ public class ServiceLoaderUtil {
 	 */
 	public static <T> T loadFirstAvailable(Class<T> clazz) {
 		final Iterator<T> iterator = load(clazz).iterator();
-		//noinspection WhileLoopReplaceableByForEach
 		while(iterator.hasNext()){
 			try {
 				return iterator.next();

+ 6 - 0
hutool-db/pom.xml

@@ -72,6 +72,12 @@
 			<optional>true</optional>
 		</dependency>
 		<dependency>
+			<groupId>com.github.chris2018998</groupId>
+			<artifactId>BeeCP</artifactId>
+			<version>2.5.3</version>
+			<optional>true</optional>
+		</dependency>
+		<dependency>
 			<groupId>org.apache.commons</groupId>
 			<artifactId>commons-dbcp2</artifactId>
 			<version>${dbcp2.version}</version>

+ 7 - 1
hutool-db/src/main/java/cn/hutool/db/ds/DSFactory.java

@@ -1,6 +1,7 @@
 package cn.hutool.db.ds;
 
 import cn.hutool.core.util.StrUtil;
+import cn.hutool.db.ds.bee.BeeDSFactory;
 import cn.hutool.db.ds.c3p0.C3p0DSFactory;
 import cn.hutool.db.ds.dbcp.DbcpDSFactory;
 import cn.hutool.db.ds.druid.DruidDSFactory;
@@ -156,7 +157,7 @@ public abstract class DSFactory implements Closeable, Serializable{
 	/**
 	 * 创建数据源实现工厂<br>
 	 * 此方法通过“试错”方式查找引入项目的连接池库,按照优先级寻找,一旦寻找到则创建对应的数据源工厂<br>
-	 * 连接池优先级:Hikari &gt; Druid &gt; Tomcat &gt; Dbcp &gt; C3p0 &gt; Hutool Pooled
+	 * 连接池优先级:Hikari &gt; Druid &gt; Tomcat &gt; BeeCP &gt; Dbcp &gt; C3p0 &gt; Hutool Pooled
 	 *
 	 * @param setting 数据库配置项
 	 * @return 日志实现类
@@ -181,6 +182,11 @@ public abstract class DSFactory implements Closeable, Serializable{
 			// ignore
 		}
 		try {
+			return new BeeDSFactory(setting);
+		} catch (NoClassDefFoundError e) {
+			// ignore
+		}
+		try {
 			return new DbcpDSFactory(setting);
 		} catch (NoClassDefFoundError e) {
 			// ignore

+ 47 - 0
hutool-db/src/main/java/cn/hutool/db/ds/bee/BeeDSFactory.java

@@ -0,0 +1,47 @@
+package cn.hutool.db.ds.bee;
+
+import cn.beecp.BeeDataSource;
+import cn.beecp.BeeDataSourceConfig;
+import cn.hutool.core.util.StrUtil;
+import cn.hutool.db.ds.AbstractDSFactory;
+import cn.hutool.setting.Setting;
+
+import javax.sql.DataSource;
+
+/**
+ * BeeCP数据源工厂类
+ * 
+ * @author Looly
+ *
+ */
+public class BeeDSFactory extends AbstractDSFactory {
+	private static final long serialVersionUID = 1L;
+
+	public static final String DS_NAME = "BeeCP";
+
+	public BeeDSFactory() {
+		this(null);
+	}
+
+	public BeeDSFactory(Setting setting) {
+		super(DS_NAME, BeeDataSource.class, setting);
+	}
+
+	@Override
+	protected DataSource createDataSource(String jdbcUrl, String driver, String user, String pass, Setting poolSetting) {
+
+		final BeeDataSourceConfig beeConfig = new BeeDataSourceConfig(driver, jdbcUrl, user, pass);
+		poolSetting.toBean(beeConfig);
+
+		// remarks等特殊配置,since 5.3.8
+		String connValue;
+		for (String key : KEY_CONN_PROPS) {
+			connValue = poolSetting.getAndRemoveStr(key);
+			if(StrUtil.isNotBlank(connValue)){
+				beeConfig.addConnectProperty(key, connValue);
+			}
+		}
+
+		return new BeeDataSource(beeConfig);
+	}
+}

+ 8 - 0
hutool-db/src/main/java/cn/hutool/db/ds/bee/package-info.java

@@ -0,0 +1,8 @@
+/**
+ * BeeCP封装
+ * 见:https://github.com/Chris2018998/BeeCP
+ * 
+ * @author looly
+ *
+ */
+package cn.hutool.db.ds.bee;

+ 0 - 1
hutool-db/src/main/java/cn/hutool/db/ds/hikari/HikariDSFactory.java

@@ -1,6 +1,5 @@
 package cn.hutool.db.ds.hikari;
 
-import cn.hutool.core.lang.Console;
 import cn.hutool.core.util.StrUtil;
 import cn.hutool.db.ds.AbstractDSFactory;
 import cn.hutool.setting.Setting;

+ 17 - 15
hutool-poi/src/main/java/cn/hutool/poi/excel/sax/handler/RowHandler.java

@@ -6,36 +6,38 @@ import java.util.List;
 
 /**
  * Sax方式读取Excel行处理器
- * @author looly
  *
+ * @author looly
  */
 @FunctionalInterface
 public interface RowHandler {
 
 	/**
-	 * 处理一个单元格的数据
+	 * 处理一行数据
+	 *
 	 * @param sheetIndex 当前Sheet序号
-	 * @param rowIndex 当前行号
-	 * @param cellIndex 当前列号
-	 * @param value 单元格的值
-	 * @param xssfCellStyle 单元格样式
+	 * @param rowIndex   当前行号,从0开始计数
+	 * @param rowList    行数据列表
 	 */
-	default void handleCell(int sheetIndex, long rowIndex, int cellIndex, Object value, CellStyle xssfCellStyle){
-		//pass
-	}
+	void handle(int sheetIndex, long rowIndex, List<Object> rowList);
 
 	/**
-	 * 处理一行数据
-	 * @param sheetIndex 当前Sheet序号
-	 * @param rowIndex 当前行号,从0开始计数
-	 * @param rowList 行数据列表
+	 * 处理一个单元格的数据
+	 *
+	 * @param sheetIndex    当前Sheet序号
+	 * @param rowIndex      当前行号
+	 * @param cellIndex     当前列号
+	 * @param value         单元格的值
+	 * @param xssfCellStyle 单元格样式
 	 */
-	void handle(int sheetIndex, long rowIndex, List<Object> rowList);
+	default void handleCell(int sheetIndex, long rowIndex, int cellIndex, Object value, CellStyle xssfCellStyle) {
+		//pass
+	}
 
 	/**
 	 * 处理一个sheet页完成的操作
 	 */
-	default void doAfterAllAnalysed(){
+	default void doAfterAllAnalysed() {
 		//pass
 	}
 }