diff --git a/org.tinygroup.tinyscript.dataset/src/main/java/org/tinygroup/tinyscript/dataset/function/AbstractDataSetOperateFunction.java b/org.tinygroup.tinyscript.dataset/src/main/java/org/tinygroup/tinyscript/dataset/function/AbstractDataSetOperateFunction.java index 09e129dd9c875baf2debdbb84ff9f2818b3def99..188b0d171795a25ed2c88ab9ccaa303df1201ef3 100644 --- a/org.tinygroup.tinyscript.dataset/src/main/java/org/tinygroup/tinyscript/dataset/function/AbstractDataSetOperateFunction.java +++ b/org.tinygroup.tinyscript.dataset/src/main/java/org/tinygroup/tinyscript/dataset/function/AbstractDataSetOperateFunction.java @@ -76,7 +76,8 @@ public abstract class AbstractDataSetOperateFunction extends AbstractScriptFunct ScriptContext subContext = new DefaultScriptContext(); subContext.setParent(context); for (int i = 0; i < dataSet.getFields().size(); i++) { - subContext.put(dataSet.getFields().get(i).getName(), dataSet.getData(row, dataSet.getShowIndex(i))); + subContext.put(dataSet.getFields().get(i).getName(), + dataSet.getData(dataSet.getShowIndex(row), dataSet.getShowIndex(i))); } return keyFunction.execute(subContext).getResult().toString(); @@ -93,19 +94,16 @@ public abstract class AbstractDataSetOperateFunction extends AbstractScriptFunct * @throws Exception */ protected boolean checkField(DataSet dataSet1, DataSet dataSet2) throws Exception { - if (dataSet1.getColumns() != dataSet2.getColumns()) { - return false; - } else { - Set fields = new HashSet(); - for (int i = 0; i < dataSet1.getFields().size(); i++) { - fields.add(dataSet1.getFields().get(i)); - } - for (int i = 0; i < dataSet2.getFields().size(); i++) { - if (!fields.contains(dataSet2.getFields().get(i))) { - return false; - } + Set fields = new HashSet(); + for (int i = 0; i < dataSet2.getFields().size(); i++) { + fields.add(dataSet2.getFields().get(i)); + } + for (int i = 0; i < dataSet1.getFields().size(); i++) { + if (!fields.contains(dataSet1.getFields().get(i))) { + return false; } } + return true; } diff --git a/org.tinygroup.tinyscript.dataset/src/main/java/org/tinygroup/tinyscript/dataset/function/DataSetIntersectionFunction.java b/org.tinygroup.tinyscript.dataset/src/main/java/org/tinygroup/tinyscript/dataset/function/DataSetIntersectionFunction.java index 329d9129dd884eee2996a4fb9848a2f8e1af23c2..74d7dc74de4418a7940b30f927c002ce992a82d0 100644 --- a/org.tinygroup.tinyscript.dataset/src/main/java/org/tinygroup/tinyscript/dataset/function/DataSetIntersectionFunction.java +++ b/org.tinygroup.tinyscript.dataset/src/main/java/org/tinygroup/tinyscript/dataset/function/DataSetIntersectionFunction.java @@ -69,7 +69,7 @@ public class DataSetIntersectionFunction extends AbstractDataSetOperateFunction newMap.put(key, map.get(key)); } } - return DataSetUtil.createDynamicDataSet(newMap); + return DataSetUtil.createDynamicDataSet(newMap, dataSet1.getFields()); } } diff --git a/org.tinygroup.tinyscript.dataset/src/main/java/org/tinygroup/tinyscript/dataset/function/DataSetSubtractFunction.java b/org.tinygroup.tinyscript.dataset/src/main/java/org/tinygroup/tinyscript/dataset/function/DataSetSubtractFunction.java index 091eaf61584b6f2563d81d1823b926b3487579be..ce346a4cd1a12b7af87a08d35d0cc03017bf077a 100644 --- a/org.tinygroup.tinyscript.dataset/src/main/java/org/tinygroup/tinyscript/dataset/function/DataSetSubtractFunction.java +++ b/org.tinygroup.tinyscript.dataset/src/main/java/org/tinygroup/tinyscript/dataset/function/DataSetSubtractFunction.java @@ -56,7 +56,7 @@ public class DataSetSubtractFunction extends AbstractDataSetOperateFunction { map.remove(key); } } - return DataSetUtil.createDynamicDataSet(map); + return DataSetUtil.createDynamicDataSet(map, dataSet1.getFields()); } } diff --git a/org.tinygroup.tinyscript.dataset/src/main/java/org/tinygroup/tinyscript/dataset/function/DataSetUnionFunction.java b/org.tinygroup.tinyscript.dataset/src/main/java/org/tinygroup/tinyscript/dataset/function/DataSetUnionFunction.java index ae0daba49cc17fd944cf077714951776a68e5b01..d61bc5afcf855283f0c56fe4546e2a1e683723e6 100644 --- a/org.tinygroup.tinyscript.dataset/src/main/java/org/tinygroup/tinyscript/dataset/function/DataSetUnionFunction.java +++ b/org.tinygroup.tinyscript.dataset/src/main/java/org/tinygroup/tinyscript/dataset/function/DataSetUnionFunction.java @@ -54,10 +54,10 @@ public class DataSetUnionFunction extends AbstractDataSetOperateFunction { Map map = createMapDataSetRows(dataSet1, pks, context); for (int i = 0; i < dataSet2.getRows(); i++) { String key = createRowKey(dataSet2, pks, i, context); - DataSetRow row = new DefaultDataSetRow(dataSet2, i); + DataSetRow row = new DefaultDataSetRow(dataSet2, dataSet2.getShowIndex(i)); map.put(key, row); } - return DataSetUtil.createDynamicDataSet(map); + return DataSetUtil.createDynamicDataSet(map, dataSet1.getFields()); } } diff --git a/org.tinygroup.tinyscript.dataset/src/main/java/org/tinygroup/tinyscript/dataset/function/DataSetXorFunction.java b/org.tinygroup.tinyscript.dataset/src/main/java/org/tinygroup/tinyscript/dataset/function/DataSetXorFunction.java index d2aec6b7352760dfe750bb0412aba43f099c1291..05c6e3a81de2987b7bad982b0cc4a382cbfd3508 100644 --- a/org.tinygroup.tinyscript.dataset/src/main/java/org/tinygroup/tinyscript/dataset/function/DataSetXorFunction.java +++ b/org.tinygroup.tinyscript.dataset/src/main/java/org/tinygroup/tinyscript/dataset/function/DataSetXorFunction.java @@ -60,7 +60,7 @@ public class DataSetXorFunction extends AbstractDataSetOperateFunction { } } newMap.putAll(map); - return DataSetUtil.createDynamicDataSet(newMap); + return DataSetUtil.createDynamicDataSet(newMap,dataSet1.getFields()); } } diff --git a/org.tinygroup.tinyscript.dataset/src/main/java/org/tinygroup/tinyscript/dataset/util/DataSetUtil.java b/org.tinygroup.tinyscript.dataset/src/main/java/org/tinygroup/tinyscript/dataset/util/DataSetUtil.java index 1ff65b62464afb9d15811d50d50c7198f37b8623..89306644f87a5cbe688d15122a79db9cda6ac327 100644 --- a/org.tinygroup.tinyscript.dataset/src/main/java/org/tinygroup/tinyscript/dataset/util/DataSetUtil.java +++ b/org.tinygroup.tinyscript.dataset/src/main/java/org/tinygroup/tinyscript/dataset/util/DataSetUtil.java @@ -55,8 +55,8 @@ public final class DataSetUtil { * @return * @throws Exception */ - public static DynamicDataSet createDynamicDataSet(Map map) throws Exception { - List fields = null; + public static DynamicDataSet createDynamicDataSet(Map map, List fields) + throws Exception { Object[][] data = new Object[map.keySet().size()][]; int rowId = 0; boolean isIndexFromOne = false; @@ -64,10 +64,6 @@ public final class DataSetUtil { for (String key : map.keySet()) { DataSetRow row = map.get(key); isIndexFromOne = row.isIndexFromOne(); - if (fields == null) { - fields = row.getFields(); - } - data[rowId] = new Object[fields.size()]; for (int i = 0; i < fields.size(); i++) { data[rowId][i] = row.getData(isIndexFromOne ? i + 1 : i);