重构数据集转义模板内容相关逻辑

This commit is contained in:
datagear 2021-07-19 21:35:11 +08:00
parent b85fd181a5
commit ff4df5d51f
8 changed files with 33 additions and 56 deletions

View File

@ -18,7 +18,6 @@ import java.util.Map;
import org.apache.commons.csv.CSVFormat;
import org.apache.commons.csv.CSVParser;
import org.apache.commons.csv.CSVRecord;
import org.datagear.analysis.DataSet;
import org.datagear.analysis.DataSetException;
import org.datagear.analysis.DataSetProperty;
import org.datagear.analysis.DataSetQuery;
@ -377,10 +376,6 @@ public abstract class AbstractCsvDataSet extends AbstractResolvableDataSet imple
/**
* 将指定CSV文本作为模板解析
* <p>
* 注意即使此数据集没有定义任何参数{@linkplain #hasParam()}{@code false}此方法也必须将{@code csv}作为模板解析因为存在如下应用场景
* 用户不定义数据集参数但却定义模板内容之后用户自行在{@linkplain DataSet#getResult(DataSetQuery)}参数映射表中传递模板内容所须的参数值
* </p>
*
* @param csv
* @param query
@ -388,11 +383,6 @@ public abstract class AbstractCsvDataSet extends AbstractResolvableDataSet imple
*/
protected String resolveCsvAsTemplate(String csv, DataSetQuery query)
{
if (csv == null)
return null;
Map<String, ?> values = query.getParamValues();
return CSV_TEMPLATE_RESOLVER.resolve(csv, values);
return resolveTextAsTemplate(CSV_TEMPLATE_RESOLVER, csv, query);
}
}

View File

@ -521,23 +521,39 @@ public abstract class AbstractDataSet extends AbstractIdentifiable implements Da
}
/**
* 将指定文本作为模板解析
* <p>
* 注意即使此数据集没有定义任何参数{@linkplain #hasParam()}{@code false}此方法也必须将{@code text}作为模板解析因为存在如下应用场景
* 用户不定义数据集参数但却定义模板内容之后用户自行在{@linkplain DataSet#getResult(DataSetQuery)}参数映射表中传递模板内容所须的参数值
* </p>
* 将指定文本作为通用模板解析没有特定语境比如SQLCSVJSON
*
* @param text
* @param query
* @return
*/
protected String resolveTextAsTemplate(String text, DataSetQuery query)
protected String resolveTextAsGeneralTemplate(String text, DataSetQuery query)
{
return resolveTextAsTemplate(GENERAL_TEMPLATE_RESOLVER, text, query);
}
/**
* 将指定文本作为模板解析
* <p>
* 注意即使此数据集没有定义任何参数{@linkplain #hasParam()}{@code false}此方法也必须将{@code text}作为模板解析因为存在如下应用场景
* </p>
* <ol>
* <li>用户编写了无需参数的模板内容</li>
* <li>用户不定义数据集参数但却定义模板内容之后用户自行在{@linkplain DataSet#getResult(DataSetQuery)}参数映射表中传递模板内容所须的参数值</li>
* </ol>
*
* @param templateResolver
* @param text
* @param query
* @return
*/
protected String resolveTextAsTemplate(TemplateResolver templateResolver, String text, DataSetQuery query)
{
if (text == null)
return null;
Map<String, ?> values = query.getParamValues();
return GENERAL_TEMPLATE_RESOLVER.resolve(text, values);
return templateResolver.resolve(text, new TemplateContext(values));
}
}

View File

@ -14,7 +14,6 @@ import java.util.Collections;
import java.util.List;
import java.util.Map;
import org.datagear.analysis.DataSet;
import org.datagear.analysis.DataSetException;
import org.datagear.analysis.DataSetProperty;
import org.datagear.analysis.DataSetQuery;
@ -374,10 +373,6 @@ public abstract class AbstractJsonDataSet extends AbstractResolvableDataSet impl
/**
* 将指定JSON文本作为模板解析
* <p>
* 注意即使此数据集没有定义任何参数{@linkplain #hasParam()}{@code false}此方法也必须将{@code json}作为模板解析因为存在如下应用场景
* 用户不定义数据集参数但却定义模板内容之后用户自行在{@linkplain DataSet#getResult(DataSetQuery)}参数映射表中传递模板内容所须的参数值
* </p>
*
* @param json
* @param query
@ -385,11 +380,6 @@ public abstract class AbstractJsonDataSet extends AbstractResolvableDataSet impl
*/
protected String resolveJsonAsTemplate(String json, DataSetQuery query)
{
if (json == null)
return null;
Map<String, ?> values = query.getParamValues();
return JSON_TEMPLATE_RESOLVER.resolve(json, values);
return resolveTextAsTemplate(JSON_TEMPLATE_RESOLVER, json, query);
}
}

