diff --git a/CHANGELOG.md b/CHANGELOG.md
index 330b7d533..8d4688788 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -3,14 +3,17 @@
-------------------------------------------------------------------------------------------------------------
-# 5.7.14 (2021-09-23)
+# 5.7.14 (2021-09-24)
### 🐣新特性
* 【extra 】 修复HttpCookie设置cookies的方法,不符合RFC6265规范问题(issue#I4B70D@Gitee)
* 【http 】 优化Browser版本正则判断
+* 【setting】 增加YamlUtil
+* 【extra 】 SenvenZExtractor改名为SevenZExtractor,增加getFirst、get方法
### 🐞Bug修复
* 【http 】 修复HttpCookie设置cookies的方法,不符合RFC6265规范问题(pr#418@Gitee)
+* 【http 】 修复Extractor中filter无效问题
-------------------------------------------------------------------------------------------------------------
diff --git a/hutool-core/src/main/java/cn/hutool/core/img/gif/AnimatedGifEncoder.java b/hutool-core/src/main/java/cn/hutool/core/img/gif/AnimatedGifEncoder.java
index 8ee69c1a3..f1cf8df40 100644
--- a/hutool-core/src/main/java/cn/hutool/core/img/gif/AnimatedGifEncoder.java
+++ b/hutool-core/src/main/java/cn/hutool/core/img/gif/AnimatedGifEncoder.java
@@ -147,8 +147,8 @@ public class AnimatedGifEncoder {
/**
* Adds next GIF frame. The frame is not written immediately, but is
* actually deferred until the next frame is received so that timing
- * data can be inserted. Invoking finish()
flushes all
- * frames. If setSize
was not invoked, the size of the
+ * data can be inserted. Invoking {@code finish()} flushes all
+ * frames. If {@code setSize} was not invoked, the size of the
* first image is used for all subsequent frames.
*
* @param im BufferedImage containing frame to write.
@@ -225,7 +225,7 @@ public class AnimatedGifEncoder {
/**
* Sets frame rate in frames per second. Equivalent to
- * setDelay(1000/fps)
.
+ * {@code setDelay(1000/fps)}.
*
* @param fps float frame rate (frames per second)
*/
diff --git a/hutool-core/src/main/java/cn/hutool/core/io/BOMInputStream.java b/hutool-core/src/main/java/cn/hutool/core/io/BOMInputStream.java
index 8322cef20..85627fec7 100644
--- a/hutool-core/src/main/java/cn/hutool/core/io/BOMInputStream.java
+++ b/hutool-core/src/main/java/cn/hutool/core/io/BOMInputStream.java
@@ -25,6 +25,8 @@ import java.io.PushbackInputStream;
*
*
* 参考: http://akini.mbnet.fi/java/unicodereader/UnicodeInputStream.java.txt
+ *
+ * @author looly
*/
public class BOMInputStream extends InputStream {
@@ -36,10 +38,21 @@ public class BOMInputStream extends InputStream {
private static final int BOM_SIZE = 4;
// ----------------------------------------------------------------- Constructor start
+
+ /**
+ * 构造
+ * @param in 流
+ */
public BOMInputStream(InputStream in) {
this(in, CharsetUtil.UTF_8);
}
+ /**
+ * 构造
+ *
+ * @param in 流
+ * @param defaultCharset 默认编码
+ */
public BOMInputStream(InputStream in, String defaultCharset) {
this.in = new PushbackInputStream(in, BOM_SIZE);
this.defaultCharset = defaultCharset;
@@ -61,7 +74,7 @@ public class BOMInputStream extends InputStream {
* @return 编码
*/
public String getCharset() {
- if (!isInited) {
+ if (false == isInited) {
try {
init();
} catch (IOException ex) {
@@ -117,7 +130,6 @@ public class BOMInputStream extends InputStream {
charset = defaultCharset;
unread = n;
}
- // System.out.println("read=" + n + ", unread=" + unread);
if (unread > 0) {
in.unread(bom, (n - unread), unread);
diff --git a/hutool-core/src/main/java/cn/hutool/core/io/BomReader.java b/hutool-core/src/main/java/cn/hutool/core/io/BomReader.java
new file mode 100644
index 000000000..ff28a5e8a
--- /dev/null
+++ b/hutool-core/src/main/java/cn/hutool/core/io/BomReader.java
@@ -0,0 +1,58 @@
+package cn.hutool.core.io;
+
+import cn.hutool.core.lang.Assert;
+
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.InputStreamReader;
+import java.io.Reader;
+import java.io.UnsupportedEncodingException;
+
+/**
+ * 读取带BOM头的流内容的Reader,如果非bom的流或无法识别的编码,则默认UTF-8
+ * BOM定义:http://www.unicode.org/unicode/faq/utf_bom.html
+ *
+ *
+ * FileInputStream fis = new FileInputStream(file);
+ * BomReader uin = new BomReader(fis);
+ *
+ *
+ * @author looly
+ * @since 5.7.14
+ */
+public class BomReader extends Reader {
+
+ private InputStreamReader reader;
+
+ /**
+ * 构造
+ *
+ * @param in 流
+ */
+ public BomReader(InputStream in) {
+ Assert.notNull(in, "InputStream must be not null!");
+ final BOMInputStream bin = (in instanceof BOMInputStream) ? (BOMInputStream) in : new BOMInputStream(in);
+ try {
+ this.reader = new InputStreamReader(bin, bin.getCharset());
+ } catch (UnsupportedEncodingException ignore) {
+ }
+ }
+
+ @Override
+ public int read(char[] cbuf, int off, int len) throws IOException {
+ return reader.read(cbuf, off, len);
+ }
+
+ @Override
+ public void close() throws IOException {
+ reader.close();
+ }
+}
diff --git a/hutool-core/src/main/java/cn/hutool/core/io/IoUtil.java b/hutool-core/src/main/java/cn/hutool/core/io/IoUtil.java
index df058513d..3479c17b8 100644
--- a/hutool-core/src/main/java/cn/hutool/core/io/IoUtil.java
+++ b/hutool-core/src/main/java/cn/hutool/core/io/IoUtil.java
@@ -224,6 +224,17 @@ public class IoUtil extends NioUtil {
return getReader(in, in.getCharset());
}
+ /**
+ * 从{@link InputStream}中获取{@link BomReader}
+ *
+ * @param in {@link InputStream}
+ * @return {@link BomReader}
+ * @since 5.7.14
+ */
+ public static BomReader getBomReader(InputStream in) {
+ return new BomReader(in);
+ }
+
/**
* 获得一个Reader
*
diff --git a/hutool-core/src/main/java/cn/hutool/core/lang/Dict.java b/hutool-core/src/main/java/cn/hutool/core/lang/Dict.java
index 94fee338b..35f2de897 100644
--- a/hutool-core/src/main/java/cn/hutool/core/lang/Dict.java
+++ b/hutool-core/src/main/java/cn/hutool/core/lang/Dict.java
@@ -1,5 +1,6 @@
package cn.hutool.core.lang;
+import cn.hutool.core.bean.BeanPath;
import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.convert.Convert;
@@ -76,7 +77,7 @@ public class Dict extends LinkedHashMap奇数参数必须为value,可以为任意类型。
* *- Dict dict = Dict.of( + * Dict dict = Dict.of( * "RED", "#FF0000", * "GREEN", "#00FF00", * "BLUE", "#0000FF" @@ -91,10 +92,10 @@ public class Dict extends LinkedHashMapimplements BasicTypeGett final Dict dict = create(); String key = null; - for(int i = 0; i < keysAndValues.length; i++){ - if(i % 2 == 0){ + for (int i = 0; i < keysAndValues.length; i++) { + if (i % 2 == 0) { key = Convert.toStr(keysAndValues[i]); - } else{ + } else { dict.put(key, keysAndValues[i]); } } @@ -504,6 +505,61 @@ public class Dict extends LinkedHashMap implements BasicTypeGett public Number getNumber(String attr) { return get(attr, null); } + + /** + * 通过表达式获取JSON中嵌套的对象
+ *+ *
+ *- .表达式,可以获取Bean对象中的属性(字段)值或者Map中key对应的值
+ *- []表达式,可以获取集合等对象中对应index的值
+ *+ * 表达式栗子: + * + *
+ * persion + * persion.name + * persons[3] + * person.friends[5].name + *+ * + * @param expression 表达式 + * @return 对象 + * @see BeanPath#get(Object) + * @since 5.7.14 + */ + @SuppressWarnings("unchecked") + publicT getByPath(String expression) { + return (T) BeanPath.create(expression).get(this); + } + + /** + * 通过表达式获取JSON中嵌套的对象
+ *+ *
+ *- .表达式,可以获取Bean对象中的属性(字段)值或者Map中key对应的值
+ *- []表达式,可以获取集合等对象中对应index的值
+ *+ * 表达式栗子: + * + *
+ * persion + * persion.name + * persons[3] + * person.friends[5].name + *+ *+ * 获取表达式对应值后转换为对应类型的值 + * + * @param
返回值类型 + * @param expression 表达式 + * @param resultType 返回值类型 + * @return 对象 + * @see BeanPath#get(Object) + * @since 5.7.14 + */ + public T getByPath(String expression, Class resultType) { + return Convert.convert(resultType, getByPath(expression)); + } // -------------------------------------------------------------------- Get end @Override diff --git a/hutool-db/src/main/java/cn/hutool/db/DaoTemplate.java b/hutool-db/src/main/java/cn/hutool/db/DaoTemplate.java index 6ae151470..cdf1f9e7b 100644 --- a/hutool-db/src/main/java/cn/hutool/db/DaoTemplate.java +++ b/hutool-db/src/main/java/cn/hutool/db/DaoTemplate.java @@ -14,45 +14,61 @@ import java.util.List; * 此模板用于简化对指定表的操作,简化的操作如下:
* 1、在初始化时指定了表名,CRUD操作时便不需要表名
* 2、在初始化时指定了主键,某些需要主键的操作便不需要指定主键类型 - * @author Looly * + * @author Looly */ public class DaoTemplate { - /** 表名 */ + /** + * 表名 + */ protected String tableName; - /** 本表的主键字段,请在子类中覆盖或构造方法中指定,默认为id */ + /** + * 本表的主键字段,请在子类中覆盖或构造方法中指定,默认为id + */ protected String primaryKeyField = "id"; - /** SQL运行器 */ + /** + * SQL运行器 + */ protected Db db; //--------------------------------------------------------------- Constructor start + /** * 构造,此构造需要自定义SqlRunner,主键默认为id + * * @param tableName 数据库表名 */ public DaoTemplate(String tableName) { - this(tableName, (String)null); + this(tableName, (String) null); } /** * 构造,使用默认的池化连接池,读取默认配置文件的空分组,适用于只有一个数据库的情况 - * @param tableName 数据库表名 + * + * @param tableName 数据库表名 * @param primaryKeyField 主键字段名 */ public DaoTemplate(String tableName, String primaryKeyField) { this(tableName, primaryKeyField, DSFactory.get()); } + /** + * 构造 + * + * @param tableName 表 + * @param ds 数据源 + */ public DaoTemplate(String tableName, DataSource ds) { this(tableName, null, ds); } /** * 构造 - * @param tableName 表名 + * + * @param tableName 表名 * @param primaryKeyField 主键字段名 - * @param ds 数据源 + * @param ds 数据源 */ public DaoTemplate(String tableName, String primaryKeyField, DataSource ds) { this(tableName, primaryKeyField, Db.use(ds)); @@ -60,13 +76,14 @@ public class DaoTemplate { /** * 构造 - * @param tableName 表名 + * + * @param tableName 表名 * @param primaryKeyField 主键字段名 - * @param db Db对象 + * @param db Db对象 */ public DaoTemplate(String tableName, String primaryKeyField, Db db) { this.tableName = tableName; - if(StrUtil.isNotBlank(primaryKeyField)){ + if (StrUtil.isNotBlank(primaryKeyField)) { this.primaryKeyField = primaryKeyField; } this.db = db; @@ -74,8 +91,10 @@ public class DaoTemplate { //--------------------------------------------------------------- Constructor end //------------------------------------------------------------- Add start + /** * 添加 + * * @param entity 实体对象 * @return 插入行数 * @throws SQLException SQL执行异常 @@ -86,6 +105,7 @@ public class DaoTemplate { /** * 添加 + * * @param entity 实体对象 * @return 主键列表 * @throws SQLException SQL执行异常 @@ -96,6 +116,7 @@ public class DaoTemplate { /** * 添加 + * * @param entity 实体对象 * @return 自增主键 * @throws SQLException SQL执行异常 @@ -106,11 +127,12 @@ public class DaoTemplate { //------------------------------------------------------------- Add end //------------------------------------------------------------- Delete start + /** * 删除 - * @param主键类型 * - * @param pk 主键 + * @param 主键类型 + * @param pk 主键 * @return 删除行数 * @throws SQLException SQL执行异常 */ @@ -124,7 +146,7 @@ public class DaoTemplate { /** * 删除 * - * @param 主键类型 + * @param 主键类型 * @param field 字段名 * @param value 字段值 * @return 删除行数 @@ -141,7 +163,7 @@ public class DaoTemplate { /** * 删除 * - * @param 主键类型 + * @param 主键类型 * @param where 删除条件,当条件为空时,返回0(防止误删全表) * @return 删除行数 * @throws SQLException SQL执行异常 @@ -155,14 +177,16 @@ public class DaoTemplate { //------------------------------------------------------------- Delete end //------------------------------------------------------------- Update start + /** * 按照条件更新 + * * @param record 更新的内容 - * @param where 条件 + * @param where 条件 * @return 更新条目数 * @throws SQLException SQL执行异常 */ - public int update(Entity record, Entity where) throws SQLException{ + public int update(Entity record, Entity where) throws SQLException { if (MapUtil.isEmpty(record)) { return 0; } @@ -171,6 +195,7 @@ public class DaoTemplate { /** * 更新 + * * @param entity 实体对象,必须包含主键 * @return 更新行数 * @throws SQLException SQL执行异常 @@ -194,6 +219,7 @@ public class DaoTemplate { /** * 增加或者更新实体 + * * @param entity 实体,当包含主键时更新,否则新增 * @return 新增或更新条数 * @throws SQLException SQL执行异常 @@ -204,11 +230,12 @@ public class DaoTemplate { //------------------------------------------------------------- Update end //------------------------------------------------------------- Get start + /** * 根据主键获取单个记录 * * @param 主键类型 - * @param pk 主键值 + * @param pk 主键值 * @return 记录 * @throws SQLException SQL执行异常 */ @@ -220,7 +247,7 @@ public class DaoTemplate { * 根据某个字段(最好是唯一字段)查询单个记录
* 当有多条返回时,只显示查询到的第一条 * - * @param字段值类型 + * @param 字段值类型 * @param field 字段名 * @param value 字段值 * @return 记录 @@ -243,10 +270,11 @@ public class DaoTemplate { //------------------------------------------------------------- Get end //------------------------------------------------------------- Find start + /** * 根据某个字段值查询结果 * - * @param 字段值类型 + * @param 字段值类型 * @param field 字段名 * @param value 字段值 * @return 记录 @@ -258,6 +286,7 @@ public class DaoTemplate { /** * 查询当前表的所有记录 + * * @return 记录 * @throws SQLException SQL执行异常 */ @@ -281,14 +310,14 @@ public class DaoTemplate { * SQL语句可以是非完整SQL语句,可以只提供查询的条件部分(例如WHERE部分)
* 此方法会自动补全SELECT * FROM [tableName] 部分,这样就无需关心表名,直接提供条件即可 * - * @param sql SQL语句 + * @param sql SQL语句 * @param params SQL占位符中对应的参数 * @return 记录 * @throws SQLException SQL执行异常 */ public ListfindBySql(String sql, Object... params) throws SQLException { String selectKeyword = StrUtil.subPre(sql.trim(), 6).toLowerCase(); - if(false == "select".equals(selectKeyword)){ + if (false == "select".equals(selectKeyword)) { sql = "SELECT * FROM " + this.tableName + " " + sql; } return db.query(sql, params); @@ -297,13 +326,13 @@ public class DaoTemplate { /** * 分页 * - * @param where 条件 - * @param page 分页对象 + * @param where 条件 + * @param page 分页对象 * @param selectFields 查询的字段列表 * @return 分页结果集 * @throws SQLException SQL执行异常 */ - public PageResult page(Entity where, Page page, String... selectFields) throws SQLException{ + public PageResult page(Entity where, Page page, String... selectFields) throws SQLException { return db.page(Arrays.asList(selectFields), fixEntity(where), page); } @@ -311,11 +340,11 @@ public class DaoTemplate { * 分页 * * @param where 条件 - * @param page 分页对象 + * @param page 分页对象 * @return 分页结果集 * @throws SQLException SQL执行异常 */ - public PageResult page(Entity where, Page page) throws SQLException{ + public PageResult page(Entity where, Page page) throws SQLException { return db.page(fixEntity(where), page); } @@ -326,7 +355,7 @@ public class DaoTemplate { * @return 数量 * @throws SQLException SQL执行异常 */ - public long count(Entity where) throws SQLException{ + public long count(Entity where) throws SQLException { return db.count(fixEntity(where)); } @@ -337,20 +366,21 @@ public class DaoTemplate { * @return 是否存在 * @throws SQLException SQL执行异常 */ - public boolean exist(Entity where) throws SQLException{ + public boolean exist(Entity where) throws SQLException { return this.count(where) > 0; } //------------------------------------------------------------- Find end /** * 修正Entity对象,避免null和填充表名 + * * @param entity 实体类 * @return 修正后的实体类 */ - private Entity fixEntity(Entity entity){ - if(null == entity){ + private Entity fixEntity(Entity entity) { + if (null == entity) { entity = Entity.create(tableName); - }else if(StrUtil.isBlank(entity.getTableName())){ + } else if (StrUtil.isBlank(entity.getTableName())) { entity.setTableName(tableName); } return entity; diff --git a/hutool-db/src/test/java/cn/hutool/db/PicTransferTest.java b/hutool-db/src/test/java/cn/hutool/db/PicTransferTest.java new file mode 100644 index 000000000..4f3c6b315 --- /dev/null +++ b/hutool-db/src/test/java/cn/hutool/db/PicTransferTest.java @@ -0,0 +1,34 @@ +package cn.hutool.db; + +import cn.hutool.core.collection.ListUtil; +import cn.hutool.core.io.FileUtil; +import cn.hutool.core.util.StrUtil; +import org.junit.Ignore; +import org.junit.Test; + +import java.sql.ResultSet; +import java.sql.SQLException; + +public class PicTransferTest { + + @Test + @Ignore + public void findTest() throws SQLException { + Db.use().find( + ListUtil.of("NAME", "TYPE", "GROUP", "PIC"), + Entity.create("PIC_INFO").set("TYPE", 1), + rs -> { + while(rs.next()){ + save(rs); + } + return null; + } + ); + } + + private static void save(ResultSet rs) throws SQLException{ + String destDir = "d:/test/pic"; + String path = StrUtil.format("{}/{}-{}.jpg", destDir, rs.getString("NAME"), rs.getString("GROUP")); + FileUtil.writeFromStream(rs.getBlob("PIC").getBinaryStream(), path); + } +} diff --git a/hutool-extra/pom.xml b/hutool-extra/pom.xml index 88edd04d2..5e0c1edfe 100644 --- a/hutool-extra/pom.xml +++ b/hutool-extra/pom.xml @@ -451,11 +451,5 @@ compile true -- diff --git a/hutool-extra/src/main/java/cn/hutool/extra/compress/CompressUtil.java b/hutool-extra/src/main/java/cn/hutool/extra/compress/CompressUtil.java index 42d682ed6..f01eb2cee 100644 --- a/hutool-extra/src/main/java/cn/hutool/extra/compress/CompressUtil.java +++ b/hutool-extra/src/main/java/cn/hutool/extra/compress/CompressUtil.java @@ -6,7 +6,7 @@ import cn.hutool.extra.compress.archiver.Archiver; import cn.hutool.extra.compress.archiver.SevenZArchiver; import cn.hutool.extra.compress.archiver.StreamArchiver; import cn.hutool.extra.compress.extractor.Extractor; -import cn.hutool.extra.compress.extractor.SenvenZExtractor; +import cn.hutool.extra.compress.extractor.SevenZExtractor; import cn.hutool.extra.compress.extractor.StreamExtractor; import org.apache.commons.compress.archivers.ArchiveStreamFactory; import org.apache.commons.compress.archivers.StreamingNotSupportedException; @@ -168,14 +168,14 @@ public class CompressUtil { */ public static Extractor createExtractor(Charset charset, String archiverName, File file) { if (ArchiveStreamFactory.SEVEN_Z.equalsIgnoreCase(archiverName)) { - return new SenvenZExtractor(file); + return new SevenZExtractor(file); } try { return new StreamExtractor(charset, archiverName, file); } catch (CompressException e) { final Throwable cause = e.getCause(); if (cause instanceof StreamingNotSupportedException && cause.getMessage().contains("7z")) { - return new SenvenZExtractor(file); + return new SevenZExtractor(file); } throw e; } @@ -218,14 +218,15 @@ public class CompressUtil { */ public static Extractor createExtractor(Charset charset, String archiverName, InputStream in) { if (ArchiveStreamFactory.SEVEN_Z.equalsIgnoreCase(archiverName)) { - return new SenvenZExtractor(in); + return new SevenZExtractor(in); } + try { return new StreamExtractor(charset, archiverName, in); } catch (CompressException e) { final Throwable cause = e.getCause(); if (cause instanceof StreamingNotSupportedException && cause.getMessage().contains("7z")) { - return new SenvenZExtractor(in); + return new SevenZExtractor(in); } throw e; } diff --git a/hutool-extra/src/main/java/cn/hutool/extra/compress/extractor/Extractor.java b/hutool-extra/src/main/java/cn/hutool/extra/compress/extractor/Extractor.java index d842d1c00..ba56e7197 100644 --- a/hutool-extra/src/main/java/cn/hutool/extra/compress/extractor/Extractor.java +++ b/hutool-extra/src/main/java/cn/hutool/extra/compress/extractor/Extractor.java @@ -27,7 +27,7 @@ public interface Extractor extends Closeable { * 释放(解压)到指定目录,结束后自动关闭流,此方法只能调用一次 * * @param targetDir 目标目录 - * @param filter 解压文件过滤器,用于指定需要释放的文件,null表示不过滤。当{@link Filter#accept(Object)}为true时释放。 + * @param filter 解压文件过滤器,用于指定需要释放的文件,{@code null}表示不过滤。当{@link Filter#accept(Object)}为true时释放。 */ void extract(File targetDir, Filterorg.tukaani -xz -1.9 -test -filter); diff --git a/hutool-extra/src/main/java/cn/hutool/extra/compress/extractor/Seven7EntryInputStream.java b/hutool-extra/src/main/java/cn/hutool/extra/compress/extractor/Seven7EntryInputStream.java index 3a838445e..a64eb55c0 100644 --- a/hutool-extra/src/main/java/cn/hutool/extra/compress/extractor/Seven7EntryInputStream.java +++ b/hutool-extra/src/main/java/cn/hutool/extra/compress/extractor/Seven7EntryInputStream.java @@ -20,8 +20,9 @@ public class Seven7EntryInputStream extends InputStream { /** * 构造 + * * @param sevenZFile {@link SevenZFile} - * @param entry {@link SevenZArchiveEntry} + * @param entry {@link SevenZArchiveEntry} */ public Seven7EntryInputStream(SevenZFile sevenZFile, SevenZArchiveEntry entry) { this.sevenZFile = sevenZFile; @@ -30,13 +31,23 @@ public class Seven7EntryInputStream extends InputStream { @Override public int available() throws IOException { - try{ + try { return Math.toIntExact(this.size); - } catch (ArithmeticException e){ + } catch (ArithmeticException e) { throw new IOException("Entry size is too large!(max than Integer.MAX)", e); } } + /** + * 获取读取的长度(字节数) + * + * @return 读取的字节数 + * @since 5.7.14 + */ + public long getReadSize() { + return this.readSize; + } + @Override public int read() throws IOException { this.readSize++; diff --git a/hutool-extra/src/main/java/cn/hutool/extra/compress/extractor/SenvenZExtractor.java b/hutool-extra/src/main/java/cn/hutool/extra/compress/extractor/SevenZExtractor.java similarity index 68% rename from hutool-extra/src/main/java/cn/hutool/extra/compress/extractor/SenvenZExtractor.java rename to hutool-extra/src/main/java/cn/hutool/extra/compress/extractor/SevenZExtractor.java index 8a49d814b..f8a769896 100644 --- a/hutool-extra/src/main/java/cn/hutool/extra/compress/extractor/SenvenZExtractor.java +++ b/hutool-extra/src/main/java/cn/hutool/extra/compress/extractor/SevenZExtractor.java @@ -5,6 +5,7 @@ import cn.hutool.core.io.IORuntimeException; import cn.hutool.core.io.IoUtil; import cn.hutool.core.lang.Assert; import cn.hutool.core.lang.Filter; +import cn.hutool.core.util.StrUtil; import org.apache.commons.compress.archivers.ArchiveEntry; import org.apache.commons.compress.archivers.sevenz.SevenZArchiveEntry; import org.apache.commons.compress.archivers.sevenz.SevenZFile; @@ -14,6 +15,7 @@ import java.io.File; import java.io.IOException; import java.io.InputStream; import java.nio.channels.SeekableByteChannel; +import java.util.RandomAccess; /** * 7z格式数据解压器,即将归档打包的数据释放 @@ -21,7 +23,7 @@ import java.nio.channels.SeekableByteChannel; * @author looly * @since 5.5.0 */ -public class SenvenZExtractor implements Extractor { +public class SevenZExtractor implements Extractor, RandomAccess { private final SevenZFile sevenZFile; @@ -30,7 +32,7 @@ public class SenvenZExtractor implements Extractor { * * @param file 包文件 */ - public SenvenZExtractor(File file) { + public SevenZExtractor(File file) { this(file, null); } @@ -40,7 +42,7 @@ public class SenvenZExtractor implements Extractor { * @param file 包文件 * @param password 密码,null表示无密码 */ - public SenvenZExtractor(File file, char[] password) { + public SevenZExtractor(File file, char[] password) { try { this.sevenZFile = new SevenZFile(file, password); } catch (IOException e) { @@ -53,7 +55,7 @@ public class SenvenZExtractor implements Extractor { * * @param in 包流 */ - public SenvenZExtractor(InputStream in) { + public SevenZExtractor(InputStream in) { this(in, null); } @@ -63,7 +65,7 @@ public class SenvenZExtractor implements Extractor { * @param in 包流 * @param password 密码,null表示无密码 */ - public SenvenZExtractor(InputStream in, char[] password) { + public SevenZExtractor(InputStream in, char[] password) { this(new SeekableInMemoryByteChannel(IoUtil.readBytes(in)), password); } @@ -72,7 +74,7 @@ public class SenvenZExtractor implements Extractor { * * @param channel {@link SeekableByteChannel} */ - public SenvenZExtractor(SeekableByteChannel channel) { + public SevenZExtractor(SeekableByteChannel channel) { this(channel, null); } @@ -82,7 +84,7 @@ public class SenvenZExtractor implements Extractor { * @param channel {@link SeekableByteChannel} * @param password 密码,null表示无密码 */ - public SenvenZExtractor(SeekableByteChannel channel, char[] password) { + public SevenZExtractor(SeekableByteChannel channel, char[] password) { try { this.sevenZFile = new SevenZFile(channel, password); } catch (IOException e) { @@ -107,6 +109,44 @@ public class SenvenZExtractor implements Extractor { } } + /** + * 获取满足指定过滤要求的压缩包内的第一个文件流 + * + * @param filter 用于指定需要释放的文件,null表示不过滤。当{@link Filter#accept(Object)}为true时返回对应流。 + * @return 满足过滤要求的第一个文件的流,无满足条件的文件返回{@code null} + * @since 5.7.14 + */ + public InputStream getFirst(Filter filter) { + final SevenZFile sevenZFile = this.sevenZFile; + for(SevenZArchiveEntry entry : sevenZFile.getEntries()){ + if(null != filter && false == filter.accept(entry)){ + continue; + } + if(entry.isDirectory()){ + continue; + } + + try { + return sevenZFile.getInputStream(entry); + } catch (IOException e) { + throw new IORuntimeException(e); + } + } + + return null; + } + + /** + * 获取指定名称的文件流 + * + * @param entryName entry名称 + * @return 文件流,无文件返回{@code null} + * @since 5.7.14 + */ + public InputStream get(String entryName){ + return getFirst((entry)-> StrUtil.equals(entryName, entry.getName())); + } + /** * 释放(解压)到指定目录 * @@ -120,6 +160,9 @@ public class SenvenZExtractor implements Extractor { SevenZArchiveEntry entry; File outItemFile; while (null != (entry = this.sevenZFile.getNextEntry())) { + if(null != filter && false == filter.accept(entry)){ + continue; + } outItemFile = FileUtil.file(targetDir, entry.getName()); if (entry.isDirectory()) { // 创建对应目录 diff --git a/hutool-extra/src/main/java/cn/hutool/extra/compress/extractor/StreamExtractor.java b/hutool-extra/src/main/java/cn/hutool/extra/compress/extractor/StreamExtractor.java index 473c28d88..150cea101 100644 --- a/hutool-extra/src/main/java/cn/hutool/extra/compress/extractor/StreamExtractor.java +++ b/hutool-extra/src/main/java/cn/hutool/extra/compress/extractor/StreamExtractor.java @@ -109,6 +109,9 @@ public class StreamExtractor implements Extractor{ ArchiveEntry entry; File outItemFile; while (null != (entry = in.getNextEntry())) { + if(null != filter && false == filter.accept(entry)){ + continue; + } if (false == in.canReadEntryData(entry)) { // 无法读取的文件直接跳过 continue; diff --git a/hutool-extra/src/test/java/cn/hutool/extra/compress/ArchiverTest.java b/hutool-extra/src/test/java/cn/hutool/extra/compress/ArchiverTest.java index fa946a9a7..326ee30c9 100644 --- a/hutool-extra/src/test/java/cn/hutool/extra/compress/ArchiverTest.java +++ b/hutool-extra/src/test/java/cn/hutool/extra/compress/ArchiverTest.java @@ -50,7 +50,7 @@ public class ArchiverTest { @Test @Ignore - public void senvenZTest(){ + public void sevenZTest(){ final File file = FileUtil.file("d:/test/compress/test.7z"); CompressUtil.createArchiver(CharsetUtil.CHARSET_UTF_8, ArchiveStreamFactory.SEVEN_Z, file) .add(FileUtil.file("d:/Java/apache-maven-3.6.3"), (f)->{ diff --git a/hutool-extra/src/test/java/cn/hutool/extra/compress/ExtractorTest.java b/hutool-extra/src/test/java/cn/hutool/extra/compress/ExtractorTest.java index b6a6938a4..6d3460882 100644 --- a/hutool-extra/src/test/java/cn/hutool/extra/compress/ExtractorTest.java +++ b/hutool-extra/src/test/java/cn/hutool/extra/compress/ExtractorTest.java @@ -21,7 +21,7 @@ public class ExtractorTest { @Test @Ignore public void sevenZTest(){ - Extractor extractor = CompressUtil.createExtractor( + Extractor extractor = CompressUtil.createExtractor( CharsetUtil.defaultCharset(), FileUtil.file("d:/test/compress/test.7z")); diff --git a/hutool-json/src/test/java/cn/hutool/json/test/bean/Data.java b/hutool-json/src/test/java/cn/hutool/json/test/bean/Data.java index cd8fe178b..2b16af9b3 100644 --- a/hutool-json/src/test/java/cn/hutool/json/test/bean/Data.java +++ b/hutool-json/src/test/java/cn/hutool/json/test/bean/Data.java @@ -1,14 +1,6 @@ package cn.hutool.json.test.bean; +@lombok.Data public class Data { - private Price Price; - - public void setPrice(Price Price) { - this.Price = Price; - } - - public Price getPrice() { - return Price; - } } diff --git a/hutool-json/src/test/java/cn/hutool/json/test/bean/ExamInfoDict.java b/hutool-json/src/test/java/cn/hutool/json/test/bean/ExamInfoDict.java index 168035648..50dc860e6 100644 --- a/hutool-json/src/test/java/cn/hutool/json/test/bean/ExamInfoDict.java +++ b/hutool-json/src/test/java/cn/hutool/json/test/bean/ExamInfoDict.java @@ -1,63 +1,22 @@ package cn.hutool.json.test.bean; +import lombok.Data; + import java.io.Serializable; -import java.util.Objects; /** - * + * * @author 质量过关 * */ +@Data public class ExamInfoDict implements Serializable { private static final long serialVersionUID = 3640936499125004525L; - + // 主键 private Integer id; // 可当作题号 // 试题类型 客观题 0主观题 1 private Integer examType; // 试题是否作答 private Integer answerIs; - - public Integer getId() { - return id; - } - public void setId(Integer id) { - this.id = id; - } - - public Integer getExamType() { - return examType; - } - public void setExamType(Integer examType) { - this.examType = examType; - } - - public Integer getAnswerIs() { - return answerIs; - } - public void setAnswerIs(Integer answerIs) { - this.answerIs = answerIs; - } - - @Override - public boolean equals(Object o) { - if (this == o) { - return true; - } - if (o == null || getClass() != o.getClass()) { - return false; - } - ExamInfoDict that = (ExamInfoDict) o; - return Objects.equals(id, that.id) && Objects.equals(examType, that.examType) && Objects.equals(answerIs, that.answerIs); - } - - @Override - public int hashCode() { - return Objects.hash(id, examType, answerIs); - } - - @Override - public String toString() { - return "ExamInfoDict{" + "id=" + id + ", examType=" + examType + ", answerIs=" + answerIs + '}'; - } } diff --git a/hutool-json/src/test/java/cn/hutool/json/test/bean/JSONBean.java b/hutool-json/src/test/java/cn/hutool/json/test/bean/JSONBean.java index af7c9ca48..cef52eb4c 100644 --- a/hutool-json/src/test/java/cn/hutool/json/test/bean/JSONBean.java +++ b/hutool-json/src/test/java/cn/hutool/json/test/bean/JSONBean.java @@ -1,22 +1,10 @@ package cn.hutool.json.test.bean; import cn.hutool.json.JSONObject; +import lombok.Data; +@Data public class JSONBean { - private int code; private JSONObject data; - - public int getCode() { - return code; - } - public void setCode(int code) { - this.code = code; - } - public JSONObject getData() { - return data; - } - public void setData(JSONObject data) { - this.data = data; - } } diff --git a/hutool-json/src/test/java/cn/hutool/json/test/bean/JsonNode.java b/hutool-json/src/test/java/cn/hutool/json/test/bean/JsonNode.java index 9c92aa329..f77c813f5 100644 --- a/hutool-json/src/test/java/cn/hutool/json/test/bean/JsonNode.java +++ b/hutool-json/src/test/java/cn/hutool/json/test/bean/JsonNode.java @@ -1,7 +1,10 @@ package cn.hutool.json.test.bean; +import lombok.Data; + import java.io.Serializable; +@Data public class JsonNode implements Serializable { private static final long serialVersionUID = -2280206942803550272L; @@ -17,33 +20,4 @@ public class JsonNode implements Serializable { this.parentId = parentId; this.name = name; } - - public Long getId() { - return id; - } - - public void setId(Long id) { - this.id = id; - } - - public Integer getParentId() { - return parentId; - } - - public void setParentId(Integer parentId) { - this.parentId = parentId; - } - - public String getName() { - return name; - } - - public void setName(String name) { - this.name = name; - } - - @Override - public String toString() { - return "JsonNode{" + "id=" + id + ", parentId=" + parentId + ", name='" + name + '\'' + '}'; - } -} \ No newline at end of file +} diff --git a/hutool-json/src/test/java/cn/hutool/json/test/bean/JsonRootBean.java b/hutool-json/src/test/java/cn/hutool/json/test/bean/JsonRootBean.java deleted file mode 100644 index 05010c456..000000000 --- a/hutool-json/src/test/java/cn/hutool/json/test/bean/JsonRootBean.java +++ /dev/null @@ -1,61 +0,0 @@ -package cn.hutool.json.test.bean; - -import java.util.List; - -public class JsonRootBean { - - private int statusCode; - private String message; - private int skip; - private int limit; - private int total; - private List data; - - public void setStatusCode(int statusCode) { - this.statusCode = statusCode; - } - - public int getStatusCode() { - return statusCode; - } - - public void setMessage(String message) { - this.message = message; - } - - public String getMessage() { - return message; - } - - public void setSkip(int skip) { - this.skip = skip; - } - - public int getSkip() { - return skip; - } - - public void setLimit(int limit) { - this.limit = limit; - } - - public int getLimit() { - return limit; - } - - public void setTotal(int total) { - this.total = total; - } - - public int getTotal() { - return total; - } - - public void setData(List data) { - this.data = data; - } - - public List getData() { - return data; - } -} diff --git a/hutool-json/src/test/java/cn/hutool/json/test/bean/PerfectEvaluationProductResVo.java b/hutool-json/src/test/java/cn/hutool/json/test/bean/PerfectEvaluationProductResVo.java index 41d276e49..e9387976d 100644 --- a/hutool-json/src/test/java/cn/hutool/json/test/bean/PerfectEvaluationProductResVo.java +++ b/hutool-json/src/test/java/cn/hutool/json/test/bean/PerfectEvaluationProductResVo.java @@ -1,234 +1,238 @@ package cn.hutool.json.test.bean; +import lombok.Data; + import java.util.HashMap; import java.util.Map; /** -* @author wangyan E-mail:wangyan@pospt.cn -* @version 创建时间:2017年9月13日 下午5:16:32 -* 类说明 -*/ -public class PerfectEvaluationProductResVo extends ProductResBase{ + * @author wangyan E-mail:wangyan@pospt.cn + * @version 创建时间:2017年9月13日 下午5:16:32 + * 类说明 + */ +@Data +public class PerfectEvaluationProductResVo extends ProductResBase { + private static final long serialVersionUID = 1L; - public static final Map KEY_TO_KEY = new HashMap (){ + public static final Map KEY_TO_KEY = new HashMap () { private static final long serialVersionUID = 1L; + { - put("HA001","CDCA005"); - put("HA002","CDCA002"); - put("HA003","CDCA004"); - put("HA004","CSSP002"); - put("HB001","CSWC001"); - put("HB002","CSRL001"); - put("HB003","CSRL003"); - put("HC005","CDTB016"); - put("HC006","CDTB020"); - put("HC007","CDTB021"); - put("HC008","CDTB022"); - put("HC009","CDTB023"); - put("HC010","CDTB024"); - put("HC011","CDTB001"); - put("HC012","CDTB005"); - put("HC013","CDTB006"); - put("HC014","CDTB007"); - put("HC015","CDTB008"); - put("HC016","CDTB009"); - put("HC001","CDTB018"); - put("HC002","CDTB003"); - put("HC003","CDTB063"); - put("HC004","CDTB060"); - put("HD001","CDMC005"); - put("HD007","CDMC082"); - put("HD010","CDMC164"); - put("HD016","CSSP003"); - put("HD017","CSSS003"); - put("HE001","CDTT028"); - put("HE002","CDTT029"); - put("HE003","CDTT030"); - put("HE004","CDTT031"); - put("HE005","CDTT032"); - put("HE006","CDTT033"); - put("HE007","CDTT015"); - put("HE008","CDTT016"); - put("HE009","CDTT017"); - put("HE010","CDTT018"); - put("HE011","CDTT019"); - put("HE012","CDTT020"); - put("HE013","CDTT055"); - put("HE014","CDTT056"); - put("HE015","CDTT057"); - put("HE016","CDTT058"); - put("HE017","CDTT059"); - put("HE018","CDTT060"); - put("HE019","CDTT043"); - put("HE020","CDTT044"); - put("HE021","CDTT045"); - put("HE022","CDTT046"); - put("HE023","CDTT047"); - put("HE024","CDTT048"); - put("HE025","CDTT080"); - put("HE026","CDTT081"); - put("HE027","CDTT082"); - put("HE028","CDTT083"); - put("HE029","CDTT084"); - put("HE030","CDTT085"); - put("HE031","CDTT067"); - put("HE032","CDTT068"); - put("HE033","CDTT069"); - put("HE034","CDTT070"); - put("HE035","CDTT071"); - put("HE036","CDTT072"); - put("HF001","CDTB272"); - put("HF002","CDTB273"); - put("HF003","CDTB277"); - put("HF004","CDTB278"); - put("HF005","CDTB282"); - put("HF006","CDTB283"); - put("HF007","CDTC058"); - put("HF008","CDTC059"); - put("HF009","CDTC060"); - put("HF010","CDTC014"); - put("HG001","CDMC294"); - put("HG002","CDMC293"); - put("HG003","CDMC301"); - put("HG004","CDMC300"); - put("HG005","CDMC308"); - put("HG006","CDMC307"); - put("HG007","CDMC315"); - put("HG008","CDMC314"); - put("HG009","CDMC322"); - put("HG010","CDMC321"); - put("HG011","CDMC287"); - put("HH001","CDTT001"); - put("HH002","CDTT002"); - put("HH003","CDTT003"); - put("HH004","CDTT004"); - put("HH005","CDTT005"); - put("HH006","CDTT006"); - put("HH007","CDTT007"); - put("HH008","CDTT008"); - put("HH009","CDTT009"); - put("HH010","CDTT010"); - put("HH011","CDTT011"); - put("HH012","CDTT012"); - put("HH013","CDTT013"); - put("HH014","CDTT014"); + put("HA001", "CDCA005"); + put("HA002", "CDCA002"); + put("HA003", "CDCA004"); + put("HA004", "CSSP002"); + put("HB001", "CSWC001"); + put("HB002", "CSRL001"); + put("HB003", "CSRL003"); + put("HC005", "CDTB016"); + put("HC006", "CDTB020"); + put("HC007", "CDTB021"); + put("HC008", "CDTB022"); + put("HC009", "CDTB023"); + put("HC010", "CDTB024"); + put("HC011", "CDTB001"); + put("HC012", "CDTB005"); + put("HC013", "CDTB006"); + put("HC014", "CDTB007"); + put("HC015", "CDTB008"); + put("HC016", "CDTB009"); + put("HC001", "CDTB018"); + put("HC002", "CDTB003"); + put("HC003", "CDTB063"); + put("HC004", "CDTB060"); + put("HD001", "CDMC005"); + put("HD007", "CDMC082"); + put("HD010", "CDMC164"); + put("HD016", "CSSP003"); + put("HD017", "CSSS003"); + put("HE001", "CDTT028"); + put("HE002", "CDTT029"); + put("HE003", "CDTT030"); + put("HE004", "CDTT031"); + put("HE005", "CDTT032"); + put("HE006", "CDTT033"); + put("HE007", "CDTT015"); + put("HE008", "CDTT016"); + put("HE009", "CDTT017"); + put("HE010", "CDTT018"); + put("HE011", "CDTT019"); + put("HE012", "CDTT020"); + put("HE013", "CDTT055"); + put("HE014", "CDTT056"); + put("HE015", "CDTT057"); + put("HE016", "CDTT058"); + put("HE017", "CDTT059"); + put("HE018", "CDTT060"); + put("HE019", "CDTT043"); + put("HE020", "CDTT044"); + put("HE021", "CDTT045"); + put("HE022", "CDTT046"); + put("HE023", "CDTT047"); + put("HE024", "CDTT048"); + put("HE025", "CDTT080"); + put("HE026", "CDTT081"); + put("HE027", "CDTT082"); + put("HE028", "CDTT083"); + put("HE029", "CDTT084"); + put("HE030", "CDTT085"); + put("HE031", "CDTT067"); + put("HE032", "CDTT068"); + put("HE033", "CDTT069"); + put("HE034", "CDTT070"); + put("HE035", "CDTT071"); + put("HE036", "CDTT072"); + put("HF001", "CDTB272"); + put("HF002", "CDTB273"); + put("HF003", "CDTB277"); + put("HF004", "CDTB278"); + put("HF005", "CDTB282"); + put("HF006", "CDTB283"); + put("HF007", "CDTC058"); + put("HF008", "CDTC059"); + put("HF009", "CDTC060"); + put("HF010", "CDTC014"); + put("HG001", "CDMC294"); + put("HG002", "CDMC293"); + put("HG003", "CDMC301"); + put("HG004", "CDMC300"); + put("HG005", "CDMC308"); + put("HG006", "CDMC307"); + put("HG007", "CDMC315"); + put("HG008", "CDMC314"); + put("HG009", "CDMC322"); + put("HG010", "CDMC321"); + put("HG011", "CDMC287"); + put("HH001", "CDTT001"); + put("HH002", "CDTT002"); + put("HH003", "CDTT003"); + put("HH004", "CDTT004"); + put("HH005", "CDTT005"); + put("HH006", "CDTT006"); + put("HH007", "CDTT007"); + put("HH008", "CDTT008"); + put("HH009", "CDTT009"); + put("HH010", "CDTT010"); + put("HH011", "CDTT011"); + put("HH012", "CDTT012"); + put("HH013", "CDTT013"); + put("HH014", "CDTT014"); } }; - - private static final long serialVersionUID = 1L; + private String XT_NO; private String CARD_HOLDER; private String CARD_NO; - private String HA001; - private String HA002; - private String HA003; - private String HA004; - private String HB001; - private String HB002; - private String HB003; - private String HC005; - private String HC006; - private String HC007; - private String HC008; - private String HC009; - private String HC010; - private String HC011; - private String HC012; - private String HC013; - private String HC014; - private String HC015; - private String HC016; - private String HC001; - private String HC002; - private String HC003; - private String HC004; + private String HA001; + private String HA002; + private String HA003; + private String HA004; + private String HB001; + private String HB002; + private String HB003; + private String HC005; + private String HC006; + private String HC007; + private String HC008; + private String HC009; + private String HC010; + private String HC011; + private String HC012; + private String HC013; + private String HC014; + private String HC015; + private String HC016; + private String HC001; + private String HC002; + private String HC003; + private String HC004; private String HD001; private String HD002; private String HD004; private String HD005; - private String HD007; - private String HD008; - private String HD010; - private String HD011; - private String HD013; - private String HD014; - private String HD016; - private String HD017; - private String HE001; - private String HE002; - private String HE003; - private String HE004; - private String HE005; - private String HE006; - private String HE007; - private String HE008; - private String HE009; - private String HE010; - private String HE011; - private String HE012; - private String HE013; - private String HE014; - private String HE015; - private String HE016; - private String HE017; - private String HE018; - private String HE019; - private String HE020; - private String HE021; - private String HE022; - private String HE023; - private String HE024; - private String HE025; - private String HE026; - private String HE027; - private String HE028; - private String HE029; - private String HE030; - private String HE031; - private String HE032; - private String HE033; - private String HE034; - private String HE035; - private String HE036; - private String HF001; - private String HF002; - private String HF003; - private String HF004; - private String HF005; - private String HF006; - private String HF007; - private String HF008; - private String HF009; - private String HF010; - private String HG001; - private String HG002; - private String HG003; - private String HG004; - private String HG005; - private String HG006; - private String HG007; - private String HG008; - private String HG009; - private String HG010; - private String HG011; - private String HG012; - private String HG013; - private String HG014; - private String HG015; - private String HG016; - private String HH001; - private String HH002; - private String HH003; - private String HH004; - private String HH005; - private String HH006; - private String HH007; - private String HH008; - private String HH009; - private String HH010; - private String HH011; - private String HH012; - private String HH013; + private String HD007; + private String HD008; + private String HD010; + private String HD011; + private String HD013; + private String HD014; + private String HD016; + private String HD017; + private String HE001; + private String HE002; + private String HE003; + private String HE004; + private String HE005; + private String HE006; + private String HE007; + private String HE008; + private String HE009; + private String HE010; + private String HE011; + private String HE012; + private String HE013; + private String HE014; + private String HE015; + private String HE016; + private String HE017; + private String HE018; + private String HE019; + private String HE020; + private String HE021; + private String HE022; + private String HE023; + private String HE024; + private String HE025; + private String HE026; + private String HE027; + private String HE028; + private String HE029; + private String HE030; + private String HE031; + private String HE032; + private String HE033; + private String HE034; + private String HE035; + private String HE036; + private String HF001; + private String HF002; + private String HF003; + private String HF004; + private String HF005; + private String HF006; + private String HF007; + private String HF008; + private String HF009; + private String HF010; + private String HG001; + private String HG002; + private String HG003; + private String HG004; + private String HG005; + private String HG006; + private String HG007; + private String HG008; + private String HG009; + private String HG010; + private String HG011; + private String HG012; + private String HG013; + private String HG014; + private String HG015; + private String HG016; + private String HH001; + private String HH002; + private String HH003; + private String HH004; + private String HH005; + private String HH006; + private String HH007; + private String HH008; + private String HH009; + private String HH010; + private String HH011; + private String HH012; + private String HH013; private String HH014; private String XT_MONTH01; private String XT_MONTH02; @@ -236,730 +240,4 @@ public class PerfectEvaluationProductResVo extends ProductResBase{ private String XT_MONTH04; private String XT_MONTH05; private String XT_MONTH06; - - - public String getHA001() { - return HA001; - } - public String getHA002() { - return HA002; - } - public String getHA003() { - return HA003; - } - public String getHA004() { - return HA004; - } - public String getHB001() { - return HB001; - } - public String getHB002() { - return HB002; - } - public String getHB003() { - return HB003; - } - public String getHC005() { - return HC005; - } - public String getHC006() { - return HC006; - } - public String getHC007() { - return HC007; - } - public String getHC008() { - return HC008; - } - public String getHC009() { - return HC009; - } - public String getHC010() { - return HC010; - } - public String getHC011() { - return HC011; - } - public String getHC012() { - return HC012; - } - public String getHC013() { - return HC013; - } - public String getHC014() { - return HC014; - } - public String getHC015() { - return HC015; - } - public String getHC016() { - return HC016; - } - public String getHC001() { - return HC001; - } - public String getHC002() { - return HC002; - } - public String getHC003() { - return HC003; - } - public String getHC004() { - return HC004; - } - public String getHD001() { - return HD001; - } - public String getHD002() { - return HD002; - } - - public String getHD004() { - return HD004; - } - public String getHD005() { - return HD005; - } - - public String getHD007() { - return HD007; - } - public String getHD008() { - return HD008; - } - - public String getHD010() { - return HD010; - } - public String getHD011() { - return HD011; - } - public String getHD013() { - return HD013; - } - public String getHD014() { - return HD014; - } - public String getHD016() { - return HD016; - } - public String getHD017() { - return HD017; - } - public String getHE001() { - return HE001; - } - public String getHE002() { - return HE002; - } - public String getHE003() { - return HE003; - } - public String getHE004() { - return HE004; - } - public String getHE005() { - return HE005; - } - public String getHE006() { - return HE006; - } - public String getHE007() { - return HE007; - } - public String getHE008() { - return HE008; - } - public String getHE009() { - return HE009; - } - public String getHE010() { - return HE010; - } - public String getHE011() { - return HE011; - } - public String getHE012() { - return HE012; - } - public String getHE013() { - return HE013; - } - public String getHE014() { - return HE014; - } - public String getHE015() { - return HE015; - } - public String getHE016() { - return HE016; - } - public String getHE017() { - return HE017; - } - public String getHE018() { - return HE018; - } - public String getHE019() { - return HE019; - } - public String getHE020() { - return HE020; - } - public String getHE021() { - return HE021; - } - public String getHE022() { - return HE022; - } - public String getHE023() { - return HE023; - } - public String getHE024() { - return HE024; - } - public String getHE025() { - return HE025; - } - public String getHE026() { - return HE026; - } - public String getHE027() { - return HE027; - } - public String getHE028() { - return HE028; - } - public String getHE029() { - return HE029; - } - public String getHE030() { - return HE030; - } - public String getHE031() { - return HE031; - } - public String getHE032() { - return HE032; - } - public String getHE033() { - return HE033; - } - public String getHE034() { - return HE034; - } - public String getHE035() { - return HE035; - } - public String getHE036() { - return HE036; - } - public String getHF001() { - return HF001; - } - public String getHF002() { - return HF002; - } - public String getHF003() { - return HF003; - } - public String getHF004() { - return HF004; - } - public String getHF005() { - return HF005; - } - public String getHF006() { - return HF006; - } - public String getHF007() { - return HF007; - } - public String getHF008() { - return HF008; - } - public String getHF009() { - return HF009; - } - public String getHF010() { - return HF010; - } - public String getHG001() { - return HG001; - } - public String getHG002() { - return HG002; - } - public String getHG003() { - return HG003; - } - public String getHG004() { - return HG004; - } - public String getHG005() { - return HG005; - } - public String getHG006() { - return HG006; - } - public String getHG007() { - return HG007; - } - public String getHG008() { - return HG008; - } - public String getHG009() { - return HG009; - } - public String getHG010() { - return HG010; - } - public String getHG011() { - return HG011; - } - public String getHG012() { - return HG012; - } - public String getHG013() { - return HG013; - } - public String getHG014() { - return HG014; - } - public String getHG015() { - return HG015; - } - public String getHG016() { - return HG016; - } - public String getHH001() { - return HH001; - } - public String getHH002() { - return HH002; - } - public String getHH003() { - return HH003; - } - public String getHH004() { - return HH004; - } - public String getHH005() { - return HH005; - } - public String getHH006() { - return HH006; - } - public String getHH007() { - return HH007; - } - public String getHH008() { - return HH008; - } - public String getHH009() { - return HH009; - } - public String getHH010() { - return HH010; - } - public String getHH011() { - return HH011; - } - public String getHH012() { - return HH012; - } - public String getHH013() { - return HH013; - } - public String getHH014() { - return HH014; - } - public void setHA001(String hA001) { - HA001 = hA001; - } - public void setHA002(String hA002) { - HA002 = hA002; - } - public void setHA003(String hA003) { - HA003 = hA003; - } - public void setHA004(String hA004) { - HA004 = hA004; - } - public void setHB001(String hB001) { - HB001 = hB001; - } - public void setHB002(String hB002) { - HB002 = hB002; - } - public void setHB003(String hB003) { - HB003 = hB003; - } - public void setHC005(String hC005) { - HC005 = hC005; - } - public void setHC006(String hC006) { - HC006 = hC006; - } - public void setHC007(String hC007) { - HC007 = hC007; - } - public void setHC008(String hC008) { - HC008 = hC008; - } - public void setHC009(String hC009) { - HC009 = hC009; - } - public void setHC010(String hC010) { - HC010 = hC010; - } - public void setHC011(String hC011) { - HC011 = hC011; - } - public void setHC012(String hC012) { - HC012 = hC012; - } - public void setHC013(String hC013) { - HC013 = hC013; - } - public void setHC014(String hC014) { - HC014 = hC014; - } - public void setHC015(String hC015) { - HC015 = hC015; - } - public void setHC016(String hC016) { - HC016 = hC016; - } - public void setHC001(String hC001) { - HC001 = hC001; - } - public void setHC002(String hC002) { - HC002 = hC002; - } - public void setHC003(String hC003) { - HC003 = hC003; - } - public void setHC004(String hC004) { - HC004 = hC004; - } - public void setHD001(String hD001) { - HD001 = hD001; - } - public void setHD002(String hD002) { - HD002 = hD002; - } - public void setHD004(String hD004) { - HD004 = hD004; - } - public void setHD005(String hD005) { - HD005 = hD005; - } - public void setHD007(String hD007) { - HD007 = hD007; - } - public void setHD008(String hD008) { - HD008 = hD008; - } - public void setHD010(String hD010) { - HD010 = hD010; - } - public void setHD011(String hD011) { - HD011 = hD011; - } - public void setHD013(String hD013) { - HD013 = hD013; - } - public void setHD014(String hD014) { - HD014 = hD014; - } - public void setHD016(String hD016) { - HD016 = hD016; - } - public void setHD017(String hD017) { - HD017 = hD017; - } - public void setHE001(String hE001) { - HE001 = hE001; - } - public void setHE002(String hE002) { - HE002 = hE002; - } - public void setHE003(String hE003) { - HE003 = hE003; - } - public void setHE004(String hE004) { - HE004 = hE004; - } - public void setHE005(String hE005) { - HE005 = hE005; - } - public void setHE006(String hE006) { - HE006 = hE006; - } - public void setHE007(String hE007) { - HE007 = hE007; - } - public void setHE008(String hE008) { - HE008 = hE008; - } - public void setHE009(String hE009) { - HE009 = hE009; - } - public void setHE010(String hE010) { - HE010 = hE010; - } - public void setHE011(String hE011) { - HE011 = hE011; - } - public void setHE012(String hE012) { - HE012 = hE012; - } - public void setHE013(String hE013) { - HE013 = hE013; - } - public void setHE014(String hE014) { - HE014 = hE014; - } - public void setHE015(String hE015) { - HE015 = hE015; - } - public void setHE016(String hE016) { - HE016 = hE016; - } - public void setHE017(String hE017) { - HE017 = hE017; - } - public void setHE018(String hE018) { - HE018 = hE018; - } - public void setHE019(String hE019) { - HE019 = hE019; - } - public void setHE020(String hE020) { - HE020 = hE020; - } - public void setHE021(String hE021) { - HE021 = hE021; - } - public void setHE022(String hE022) { - HE022 = hE022; - } - public void setHE023(String hE023) { - HE023 = hE023; - } - public void setHE024(String hE024) { - HE024 = hE024; - } - public void setHE025(String hE025) { - HE025 = hE025; - } - public void setHE026(String hE026) { - HE026 = hE026; - } - public void setHE027(String hE027) { - HE027 = hE027; - } - public void setHE028(String hE028) { - HE028 = hE028; - } - public void setHE029(String hE029) { - HE029 = hE029; - } - public void setHE030(String hE030) { - HE030 = hE030; - } - public void setHE031(String hE031) { - HE031 = hE031; - } - public void setHE032(String hE032) { - HE032 = hE032; - } - public void setHE033(String hE033) { - HE033 = hE033; - } - public void setHE034(String hE034) { - HE034 = hE034; - } - public void setHE035(String hE035) { - HE035 = hE035; - } - public void setHE036(String hE036) { - HE036 = hE036; - } - public void setHF001(String hF001) { - HF001 = hF001; - } - public void setHF002(String hF002) { - HF002 = hF002; - } - public void setHF003(String hF003) { - HF003 = hF003; - } - public void setHF004(String hF004) { - HF004 = hF004; - } - public void setHF005(String hF005) { - HF005 = hF005; - } - public void setHF006(String hF006) { - HF006 = hF006; - } - public void setHF007(String hF007) { - HF007 = hF007; - } - public void setHF008(String hF008) { - HF008 = hF008; - } - public void setHF009(String hF009) { - HF009 = hF009; - } - public void setHF010(String hF010) { - HF010 = hF010; - } - public void setHG001(String hG001) { - HG001 = hG001; - } - public void setHG002(String hG002) { - HG002 = hG002; - } - public void setHG003(String hG003) { - HG003 = hG003; - } - public void setHG004(String hG004) { - HG004 = hG004; - } - public void setHG005(String hG005) { - HG005 = hG005; - } - public void setHG006(String hG006) { - HG006 = hG006; - } - public void setHG007(String hG007) { - HG007 = hG007; - } - public void setHG008(String hG008) { - HG008 = hG008; - } - public void setHG009(String hG009) { - HG009 = hG009; - } - public void setHG010(String hG010) { - HG010 = hG010; - } - public void setHG011(String hG011) { - HG011 = hG011; - } - public void setHG012(String hG012) { - HG012 = hG012; - } - public void setHG013(String hG013) { - HG013 = hG013; - } - public void setHG014(String hG014) { - HG014 = hG014; - } - public void setHG015(String hG015) { - HG015 = hG015; - } - public void setHG016(String hG016) { - HG016 = hG016; - } - public void setHH001(String hH001) { - HH001 = hH001; - } - public void setHH002(String hH002) { - HH002 = hH002; - } - public void setHH003(String hH003) { - HH003 = hH003; - } - public void setHH004(String hH004) { - HH004 = hH004; - } - public void setHH005(String hH005) { - HH005 = hH005; - } - public void setHH006(String hH006) { - HH006 = hH006; - } - public void setHH007(String hH007) { - HH007 = hH007; - } - public void setHH008(String hH008) { - HH008 = hH008; - } - public void setHH009(String hH009) { - HH009 = hH009; - } - public void setHH010(String hH010) { - HH010 = hH010; - } - public void setHH011(String hH011) { - HH011 = hH011; - } - public void setHH012(String hH012) { - HH012 = hH012; - } - public void setHH013(String hH013) { - HH013 = hH013; - } - public void setHH014(String hH014) { - HH014 = hH014; - } - public String getXT_NO() { - return XT_NO; - } - public void setXT_NO(String xT_NO) { - XT_NO = xT_NO; - } - public String getCARD_HOLDER() { - return CARD_HOLDER; - } - public void setCARD_HOLDER(String cARD_HOLDER) { - CARD_HOLDER = cARD_HOLDER; - } - public String getCARD_NO() { - return CARD_NO; - } - public String getXT_MONTH01() { - return XT_MONTH01; - } - public String getXT_MONTH02() { - return XT_MONTH02; - } - public String getXT_MONTH03() { - return XT_MONTH03; - } - public String getXT_MONTH04() { - return XT_MONTH04; - } - public String getXT_MONTH05() { - return XT_MONTH05; - } - public String getXT_MONTH06() { - return XT_MONTH06; - } - public void setCARD_NO(String cARD_NO) { - CARD_NO = cARD_NO; - } - public void setXT_MONTH01(String xT_MONTH01) { - XT_MONTH01 = xT_MONTH01; - } - public void setXT_MONTH02(String xT_MONTH02) { - XT_MONTH02 = xT_MONTH02; - } - public void setXT_MONTH03(String xT_MONTH03) { - XT_MONTH03 = xT_MONTH03; - } - public void setXT_MONTH04(String xT_MONTH04) { - XT_MONTH04 = xT_MONTH04; - } - public void setXT_MONTH05(String xT_MONTH05) { - XT_MONTH05 = xT_MONTH05; - } - public void setXT_MONTH06(String xT_MONTH06) { - XT_MONTH06 = xT_MONTH06; - } - } diff --git a/hutool-json/src/test/java/cn/hutool/json/test/bean/ProductResBase.java b/hutool-json/src/test/java/cn/hutool/json/test/bean/ProductResBase.java index 540c8a8f8..50e177d34 100644 --- a/hutool-json/src/test/java/cn/hutool/json/test/bean/ProductResBase.java +++ b/hutool-json/src/test/java/cn/hutool/json/test/bean/ProductResBase.java @@ -1,13 +1,15 @@ package cn.hutool.json.test.bean; +import lombok.Data; + import java.io.Serializable; /** * @author wangyan E-mail:wangyan@pospt.cn * @version 创建时间:2017年9月11日 上午9:33:01 类说明 */ +@Data public class ProductResBase implements Serializable { - private static final long serialVersionUID = -6708040074002451511L; /** * 请求结果成功0 @@ -21,6 +23,7 @@ public class ProductResBase implements Serializable { * 成功code */ public static final String REQUEST_CODE_SUCCESS = "0000"; + /** * 结果 成功0 失败1 */ @@ -32,40 +35,4 @@ public class ProductResBase implements Serializable { * 成本总计 */ private Integer costTotal; - - public Integer getCostTotal() { - return costTotal; - } - - public ProductResBase setCostTotal(Integer costTotal) { - this.costTotal = costTotal; - return this; - } - - public int getResResult() { - return resResult; - } - - public String getResCode() { - return resCode; - } - - public String getResMsg() { - return resMsg; - } - - public ProductResBase setResResult(int resResult) { - this.resResult = resResult; - return this; - } - - public ProductResBase setResCode(String resCode) { - this.resCode = resCode; - return this; - } - - public ProductResBase setResMsg(String resMsg) { - this.resMsg = resMsg; - return this; - } } diff --git a/hutool-json/src/test/java/cn/hutool/json/test/bean/ResultDto.java b/hutool-json/src/test/java/cn/hutool/json/test/bean/ResultDto.java index 277ffc6f0..f32648b2d 100644 --- a/hutool-json/src/test/java/cn/hutool/json/test/bean/ResultDto.java +++ b/hutool-json/src/test/java/cn/hutool/json/test/bean/ResultDto.java @@ -1,7 +1,10 @@ package cn.hutool.json.test.bean; +import lombok.Data; + import java.io.Serializable; +@Data public class ResultDto implements Serializable { private static final long serialVersionUID = -1417999729205654379L; @@ -128,28 +131,4 @@ public class ResultDto implements Serializable { public boolean error() { return !success(); } - - public int getCode() { - return code; - } - - public void setCode(int code) { - this.code = code; - } - - public String getMessage() { - return message; - } - - public void setMessage(String message) { - this.message = message; - } - - public T getResult() { - return result; - } - - public void setResult(T result) { - this.result = result; - } } diff --git a/hutool-json/src/test/java/cn/hutool/json/test/bean/Seq.java b/hutool-json/src/test/java/cn/hutool/json/test/bean/Seq.java index 8dcdd0b29..cc3c35e4f 100644 --- a/hutool-json/src/test/java/cn/hutool/json/test/bean/Seq.java +++ b/hutool-json/src/test/java/cn/hutool/json/test/bean/Seq.java @@ -1,25 +1,15 @@ package cn.hutool.json.test.bean; +import lombok.Data; + +@Data public class Seq { private String seq; - + public Seq() { } - + public Seq(String seq) { this.seq = seq; } - - public String getSeq() { - return seq; - } - - public void setSeq(String seq) { - this.seq = seq; - } - - @Override - public String toString() { - return "Seq [seq=" + seq + "]"; - } } diff --git a/hutool-json/src/test/java/cn/hutool/json/test/bean/TokenAuthResponse.java b/hutool-json/src/test/java/cn/hutool/json/test/bean/TokenAuthResponse.java index 59c17d9af..8086a2d8a 100644 --- a/hutool-json/src/test/java/cn/hutool/json/test/bean/TokenAuthResponse.java +++ b/hutool-json/src/test/java/cn/hutool/json/test/bean/TokenAuthResponse.java @@ -1,22 +1,9 @@ package cn.hutool.json.test.bean; +import lombok.Data; + +@Data public class TokenAuthResponse { private String token; private String userId; - - public String getToken() { - return token; - } - - public void setToken(String token) { - this.token = token; - } - - public String getUserId() { - return userId; - } - - public void setUserId(String userId) { - this.userId = userId; - } } diff --git a/hutool-json/src/test/java/cn/hutool/json/test/bean/TokenAuthWarp.java b/hutool-json/src/test/java/cn/hutool/json/test/bean/TokenAuthWarp.java index e2bc61015..335d0a089 100644 --- a/hutool-json/src/test/java/cn/hutool/json/test/bean/TokenAuthWarp.java +++ b/hutool-json/src/test/java/cn/hutool/json/test/bean/TokenAuthWarp.java @@ -1,24 +1,13 @@ package cn.hutool.json.test.bean; +import lombok.Getter; +import lombok.Setter; + +@Getter +@Setter public class TokenAuthWarp extends UUMap { private static final long serialVersionUID = 1L; private String targetUrl; private String success; - - public String getTargetUrl() { - return targetUrl; - } - - public void setTargetUrl(String targetUrl) { - this.targetUrl = targetUrl; - } - - public String getSuccess() { - return success; - } - - public void setSuccess(String success) { - this.success = success; - } } diff --git a/hutool-json/src/test/java/cn/hutool/json/test/bean/TokenAuthWarp2.java b/hutool-json/src/test/java/cn/hutool/json/test/bean/TokenAuthWarp2.java index ad4aad943..0e8765c6c 100644 --- a/hutool-json/src/test/java/cn/hutool/json/test/bean/TokenAuthWarp2.java +++ b/hutool-json/src/test/java/cn/hutool/json/test/bean/TokenAuthWarp2.java @@ -1,9 +1,5 @@ package cn.hutool.json.test.bean; public class TokenAuthWarp2 extends TokenAuthWarp { - - /** - * - */ private static final long serialVersionUID = 1L; } diff --git a/hutool-json/src/test/java/cn/hutool/json/test/bean/UUMap.java b/hutool-json/src/test/java/cn/hutool/json/test/bean/UUMap.java index b4a4de872..8cb44406a 100644 --- a/hutool-json/src/test/java/cn/hutool/json/test/bean/UUMap.java +++ b/hutool-json/src/test/java/cn/hutool/json/test/bean/UUMap.java @@ -1,20 +1,15 @@ package cn.hutool.json.test.bean; +import lombok.Data; + import java.io.Serializable; +@Data public class UUMap implements Serializable{ private static final long serialVersionUID = 1L; - + private T result; - public T getResult() { - return result; - } - - public void setResult(T result) { - this.result = result; - } - public static long getSerialversionuid() { return serialVersionUID; } diff --git a/hutool-json/src/test/java/cn/hutool/json/test/bean/UserB.java b/hutool-json/src/test/java/cn/hutool/json/test/bean/UserB.java index aa0a71f7e..69a62a333 100644 --- a/hutool-json/src/test/java/cn/hutool/json/test/bean/UserB.java +++ b/hutool-json/src/test/java/cn/hutool/json/test/bean/UserB.java @@ -1,28 +1,12 @@ package cn.hutool.json.test.bean; +import lombok.Data; + import java.util.Date; +@Data public class UserB { private String name; private String b; private Date date; - - public String getName() { - return name; - } - public void setName(String name) { - this.name = name; - } - public String getB() { - return b; - } - public void setB(String a) { - this.b = a; - } - public Date getDate() { - return date; - } - public void setDate(Date date) { - this.date = date; - } } diff --git a/hutool-json/src/test/java/cn/hutool/json/test/bean/UserC.java b/hutool-json/src/test/java/cn/hutool/json/test/bean/UserC.java index 33bdce271..088d14a67 100644 --- a/hutool-json/src/test/java/cn/hutool/json/test/bean/UserC.java +++ b/hutool-json/src/test/java/cn/hutool/json/test/bean/UserC.java @@ -1,31 +1,10 @@ package cn.hutool.json.test.bean; +import lombok.Data; + +@Data public class UserC { private Integer id; private String name; private String prop; - - public Integer getId() { - return id; - } - - public void setId(Integer id) { - this.id = id; - } - - public String getName() { - return name; - } - - public void setName(String name) { - this.name = name; - } - - public String getProp() { - return prop; - } - - public void setProp(String prop) { - this.prop = prop; - } } diff --git a/hutool-json/src/test/java/cn/hutool/json/test/bean/UserInfoDict.java b/hutool-json/src/test/java/cn/hutool/json/test/bean/UserInfoDict.java index b964fd3e8..899b25968 100644 --- a/hutool-json/src/test/java/cn/hutool/json/test/bean/UserInfoDict.java +++ b/hutool-json/src/test/java/cn/hutool/json/test/bean/UserInfoDict.java @@ -1,14 +1,16 @@ package cn.hutool.json.test.bean; +import lombok.Data; + import java.io.Serializable; import java.util.List; -import java.util.Objects; /** * 用户信息 * @author 质量过关 * */ +@Data public class UserInfoDict implements Serializable { private static final long serialVersionUID = -936213991463284306L; // 用户Id @@ -19,61 +21,4 @@ public class UserInfoDict implements Serializable { private String photoPath; private List examInfoDict; private UserInfoRedundCount userInfoRedundCount; - - public Integer getId() { - return id; - } - public void setId(Integer id) { - this.id = id; - } - - public String getRealName() { - return realName; - } - public void setRealName(String realName) { - this.realName = realName; - } - - public String getPhotoPath() { - return photoPath; - } - public void setPhotoPath(String photoPath) { - this.photoPath = photoPath; - } - - public List getExamInfoDict() { - return examInfoDict; - } - public void setExamInfoDict(List examInfoDict) { - this.examInfoDict = examInfoDict; - } - - public UserInfoRedundCount getUserInfoRedundCount() { - return userInfoRedundCount; - } - public void setUserInfoRedundCount(UserInfoRedundCount userInfoRedundCount) { - this.userInfoRedundCount = userInfoRedundCount; - } - - @Override - public boolean equals(Object o) { - if (this == o) { - return true; - } - if (o == null || getClass() != o.getClass()) { - return false; - } - UserInfoDict that = (UserInfoDict) o; - return Objects.equals(id, that.id) && Objects.equals(realName, that.realName) && Objects.equals(photoPath, that.photoPath) && Objects.equals(examInfoDict, that.examInfoDict); - } - - @Override - public int hashCode() { - return Objects.hash(id, realName, photoPath, examInfoDict); - } - - @Override - public String toString() { - return "UserInfoDict [id=" + id + ", realName=" + realName + ", photoPath=" + photoPath + ", examInfoDict=" + examInfoDict + ", userInfoRedundCount=" + userInfoRedundCount + "]"; - } } diff --git a/hutool-json/src/test/java/cn/hutool/json/test/bean/UserInfoRedundCount.java b/hutool-json/src/test/java/cn/hutool/json/test/bean/UserInfoRedundCount.java index 74556c058..9582342fd 100644 --- a/hutool-json/src/test/java/cn/hutool/json/test/bean/UserInfoRedundCount.java +++ b/hutool-json/src/test/java/cn/hutool/json/test/bean/UserInfoRedundCount.java @@ -1,38 +1,14 @@ package cn.hutool.json.test.bean; +import lombok.Data; + import java.io.Serializable; +@Data public class UserInfoRedundCount implements Serializable { - private static final long serialVersionUID = -8397291070139255181L; + private String finishedRatio; // 完成率 - private Integer ownershipExamCount; // 自己有多少道题 - private Integer answeredExamCount; // 当前回答了多少道题 - - public Integer getOwnershipExamCount() { - return ownershipExamCount; - } - - public void setOwnershipExamCount(Integer ownershipExamCount) { - this.ownershipExamCount = ownershipExamCount; - } - - public Integer getAnsweredExamCount() { - return answeredExamCount; - } - - public void setAnsweredExamCount(Integer answeredExamCount) { - this.answeredExamCount = answeredExamCount; - } - - public String getFinishedRatio() { - return finishedRatio; - } - - public void setFinishedRatio(String finishedRatio) { - this.finishedRatio = finishedRatio; - } - } diff --git a/hutool-setting/pom.xml b/hutool-setting/pom.xml index f5010eff8..e706ad1b4 100644 --- a/hutool-setting/pom.xml +++ b/hutool-setting/pom.xml @@ -27,5 +27,11 @@ hutool-log ${project.parent.version} ++ diff --git a/hutool-setting/src/main/java/cn/hutool/setting/yaml/YamlUtil.java b/hutool-setting/src/main/java/cn/hutool/setting/yaml/YamlUtil.java new file mode 100644 index 000000000..7900f1ccd --- /dev/null +++ b/hutool-setting/src/main/java/cn/hutool/setting/yaml/YamlUtil.java @@ -0,0 +1,133 @@ +package cn.hutool.setting.yaml; + +import cn.hutool.core.io.IoUtil; +import cn.hutool.core.io.resource.ResourceUtil; +import cn.hutool.core.lang.Assert; +import cn.hutool.core.lang.Dict; +import org.yaml.snakeyaml.DumperOptions; +import org.yaml.snakeyaml.Yaml; + +import java.io.InputStream; +import java.io.Reader; +import java.io.Writer; + +/** + * 基于Snakeyaml的的YAML读写工具 + * + * @author looly + * @since 5.7.14 + */ +public class YamlUtil { + + /** + * 从classpath或绝对路径加载YAML文件 + * + * @param path YAML路径,相对路径相对classpath + * @return 加载的内容,默认Map + */ + public static Dict loadByPath(String path) { + return loadByPath(path, Dict.class); + } + + /** + * 从classpath或绝对路径加载YAML文件 + * + * @paramorg.yaml +snakeyaml +1.29 +true +Bean类型,默认map + * @param path YAML路径,相对路径相对classpath + * @param type 加载的Bean类型,即转换为的bean + * @return 加载的内容,默认Map + */ + public static T loadByPath(String path, Class type) { + return load(ResourceUtil.getStream(path), type); + } + + /** + * 从流中加载YAML + * + * @param Bean类型,默认map + * @param in 流 + * @param type 加载的Bean类型,即转换为的bean + * @return 加载的内容,默认Map + */ + public static T load(InputStream in, Class type) { + return load(IoUtil.getBomReader(in), type); + } + + /** + * 加载YAML,加载完毕后关闭{@link Reader} + * + * @param reader {@link Reader} + * @return 加载的Map + */ + public static Dict load(Reader reader) { + return load(reader, Dict.class); + } + + /** + * 加载YAML,加载完毕后关闭{@link Reader} + * + * @param Bean类型,默认map + * @param reader {@link Reader} + * @param type 加载的Bean类型,即转换为的bean + * @return 加载的内容,默认Map + */ + public static T load(Reader reader, Class type) { + return load(reader, type, true); + } + + /** + * 加载YAML + * + * @param Bean类型,默认map + * @param reader {@link Reader} + * @param type 加载的Bean类型,即转换为的bean + * @param isCloseReader 加载完毕后是否关闭{@link Reader} + * @return 加载的内容,默认Map + */ + public static T load(Reader reader, Class type, boolean isCloseReader) { + Assert.notNull(reader, "Reader must be not null !"); + if (null == type) { + //noinspection unchecked + type = (Class ) Object.class; + } + + final Yaml yaml = new Yaml(); + try { + return yaml.loadAs(reader, type); + } finally { + if (isCloseReader) { + IoUtil.close(reader); + } + } + } + + /** + * 将Bean对象或者Map写出到{@link Writer} + * + * @param object 对象 + * @param writer {@link Writer} + */ + public static void dump(Object object, Writer writer) { + final DumperOptions options = new DumperOptions(); + options.setIndent(2); + options.setPrettyFlow(true); + options.setDefaultFlowStyle(DumperOptions.FlowStyle.BLOCK); + + dump(object, writer, options); + } + + /** + * 将Bean对象或者Map写出到{@link Writer} + * + * @param object 对象 + * @param writer {@link Writer} + * @param dumperOptions 输出风格 + */ + public static void dump(Object object, Writer writer, DumperOptions dumperOptions) { + if (null == dumperOptions) { + dumperOptions = new DumperOptions(); + } + final Yaml yaml = new Yaml(dumperOptions); + yaml.dump(object, writer); + } +} diff --git a/hutool-setting/src/main/java/cn/hutool/setting/yaml/package-info.java b/hutool-setting/src/main/java/cn/hutool/setting/yaml/package-info.java new file mode 100644 index 000000000..0fed22588 --- /dev/null +++ b/hutool-setting/src/main/java/cn/hutool/setting/yaml/package-info.java @@ -0,0 +1,7 @@ +/** + * YAML文件的读写封装,基于snakeyaml + * + * @author looly + * + */ +package cn.hutool.setting.yaml; diff --git a/hutool-setting/src/test/java/cn/hutool/setting/test/PropsTest.java b/hutool-setting/src/test/java/cn/hutool/setting/PropsTest.java similarity index 98% rename from hutool-setting/src/test/java/cn/hutool/setting/test/PropsTest.java rename to hutool-setting/src/test/java/cn/hutool/setting/PropsTest.java index 206b4fa19..03da38692 100644 --- a/hutool-setting/src/test/java/cn/hutool/setting/test/PropsTest.java +++ b/hutool-setting/src/test/java/cn/hutool/setting/PropsTest.java @@ -1,4 +1,4 @@ -package cn.hutool.setting.test; +package cn.hutool.setting; import cn.hutool.core.date.DateUtil; import cn.hutool.log.LogFactory; @@ -17,7 +17,7 @@ import java.util.Objects; /** * Setting单元测试 - * + * * @author Looly * */ @@ -50,23 +50,23 @@ public class PropsTest { String driver = props.getStr("driver"); Assert.assertEquals(driver, "com.mysql.jdbc.Driver"); } - + @Test public void toBeanTest() { Props props = Props.getProp("to_bean_test.properties"); - + ConfigProperties cfg = props.toBean(ConfigProperties.class, "mail"); Assert.assertEquals("mailer@mail.com", cfg.getHost()); Assert.assertEquals(9000, cfg.getPort()); Assert.assertEquals("mailer@mail.com", cfg.getFrom()); - + Assert.assertEquals("john", cfg.getCredentials().getUsername()); Assert.assertEquals("password", cfg.getCredentials().getPassword()); Assert.assertEquals("SHA1", cfg.getCredentials().getAuthMethod()); - + Assert.assertEquals("true", cfg.getAdditionalHeaders().get("redelivery")); Assert.assertEquals("true", cfg.getAdditionalHeaders().get("secure")); - + Assert.assertEquals("admin@mail.com", cfg.getDefaultRecipients().get(0)); Assert.assertEquals("owner@mail.com", cfg.getDefaultRecipients().get(1)); } @@ -98,7 +98,7 @@ public class PropsTest { private List defaultRecipients; private Map additionalHeaders; } - + @Data public static class Credentials { private String authMethod; diff --git a/hutool-setting/src/test/java/cn/hutool/setting/test/PropsUtilTest.java b/hutool-setting/src/test/java/cn/hutool/setting/PropsUtilTest.java similarity index 93% rename from hutool-setting/src/test/java/cn/hutool/setting/test/PropsUtilTest.java rename to hutool-setting/src/test/java/cn/hutool/setting/PropsUtilTest.java index 2b8d15bf9..054b7f95a 100644 --- a/hutool-setting/src/test/java/cn/hutool/setting/test/PropsUtilTest.java +++ b/hutool-setting/src/test/java/cn/hutool/setting/PropsUtilTest.java @@ -1,4 +1,4 @@ -package cn.hutool.setting.test; +package cn.hutool.setting; import cn.hutool.setting.dialect.PropsUtil; import org.junit.Assert; @@ -7,7 +7,7 @@ import org.junit.Test; import java.util.Objects; public class PropsUtilTest { - + @Test public void getTest() { String driver = PropsUtil.get("test").getStr("driver"); diff --git a/hutool-setting/src/test/java/cn/hutool/setting/test/SettingTest.java b/hutool-setting/src/test/java/cn/hutool/setting/SettingTest.java similarity index 96% rename from hutool-setting/src/test/java/cn/hutool/setting/test/SettingTest.java rename to hutool-setting/src/test/java/cn/hutool/setting/SettingTest.java index 2fa7141b0..f7e4b1fe8 100644 --- a/hutool-setting/src/test/java/cn/hutool/setting/test/SettingTest.java +++ b/hutool-setting/src/test/java/cn/hutool/setting/SettingTest.java @@ -1,12 +1,10 @@ -package cn.hutool.setting.test; +package cn.hutool.setting; +import cn.hutool.core.lang.Console; import org.junit.Assert; import org.junit.Ignore; import org.junit.Test; -import cn.hutool.core.lang.Console; -import cn.hutool.setting.Setting; - /** * Setting单元测试 * diff --git a/hutool-setting/src/test/java/cn/hutool/setting/test/SettingUtilTest.java b/hutool-setting/src/test/java/cn/hutool/setting/SettingUtilTest.java similarity index 89% rename from hutool-setting/src/test/java/cn/hutool/setting/test/SettingUtilTest.java rename to hutool-setting/src/test/java/cn/hutool/setting/SettingUtilTest.java index 402337c05..6454cb528 100644 --- a/hutool-setting/src/test/java/cn/hutool/setting/test/SettingUtilTest.java +++ b/hutool-setting/src/test/java/cn/hutool/setting/SettingUtilTest.java @@ -1,12 +1,10 @@ -package cn.hutool.setting.test; +package cn.hutool.setting; import org.junit.Assert; import org.junit.Test; -import cn.hutool.setting.SettingUtil; - public class SettingUtilTest { - + @Test public void getTest() { String driver = SettingUtil.get("test").get("demo", "driver"); diff --git a/hutool-setting/src/test/java/cn/hutool/setting/yaml/YamlUtilTest.java b/hutool-setting/src/test/java/cn/hutool/setting/yaml/YamlUtilTest.java new file mode 100644 index 000000000..e4b81985b --- /dev/null +++ b/hutool-setting/src/test/java/cn/hutool/setting/yaml/YamlUtilTest.java @@ -0,0 +1,36 @@ +package cn.hutool.setting.yaml; + +import cn.hutool.core.io.FileUtil; +import cn.hutool.core.lang.Dict; +import cn.hutool.core.util.CharsetUtil; +import org.junit.Assert; +import org.junit.Ignore; +import org.junit.Test; + +import java.util.List; + +public class YamlUtilTest { + + @Test + public void loadByPathTest() { + final Dict result = YamlUtil.loadByPath("test.yaml", Dict.class); + + Assert.assertEquals("John", result.getStr("firstName")); + + final List numbers = result.getByPath("contactDetails.number"); + Assert.assertEquals(123456789, (int) numbers.get(0)); + Assert.assertEquals(456786868, (int) numbers.get(1)); + } + + @Test + @Ignore + public void dumpTest() { + final Dict dict = Dict.create() + .set("name", "hutool") + .set("count", 1000); + + YamlUtil.dump( + dict + , FileUtil.getWriter("d:/test/dump.yaml", CharsetUtil.CHARSET_UTF_8, false)); + } +} diff --git a/hutool-setting/src/test/resources/test.yaml b/hutool-setting/src/test/resources/test.yaml new file mode 100644 index 000000000..35d8b23b7 --- /dev/null +++ b/hutool-setting/src/test/resources/test.yaml @@ -0,0 +1,13 @@ +firstName: "John" +lastName: "Doe" +age: 31 +contactDetails: + - type: "mobile" + number: 123456789 + - type: "landline" + number: 456786868 +homeAddress: + line: "Xyz, DEF Street" + city: "City Y" + state: "State Y" + zip: 345657 diff --git a/hutool-system/src/test/java/cn/hutool/system/OshiPrintTest.java b/hutool-system/src/test/java/cn/hutool/system/OshiPrintTest.java index 8b1c59680..5be58e42b 100644 --- a/hutool-system/src/test/java/cn/hutool/system/OshiPrintTest.java +++ b/hutool-system/src/test/java/cn/hutool/system/OshiPrintTest.java @@ -9,6 +9,7 @@ import org.junit.Test; public class OshiPrintTest { @Test + @Ignore public void printCpuInfo(){ Console.log(OshiUtil.getCpuInfo()); }