add YamlUtil

This commit is contained in:
Looly 2021-09-24 15:29:56 +08:00
parent ba00f03026
commit 7b6593fe68
43 changed files with 798 additions and 1433 deletions

View File

@ -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无效问题
-------------------------------------------------------------------------------------------------------------

View File

@ -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 <code>finish()</code> flushes all
* frames. If <code>setSize</code> 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
* <code>setDelay(1000/fps)</code>.
* {@code setDelay(1000/fps)}.
*
* @param fps float frame rate (frames per second)
*/

View File

@ -25,6 +25,8 @@ import java.io.PushbackInputStream;
* </code>
* <br><br>
* 参考 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);

View File

@ -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<br>
* BOM定义http://www.unicode.org/unicode/faq/utf_bom.html
*
* <ul>
* <li>00 00 FE FF = UTF-32, big-endian</li>
* <li>FF FE 00 00 = UTF-32, little-endian</li>
* <li>EF BB BF = UTF-8</li>
* <li>FE FF = UTF-16, big-endian</li>
* <li>FF FE = UTF-16, little-endian</li>
* </ul>
* 使用 <br>
* <code>
* FileInputStream fis = new FileInputStream(file); <br>
* BomReader uin = new BomReader(fis); <br>
* </code>
*
* @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();
}
}

View File

@ -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
*

View File

@ -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<String, Object> implements BasicTypeGett
* <p>奇数参数必须为value可以为任意类型</p>
*
* <pre>
Dict dict = Dict.of(
* Dict dict = Dict.of(
* "RED", "#FF0000",
* "GREEN", "#00FF00",
* "BLUE", "#0000FF"
@ -91,10 +92,10 @@ public class Dict extends LinkedHashMap<String, Object> implements 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<String, Object> implements BasicTypeGett
public Number getNumber(String attr) {
return get(attr, null);
}
/**
* 通过表达式获取JSON中嵌套的对象<br>
* <ol>
* <li>.表达式可以获取Bean对象中的属性字段值或者Map中key对应的值</li>
* <li>[]表达式可以获取集合等对象中对应index的值</li>
* </ol>
* <p>
* 表达式栗子
*
* <pre>
* persion
* persion.name
* persons[3]
* person.friends[5].name
* </pre>
*
* @param expression 表达式
* @return 对象
* @see BeanPath#get(Object)
* @since 5.7.14
*/
@SuppressWarnings("unchecked")
public <T> T getByPath(String expression) {
return (T) BeanPath.create(expression).get(this);
}
/**
* 通过表达式获取JSON中嵌套的对象<br>
* <ol>
* <li>.表达式可以获取Bean对象中的属性字段值或者Map中key对应的值</li>
* <li>[]表达式可以获取集合等对象中对应index的值</li>
* </ol>
* <p>
* 表达式栗子
*
* <pre>
* persion
* persion.name
* persons[3]
* person.friends[5].name
* </pre>
* <p>
* 获取表达式对应值后转换为对应类型的值
*
* @param <T> 返回值类型
* @param expression 表达式
* @param resultType 返回值类型
* @return 对象
* @see BeanPath#get(Object)
* @since 5.7.14
*/
public <T> T getByPath(String expression, Class<T> resultType) {
return Convert.convert(resultType, getByPath(expression));
}
// -------------------------------------------------------------------- Get end
@Override

View File

@ -14,45 +14,61 @@ import java.util.List;
* 此模板用于简化对指定表的操作简化的操作如下<br>
* 1在初始化时指定了表名CRUD操作时便不需要表名<br>
* 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 <T> 主键类型
*
* @param pk 主键
* @param <T> 主键类型
* @param pk 主键
* @return 删除行数
* @throws SQLException SQL执行异常
*/
@ -124,7 +146,7 @@ public class DaoTemplate {
/**
* 删除
*
* @param <T> 主键类型
* @param <T> 主键类型
* @param field 字段名
* @param value 字段值
* @return 删除行数
@ -141,7 +163,7 @@ public class DaoTemplate {
/**
* 删除
*
* @param <T> 主键类型
* @param <T> 主键类型
* @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 <T> 主键类型
* @param pk 主键值
* @param pk 主键值
* @return 记录
* @throws SQLException SQL执行异常
*/
@ -220,7 +247,7 @@ public class DaoTemplate {
* 根据某个字段最好是唯一字段查询单个记录<br>
* 当有多条返回时只显示查询到的第一条
*
* @param <T> 字段值类型
* @param <T> 字段值类型
* @param field 字段名
* @param value 字段值
* @return 记录
@ -243,10 +270,11 @@ public class DaoTemplate {
//------------------------------------------------------------- Get end
//------------------------------------------------------------- Find start
/**
* 根据某个字段值查询结果
*
* @param <T> 字段值类型
* @param <T> 字段值类型
* @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部分<br>
* 此方法会自动补全SELECT * FROM [tableName] 部分这样就无需关心表名直接提供条件即可
*
* @param sql SQL语句
* @param sql SQL语句
* @param params SQL占位符中对应的参数
* @return 记录
* @throws SQLException SQL执行异常
*/
public List<Entity> findBySql(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<Entity> page(Entity where, Page page, String... selectFields) throws SQLException{
public PageResult<Entity> 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<Entity> page(Entity where, Page page) throws SQLException{
public PageResult<Entity> 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;

View File

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

View File

@ -451,11 +451,5 @@
<scope>compile</scope>
<optional>true</optional>
</dependency>
<dependency>
<groupId>org.tukaani</groupId>
<artifactId>xz</artifactId>
<version>1.9</version>
<scope>test</scope>
</dependency>
</dependencies>
</project>

View File

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

View File

@ -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, Filter<ArchiveEntry> filter);

View File

@ -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++;

View File

@ -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<ArchiveEntry> 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()) {
// 创建对应目录

View File

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

View File

@ -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)->{

View File

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

View File

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

View File

@ -1,13 +1,15 @@
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;
@ -17,47 +19,4 @@ public class ExamInfoDict implements Serializable {
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 + '}';
}
}

View File

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

View File

@ -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 + '\'' + '}';
}
}

View File

@ -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> 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> data) {
this.data = data;
}
public List<Data> getData() {
return data;
}
}

View File

@ -1,121 +1,125 @@
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<String,String> KEY_TO_KEY = new HashMap<String,String>(){
public static final Map<String, String> KEY_TO_KEY = new HashMap<String, String>() {
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;
@ -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;
}
}

View File

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

View File

@ -1,7 +1,10 @@
package cn.hutool.json.test.bean;
import lombok.Data;
import java.io.Serializable;
@Data
public class ResultDto<T> implements Serializable {
private static final long serialVersionUID = -1417999729205654379L;
@ -128,28 +131,4 @@ public class ResultDto<T> 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;
}
}

View File

@ -1,5 +1,8 @@
package cn.hutool.json.test.bean;
import lombok.Data;
@Data
public class Seq {
private String seq;
@ -9,17 +12,4 @@ public class 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 + "]";
}
}

