From d6039ffa3089c2ec6c56e2864b0330a79d9d61a0 Mon Sep 17 00:00:00 2001 From: fujie <405295521@qq.com> Date: Sun, 7 Jan 2018 22:14:04 +0800 Subject: [PATCH] =?UTF-8?q?1.=E5=A2=9E=E5=8A=A0=E6=97=A5=E6=9C=9F=E5=88=86?= =?UTF-8?q?=E7=BB=84=E3=80=822.=E4=BF=AE=E6=AD=A3date=E8=BD=AC=E6=8D=A2bug?= =?UTF-8?q?=E3=80=823.=E5=A2=9E=E5=8A=A0properties=E6=96=87=E4=BB=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../function/AbstractGroupFunction.java | 7 ++-- .../function/DataSetConvertFunction.java | 2 +- .../src/main/resources/dataset.beans.xml | 32 +++++++++++-------- .../impl/DefaultTinyScriptEngine.java | 2 ++ .../src/test/resources/group/dateSetDate.txt | 6 ++++ .../src/test/resources/group/groupDate.tsf | 17 ++++++++++ .../typeconvert/DateTypeConvertProcessor.java | 10 ++++-- .../src/test/resources/log4j.properties | 27 ++++++++++++++++ 8 files changed, 83 insertions(+), 20 deletions(-) create mode 100644 org.tinygroup.tinyscript/src/test/resources/group/dateSetDate.txt create mode 100644 org.tinygroup.tinyscript/src/test/resources/group/groupDate.tsf create mode 100644 tinyscriptexample/src/test/resources/log4j.properties diff --git a/org.tinygroup.tinyscript.dataset/src/main/java/org/tinygroup/tinyscript/dataset/function/AbstractGroupFunction.java b/org.tinygroup.tinyscript.dataset/src/main/java/org/tinygroup/tinyscript/dataset/function/AbstractGroupFunction.java index b200230..6680f3d 100644 --- a/org.tinygroup.tinyscript.dataset/src/main/java/org/tinygroup/tinyscript/dataset/function/AbstractGroupFunction.java +++ b/org.tinygroup.tinyscript.dataset/src/main/java/org/tinygroup/tinyscript/dataset/function/AbstractGroupFunction.java @@ -44,7 +44,7 @@ public abstract class AbstractGroupFunction extends AbstractScriptFunction { * @return * @throws Exception */ - protected List group(DynamicDataSet dataSet, String[] fields) throws Exception { + protected List group(DynamicDataSet dataSet, String[] fields, Object... params) throws Exception { Map result = new LinkedHashMap(); try { int[] showColumns = getShowColumns(dataSet, fields); @@ -53,7 +53,7 @@ public abstract class AbstractGroupFunction extends AbstractScriptFunction { // 逐条遍历记录 for (int i = 0; i < rowNum; i++) { int showRow = dataSet.getShowIndex(i); - Object key = createKey(showRow, showColumns, dataSet); + Object key = createKey(showRow, showColumns, dataSet, params); DynamicDataSet groupDataSet = result.get(key); if (groupDataSet == null) { // 新建分组结果的数据集 @@ -92,7 +92,8 @@ public abstract class AbstractGroupFunction extends AbstractScriptFunction { return showColumns; } - protected Object createKey(int showRow, int[] showColumns, AbstractDataSet dataSet) throws Exception { + protected Object createKey(int showRow, int[] showColumns, AbstractDataSet dataSet, Object... params) + throws Exception { List keys = new ArrayList(); for (int showColumn : showColumns) { keys.add(dataSet.getData(showRow, showColumn)); diff --git a/org.tinygroup.tinyscript.dataset/src/main/java/org/tinygroup/tinyscript/dataset/function/DataSetConvertFunction.java b/org.tinygroup.tinyscript.dataset/src/main/java/org/tinygroup/tinyscript/dataset/function/DataSetConvertFunction.java index b51e3c5..d016f9c 100644 --- a/org.tinygroup.tinyscript.dataset/src/main/java/org/tinygroup/tinyscript/dataset/function/DataSetConvertFunction.java +++ b/org.tinygroup.tinyscript.dataset/src/main/java/org/tinygroup/tinyscript/dataset/function/DataSetConvertFunction.java @@ -69,7 +69,7 @@ public class DataSetConvertFunction extends DynamicNameScriptFunction { Object v = dataSet.getData(dataSet.getShowIndex(i), dataSet.getShowIndex(col)); if (v != null) { try { - if (rules != null) { + if (rules != null && rules.length > 0) { dataSet.setData(dataSet.getShowIndex(i), dataSet.getShowIndex(col), TypeConvertUtil.convert(type, v, rules)); } else { diff --git a/org.tinygroup.tinyscript.dataset/src/main/resources/dataset.beans.xml b/org.tinygroup.tinyscript.dataset/src/main/resources/dataset.beans.xml index 37b5ac9..5e78322 100644 --- a/org.tinygroup.tinyscript.dataset/src/main/resources/dataset.beans.xml +++ b/org.tinygroup.tinyscript.dataset/src/main/resources/dataset.beans.xml @@ -6,7 +6,7 @@ - + @@ -150,56 +150,60 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + + + + diff --git a/org.tinygroup.tinyscript/src/main/java/org/tinygroup/tinyscript/impl/DefaultTinyScriptEngine.java b/org.tinygroup.tinyscript/src/main/java/org/tinygroup/tinyscript/impl/DefaultTinyScriptEngine.java index 9b8c5f2..3b53630 100644 --- a/org.tinygroup.tinyscript/src/main/java/org/tinygroup/tinyscript/impl/DefaultTinyScriptEngine.java +++ b/org.tinygroup.tinyscript/src/main/java/org/tinygroup/tinyscript/impl/DefaultTinyScriptEngine.java @@ -55,6 +55,7 @@ import org.tinygroup.tinyscript.dataset.function.DataSetFilterFunction; import org.tinygroup.tinyscript.dataset.function.DataSetFilterOneFunction; import org.tinygroup.tinyscript.dataset.function.DataSetForEachFunction; import org.tinygroup.tinyscript.dataset.function.DataSetFullJoinFunction; +import org.tinygroup.tinyscript.dataset.function.DataSetGroupDateFunction; import org.tinygroup.tinyscript.dataset.function.DataSetGroupDynamicFunction; import org.tinygroup.tinyscript.dataset.function.DataSetGroupFunction; import org.tinygroup.tinyscript.dataset.function.DataSetGroupStagedFunction; @@ -218,6 +219,7 @@ public class DefaultTinyScriptEngine extends DefaultScriptEngine implements Scri addScriptFunction(new DataSetToJsonFunction()); addScriptFunction(new JsonToDataSetFunction()); addScriptFunction(new DataSetToXmlFunction()); + addScriptFunction(new DataSetGroupDateFunction()); addScriptFunction(new XmlToDataSetFunction()); addScriptFunction(new ListGroupDynamicFunction()); addScriptFunction(new ListGroupStagedFunction()); diff --git a/org.tinygroup.tinyscript/src/test/resources/group/dateSetDate.txt b/org.tinygroup.tinyscript/src/test/resources/group/dateSetDate.txt new file mode 100644 index 0000000..8cfd086 --- /dev/null +++ b/org.tinygroup.tinyscript/src/test/resources/group/dateSetDate.txt @@ -0,0 +1,6 @@ +name weight value date +a 2 6 2018/1/1 +b 2 3 2018/2/1 +c 6 5 2017/1/1 +e 4 6 2019/2/1 +d 5 4 2018/1/1 diff --git a/org.tinygroup.tinyscript/src/test/resources/group/groupDate.tsf b/org.tinygroup.tinyscript/src/test/resources/group/groupDate.tsf new file mode 100644 index 0000000..670d73c --- /dev/null +++ b/org.tinygroup.tinyscript/src/test/resources/group/groupDate.tsf @@ -0,0 +1,17 @@ +//先转换日期格式 +dataSet = readTxt("/group/dateSetDate.txt").date("date","yyyy/MM/dd"); +//先按年份进行分组,然后按月份进行分组 +groupDs = dataSet.groupDate("year","date").groupDate("month","date"); +level1 = groupDs.getGroups(1); //获取第一级分组 +println("一级分组个数:"+level1.size()); +println("遍历第一级序表:"); +for(sub:level1){ + println(sub); +} + +level2 = groupDs.getGroups(2); //获取第二级分组 +println("二级分组个数:"+level2.size()); //sex=1的序表不存在AGE>60的记录,所以分组个数只有5个而不是6个 +println("遍历第二级序表:"); +for(sub:level2){ + println(sub); +} \ No newline at end of file diff --git a/org.tinygroup.tinyscriptbase/src/main/java/org/tinygroup/tinyscript/expression/typeconvert/DateTypeConvertProcessor.java b/org.tinygroup.tinyscriptbase/src/main/java/org/tinygroup/tinyscript/expression/typeconvert/DateTypeConvertProcessor.java index aaafcd7..21a51fe 100644 --- a/org.tinygroup.tinyscriptbase/src/main/java/org/tinygroup/tinyscript/expression/typeconvert/DateTypeConvertProcessor.java +++ b/org.tinygroup.tinyscriptbase/src/main/java/org/tinygroup/tinyscript/expression/typeconvert/DateTypeConvertProcessor.java @@ -10,6 +10,7 @@ import org.tinygroup.tinyscript.interpret.ResourceBundleUtil; /** * 转换日期类型 + * * @author yancheng11334 * */ @@ -24,7 +25,11 @@ public class DateTypeConvertProcessor implements TypeConvertProcessor { if (parameters.length == 1) { return convertDate(parameters[0], null); } else if (parameters.length == 2) { - return convertDate(parameters[0], (String)parameters[1]); + if (parameters[1] instanceof String) + return convertDate(parameters[0], (String) parameters[1]); + else if (parameters[1] instanceof Object[]) { + return convertDate(parameters[0], (String) ((Object[]) parameters[1])[0]); + } } } return null; @@ -40,7 +45,8 @@ public class DateTypeConvertProcessor implements TypeConvertProcessor { } else if (obj instanceof Calendar) { return ((Calendar) obj).getTime(); } else { - throw new ScriptException(ResourceBundleUtil.getDefaultMessage("number.convert.error", obj.getClass().getName(),Date.class.getName())); + throw new ScriptException(ResourceBundleUtil.getDefaultMessage("number.convert.error", + obj.getClass().getName(), Date.class.getName())); } } } diff --git a/tinyscriptexample/src/test/resources/log4j.properties b/tinyscriptexample/src/test/resources/log4j.properties new file mode 100644 index 0000000..80db7e1 --- /dev/null +++ b/tinyscriptexample/src/test/resources/log4j.properties @@ -0,0 +1,27 @@ +log4j.rootLogger=INFO,CONSOLE,FILE + +log4j.addivity.org.apache=true + + +################### +# Console Appender +################### +log4j.appender.CONSOLE=org.apache.log4j.ConsoleAppender +log4j.appender.Threshold=INFO +#log4j.appender.CONSOLE.encoding=GBK +log4j.appender.CONSOLE.Target=System.out +log4j.appender.CONSOLE.layout=org.apache.log4j.PatternLayout +log4j.appender.CONSOLE.layout.ConversionPattern=-%-4r [%t] %-5p %x - %m%n +#log4j.appender.CONSOLE.layout.ConversionPattern=[start]%d{DATE}[DATE]%n%p[PRIORITY]%n%x[NDC]%n%t[THREAD] n%c[CATEGORY]%n%m[MESSAGE]%n%n + + +##################### +# File Appender +##################### +log4j.appender.FILE=org.apache.log4j.FileAppender +log4j.appender.FILE.encoding=GBK +log4j.appender.FILE.File=file.log +log4j.appender.FILE.Append=false +log4j.appender.FILE.layout=org.apache.log4j.PatternLayout +log4j.appender.FILE.layout.ConversionPattern=%d -%-4r [%t] %-5p %c %x - %m%n +# Use this layout for LogFactor 5 analysis \ No newline at end of file -- Gitee