fix config

This commit is contained in:
Looly 2021-08-18 09:24:54 +08:00
parent 6ac88ef1fe
commit 9b58b8295a
5 changed files with 27 additions and 9 deletions

View File

@ -9,6 +9,7 @@
* 【core 】 增加NamingCase类
* 【core 】 ListUtil增加page方法重载pr#1761@Github
* 【crypto 】 增加ASN1Util
* 【core 】 CsvConfig改为泛型形式
### 🐞Bug修复

View File

@ -7,10 +7,11 @@ import java.io.Serializable;
/**
* CSV基础配置项此配置项可用于读取和写出CSV定义了包括字段分隔符文本包装符等符号
*
* @param <T> 继承子类类型用于this返回
* @author looly
* @since 4.0.5
*/
public class CsvConfig implements Serializable {
public class CsvConfig<T extends 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;
}
}

View File

@ -8,7 +8,7 @@ import java.io.Serializable;
* @author looly
*
*/
public class CsvReadConfig extends CsvConfig implements Serializable {
public class CsvReadConfig extends CsvConfig<CsvReadConfig> implements Serializable {
private static final long serialVersionUID = 5396453565371560052L;
/** 是否首行做为标题行默认false */

View File

@ -9,7 +9,7 @@ import java.io.Serializable;
*
* @author looly
*/
public class CsvWriteConfig extends CsvConfig implements Serializable {
public class CsvWriteConfig extends CsvConfig<CsvWriteConfig> implements Serializable {
private static final long serialVersionUID = 5396453565371560052L;
/**

View File

@ -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));
}
}