View File

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

View File

@ -1,24 +1,13 @@
package cn.hutool.json.test.bean;
import lombok.Getter;
import lombok.Setter;
@Getter
@Setter
public class TokenAuthWarp extends UUMap<TokenAuthResponse> {
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;
}
}

View File

@ -1,9 +1,5 @@
package cn.hutool.json.test.bean;
public class TokenAuthWarp2 extends TokenAuthWarp {
/**
*
*/
private static final long serialVersionUID = 1L;
}

View File

@ -1,20 +1,15 @@
package cn.hutool.json.test.bean;
import lombok.Data;
import java.io.Serializable;
@Data
public class UUMap<T> 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;
}

View File

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

View File

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

View File

@ -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> 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<ExamInfoDict> getExamInfoDict() {
return examInfoDict;
}
public void setExamInfoDict(List<ExamInfoDict> 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 + "]";
}
}

View File

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

View File

@ -27,5 +27,11 @@
<artifactId>hutool-log</artifactId>
<version>${project.parent.version}</version>
</dependency>
<dependency>
<groupId>org.yaml</groupId>
<artifactId>snakeyaml</artifactId>
<version>1.29</version>
<optional>true</optional>
</dependency>
</dependencies>
</project>

View File

@ -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文件
*
* @param <T> Bean类型默认map
* @param path YAML路径相对路径相对classpath
* @param type 加载的Bean类型即转换为的bean
* @return 加载的内容默认Map
*/
public static <T> T loadByPath(String path, Class<T> type) {
return load(ResourceUtil.getStream(path), type);
}
/**
* 从流中加载YAML
*
* @param <T> Bean类型默认map
* @param in
* @param type 加载的Bean类型即转换为的bean
* @return 加载的内容默认Map
*/
public static <T> T load(InputStream in, Class<T> 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 <T> Bean类型默认map
* @param reader {@link Reader}
* @param type 加载的Bean类型即转换为的bean
* @return 加载的内容默认Map
*/
public static <T> T load(Reader reader, Class<T> type) {
return load(reader, type, true);
}
/**
* 加载YAML
*
* @param <T> Bean类型默认map
* @param reader {@link Reader}
* @param type 加载的Bean类型即转换为的bean
* @param isCloseReader 加载完毕后是否关闭{@link Reader}
* @return 加载的内容默认Map
*/
public static <T> T load(Reader reader, Class<T> type, boolean isCloseReader) {
Assert.notNull(reader, "Reader must be not null !");
if (null == type) {
//noinspection unchecked
type = (Class<T>) 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);
}
}

View File

@ -0,0 +1,7 @@
/**
* YAML文件的读写封装基于snakeyaml
*
* @author looly
*
*/
package cn.hutool.setting.yaml;

View File

@ -1,4 +1,4 @@
package cn.hutool.setting.test;
package cn.hutool.setting;
import cn.hutool.core.date.DateUtil;
import cn.hutool.log.LogFactory;

View File

@ -1,4 +1,4 @@
package cn.hutool.setting.test;
package cn.hutool.setting;
import cn.hutool.setting.dialect.PropsUtil;
import org.junit.Assert;

View File

@ -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单元测试
*

View File

@ -1,10 +1,8 @@
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

View File

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

View File

@ -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

View File

@ -9,6 +9,7 @@ import org.junit.Test;
public class OshiPrintTest {
@Test
@Ignore
public void printCpuInfo(){
Console.log(OshiUtil.getCpuInfo());
}