[analysis]添加JSON文件数据集实现类

This commit is contained in:
yigekaiguan 2020-08-11 23:07:34 +08:00
parent d3054bf87a
commit 5895d7d4f9
4 changed files with 150 additions and 40 deletions

View File

@ -0,0 +1,67 @@
/*
* Copyright (c) 2018 datagear.tech. All Rights Reserved.
*/
/**
*
*/
package org.datagear.analysis.support;
import java.io.File;
import java.util.List;
import java.util.Map;
import org.datagear.analysis.DataSetException;
import org.datagear.analysis.DataSetProperty;
import org.datagear.analysis.DataSetResult;
/**
* 抽象JSON文件数据集
*
* @author datagear@163.com
*
*/
public abstract class AbstractJsonFileDataSet extends AbstractJsonDataSet
{
public static final String DEFAULT_ENCODING = "UTF-8";
/** 文件编码 */
private String encoding = DEFAULT_ENCODING;
public AbstractJsonFileDataSet()
{
super();
}
public AbstractJsonFileDataSet(String id, String name, List<DataSetProperty> properties)
{
super(id, name, properties);
}
public String getEncoding()
{
return encoding;
}
public void setEncoding(String encoding)
{
this.encoding = encoding;
}
@Override
public DataSetResult getResult(Map<String, ?> paramValues) throws DataSetException
{
File jsonFile = getJsonFile(paramValues);
Object data = getJsonDataSetSupport().resolveResultData(jsonFile, getEncoding());
return new DataSetResult(data);
}
/**
* 获取JSON文件
*
* @param paramValues
* @return
* @throws DataSetException
*/
protected abstract File getJsonFile(Map<String, ?> paramValues) throws DataSetException;
}

View File

@ -4,6 +4,8 @@
package org.datagear.analysis.support;
import java.io.File;
import java.io.IOException;
import java.io.Reader;
import java.io.StringReader;
import java.util.ArrayList;
@ -15,6 +17,7 @@ import org.datagear.analysis.DataSet;
import org.datagear.analysis.DataSetException;
import org.datagear.analysis.DataSetProperty;
import org.datagear.analysis.DataSetResult;
import org.datagear.util.IOUtil;
import com.fasterxml.jackson.databind.JsonNode;
import com.fasterxml.jackson.databind.node.ArrayNode;
@ -80,6 +83,35 @@ public class JsonDataSetSupport extends JsonSupport
return resolveResultData(reader);
}
/**
* 解析数据集结果数据
*
* @param file
* @param encoding
* @return
* @throws DataSetException
* @throws UnsupportedJsonResultDataException
*/
public Object resolveResultData(File file, String encoding)
throws DataSetException, UnsupportedJsonResultDataException
{
Reader reader = null;
try
{
reader = IOUtil.getReader(file, encoding);
return resolveResultData(reader);
}
catch(IOException e)
{
throw new DataSetException(e);
}
finally
{
IOUtil.close(reader);
}
}
/**
* 解析数据集结果数据
*

View File

@ -1,40 +0,0 @@
/*
* Copyright (c) 2018 datagear.tech. All Rights Reserved.
*/
/**
*
*/
package org.datagear.analysis.support;
import java.util.List;
import java.util.Map;
import org.datagear.analysis.DataSetException;
import org.datagear.analysis.DataSetProperty;
import org.datagear.analysis.DataSetResult;
/**
* JSON源数据集
*
* @author datagear@163.com
*
*/
public class JsonSourceDataSet extends AbstractJsonDataSet
{
public JsonSourceDataSet()
{
super();
}
public JsonSourceDataSet(String id, String name, List<DataSetProperty> properties)
{
super(id, name, properties);
}
@Override
public DataSetResult getResult(Map<String, ?> paramValues) throws DataSetException
{
return null;
}
}

View File

@ -0,0 +1,51 @@
/*
* Copyright 2018 datagear.tech. All Rights Reserved.
*/
package org.datagear.analysis.support;
import java.io.File;
import java.util.List;
import java.util.Map;
import org.datagear.analysis.DataSetException;
import org.datagear.analysis.DataSetProperty;
/**
* 简单JSON文件数据集
*
* @author datagear@163.com
*
*/
public class SimpleJsonFileDataSet extends AbstractJsonFileDataSet
{
/** JSON文件 */
private File file;
public SimpleJsonFileDataSet()
{
super();
}
public SimpleJsonFileDataSet(String id, String name, List<DataSetProperty> properties, File file)
{
super(id, name, properties);
this.file = file;
}
public File getFile()
{
return file;
}
public void setFile(File file)
{
this.file = file;
}
@Override
protected File getJsonFile(Map<String, ?> paramValues) throws DataSetException
{
return this.file;
}
}