From 9b58b8295a9fc84f04938c5707ce977b838175f1 Mon Sep 17 00:00:00 2001 From: Looly Date: Wed, 18 Aug 2021 09:24:54 +0800 Subject: [PATCH] fix config --- CHANGELOG.md | 1 + .../cn/hutool/core/text/csv/CsvConfig.java | 18 +++++++++++------- .../cn/hutool/core/text/csv/CsvReadConfig.java | 2 +- .../hutool/core/text/csv/CsvWriteConfig.java | 2 +- .../cn/hutool/core/text/csv/CsvReaderTest.java | 13 +++++++++++++ 5 files changed, 27 insertions(+), 9 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index f7115bfc0..b4752f0f7 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -9,6 +9,7 @@ * 【core 】 增加NamingCase类 * 【core 】 ListUtil增加page方法重载(pr#1761@Github) * 【crypto 】 增加ASN1Util +* 【core 】 CsvConfig改为泛型形式 ### 🐞Bug修复 diff --git a/hutool-core/src/main/java/cn/hutool/core/text/csv/CsvConfig.java b/hutool-core/src/main/java/cn/hutool/core/text/csv/CsvConfig.java index 991ff2614..24f5f5a84 100644 --- a/hutool-core/src/main/java/cn/hutool/core/text/csv/CsvConfig.java +++ b/hutool-core/src/main/java/cn/hutool/core/text/csv/CsvConfig.java @@ -7,10 +7,11 @@ import java.io.Serializable; /** * CSV基础配置项,此配置项可用于读取和写出CSV,定义了包括字段分隔符、文本包装符等符号 * + * @param 继承子类类型,用于this返回 * @author looly * @since 4.0.5 */ -public class CsvConfig implements Serializable { +public class CsvConfig> implements Serializable { private static final long serialVersionUID = -8069578249066158459L; /** @@ -32,9 +33,10 @@ public class CsvConfig implements Serializable { * @param fieldSeparator 字段分隔符,默认逗号',' * @return this */ - public CsvConfig setFieldSeparator(final char fieldSeparator) { + @SuppressWarnings("unchecked") + public T setFieldSeparator(final char fieldSeparator) { this.fieldSeparator = fieldSeparator; - return this; + return (T) this; } /** @@ -43,9 +45,10 @@ public class CsvConfig implements Serializable { * @param textDelimiter 文本分隔符,文本包装符,默认双引号'"' * @return this */ - public CsvConfig setTextDelimiter(char textDelimiter) { + @SuppressWarnings("unchecked") + public T setTextDelimiter(char textDelimiter) { this.textDelimiter = textDelimiter; - return this; + return (T) this; } /** @@ -55,8 +58,9 @@ public class CsvConfig implements Serializable { * @return this * @since 5.5.7 */ - public CsvConfig setCommentCharacter(char commentCharacter) { + @SuppressWarnings("unchecked") + public T setCommentCharacter(char commentCharacter) { this.commentCharacter = commentCharacter; - return this; + return (T) this; } } diff --git a/hutool-core/src/main/java/cn/hutool/core/text/csv/CsvReadConfig.java b/hutool-core/src/main/java/cn/hutool/core/text/csv/CsvReadConfig.java index b1e7b5b97..30fdb36fb 100644 --- a/hutool-core/src/main/java/cn/hutool/core/text/csv/CsvReadConfig.java +++ b/hutool-core/src/main/java/cn/hutool/core/text/csv/CsvReadConfig.java @@ -8,7 +8,7 @@ import java.io.Serializable; * @author looly * */ -public class CsvReadConfig extends CsvConfig implements Serializable { +public class CsvReadConfig extends CsvConfig implements Serializable { private static final long serialVersionUID = 5396453565371560052L; /** 是否首行做为标题行,默认false */ diff --git a/hutool-core/src/main/java/cn/hutool/core/text/csv/CsvWriteConfig.java b/hutool-core/src/main/java/cn/hutool/core/text/csv/CsvWriteConfig.java index 75af5948f..eff5b6430 100644 --- a/hutool-core/src/main/java/cn/hutool/core/text/csv/CsvWriteConfig.java +++ b/hutool-core/src/main/java/cn/hutool/core/text/csv/CsvWriteConfig.java @@ -9,7 +9,7 @@ import java.io.Serializable; * * @author looly */ -public class CsvWriteConfig extends CsvConfig implements Serializable { +public class CsvWriteConfig extends CsvConfig implements Serializable { private static final long serialVersionUID = 5396453565371560052L; /** diff --git a/hutool-core/src/test/java/cn/hutool/core/text/csv/CsvReaderTest.java b/hutool-core/src/test/java/cn/hutool/core/text/csv/CsvReaderTest.java index 0133e102c..041b3a8ba 100644 --- a/hutool-core/src/test/java/cn/hutool/core/text/csv/CsvReaderTest.java +++ b/hutool-core/src/test/java/cn/hutool/core/text/csv/CsvReaderTest.java @@ -145,4 +145,17 @@ public class CsvReaderTest { Assert.assertEquals(6, data.getRow(1).getOriginalLineNumber()); Assert.assertEquals("a,s,d,f", CollUtil.join(data.getRow(1), ",")); } + + @Test + public void customConfigTest(){ + final CsvReader reader = CsvUtil.getReader( + CsvReadConfig.defaultConfig() + .setTextDelimiter('\'') + .setFieldSeparator(';')); + final CsvData csvRows = reader.readFromStr("123;456;'789;0'abc;"); + final CsvRow row = csvRows.getRow(0); + Assert.assertEquals("123", row.get(0)); + Assert.assertEquals("456", row.get(1)); + Assert.assertEquals("'789;0'abc", row.get(2)); + } }