View File

@ -33,7 +33,6 @@ import org.apache.hc.core5.http.NameValuePair;
import org.apache.hc.core5.http.io.HttpClientResponseHandler;
import org.apache.hc.core5.http.io.entity.StringEntity;
import org.apache.hc.core5.http.message.BasicNameValuePair;
import org.datagear.analysis.DataSet;
import org.datagear.analysis.DataSetException;
import org.datagear.analysis.DataSetProperty;
import org.datagear.analysis.DataSetQuery;
@ -408,7 +407,7 @@ public class HttpDataSet extends AbstractResolvableDataSet
protected String resolveTemplateUri(DataSetQuery query) throws Throwable
{
return resolveTextAsTemplate(this.uri, query);
return resolveTextAsGeneralTemplate(this.uri, query);
}
protected String resolveTemplateHeaderContent(DataSetQuery query) throws Throwable
@ -423,10 +422,6 @@ public class HttpDataSet extends AbstractResolvableDataSet
/**
* 将指定JSON文本作为模板解析
* <p>
* 注意即使此数据集没有定义任何参数{@linkplain #hasParam()}{@code false}此方法也必须将{@code json}作为模板解析因为存在如下应用场景
* 用户不定义数据集参数但却定义模板内容之后用户自行在{@linkplain DataSet#getResult(DataSetQuery)}参数映射表中传递模板内容所须的参数值
* </p>
*
* @param json
* @param query
@ -434,12 +429,7 @@ public class HttpDataSet extends AbstractResolvableDataSet
*/
protected String resolveJsonAsTemplate(String json, DataSetQuery query)
{
if (json == null)
return null;
Map<String, ?> values = query.getParamValues();
return AbstractJsonDataSet.JSON_TEMPLATE_RESOLVER.resolve(json, values);
return resolveTextAsTemplate(AbstractJsonDataSet.JSON_TEMPLATE_RESOLVER, json, query);
}
protected ClassicHttpRequest createHttpRequest(String uri) throws Throwable

View File

@ -415,10 +415,6 @@ public class SqlDataSet extends AbstractResolvableDataSet implements ResolvableD
/**
* 将指定SQL文本作为模板解析
* <p>
* 注意即使此数据集没有定义任何参数{@linkplain #hasParam()}{@code false}此方法也必须将{@code sql}作为模板解析因为存在如下应用场景
* 用户不定义数据集参数但却定义模板内容之后用户自行在{@linkplain DataSet#getResult(DataSetQuery)}参数映射表中传递模板内容所须的参数值
* </p>
*
* @param sql
* @param query
@ -426,11 +422,6 @@ public class SqlDataSet extends AbstractResolvableDataSet implements ResolvableD
*/
protected String resolveSqlAsTemplate(String sql, DataSetQuery query)
{
if (sql == null)
return null;
Map<String, ?> values = query.getParamValues();
return SQL_TEMPLATE_RESOLVER.resolve(sql, values);
return resolveTextAsTemplate(SQL_TEMPLATE_RESOLVER, sql, query);
}
}

View File

@ -218,7 +218,7 @@ public class CsvFileDataSetEntity extends AbstractCsvFileDataSet implements Dire
@Override
public String resolveFileNameAsFmkTemplate(String fileName, DataSetQuery query)
{
return resolveTextAsTemplate(fileName, query);
return resolveTextAsGeneralTemplate(fileName, query);
}
@Override

View File

@ -217,7 +217,7 @@ public class ExcelDataSetEntity extends AbstractExcelDataSet implements Director
@Override
public String resolveFileNameAsFmkTemplate(String fileName, DataSetQuery query)
{
return resolveTextAsTemplate(fileName, query);
return resolveTextAsGeneralTemplate(fileName, query);
}
@Override

View File

@ -219,7 +219,7 @@ public class JsonFileDataSetEntity extends AbstractJsonFileDataSet implements Di
@Override
public String resolveFileNameAsFmkTemplate(String fileName, DataSetQuery query)
{
return resolveTextAsTemplate(fileName, query);
return resolveTextAsGeneralTemplate(fileName, query);
}
@Override