diff --git a/org.tinygroup.tinyscript.dataset/src/main/java/org/tinygroup/tinyscript/dataset/function/DataSetLimitFunction.java b/org.tinygroup.tinyscript.dataset/src/main/java/org/tinygroup/tinyscript/dataset/function/DataSetLimitFunction.java new file mode 100644 index 0000000000000000000000000000000000000000..5a62471bbb9d36a1a0f6b1638bdd79287593f20c --- /dev/null +++ b/org.tinygroup.tinyscript.dataset/src/main/java/org/tinygroup/tinyscript/dataset/function/DataSetLimitFunction.java @@ -0,0 +1,59 @@ +package org.tinygroup.tinyscript.dataset.function; + +import java.util.ArrayList; +import java.util.List; + +import org.tinygroup.tinyscript.ScriptContext; +import org.tinygroup.tinyscript.ScriptException; +import org.tinygroup.tinyscript.ScriptSegment; +import org.tinygroup.tinyscript.dataset.DynamicDataSet; +import org.tinygroup.tinyscript.dataset.GroupDataSet; +import org.tinygroup.tinyscript.dataset.impl.AggregateResult; +import org.tinygroup.tinyscript.dataset.impl.DefaultGroupDataSet; +import org.tinygroup.tinyscript.function.AbstractScriptFunction; + +public class DataSetLimitFunction extends AbstractScriptFunction { + + @Override + public String getNames() { + // TODO Auto-generated method stub + return "limit"; + } + + @Override + public String getBindingTypes() { + return GroupDataSet.class.getName(); + } + + @Override + public Object execute(ScriptSegment segment, ScriptContext context, Object... parameters) throws ScriptException { + // TODO Auto-generated method stub + try { + if (parameters == null || parameters.length == 0) { + throw new ScriptException("limit函数的参数为空!"); + } else if (checkParameters(parameters, 3)) { + DefaultGroupDataSet dataSet = (DefaultGroupDataSet) parameters[0]; + int begin = (Integer) parameters[1]; + int end = (Integer) parameters[2]; + return limit(dataSet, begin - 1, end - 1); + } else { + throw new ScriptException("limit函数的参数格式不正确!"); + } + } catch (ScriptException e) { + throw e; + } catch (Exception e) { + throw new ScriptException("limit函数的参数格式不正确!", e); + } + } + + public GroupDataSet limit(GroupDataSet dataSet, int begin, int end) throws CloneNotSupportedException { + List newSubDataSetList = new ArrayList(); + for (int i = begin; i <= end; i++) { + DynamicDataSet newDataSet = (DynamicDataSet) (dataSet.getGroups().get(i).cloneDataSet()); + newSubDataSetList.add(newDataSet); + } + + return new DefaultGroupDataSet(dataSet.getFields(), newSubDataSetList, dataSet.isIndexFromOne()); + } + +} diff --git a/org.tinygroup.tinyscript/src/main/java/org/tinygroup/tinyscript/impl/DefaultComputeEngine.java b/org.tinygroup.tinyscript/src/main/java/org/tinygroup/tinyscript/impl/DefaultComputeEngine.java index bc2988d517e11cd5aaee030ead2657a0f6fe8511..e3f29209a2e2ed04402374bc80f4b5d6acd3101c 100644 --- a/org.tinygroup.tinyscript/src/main/java/org/tinygroup/tinyscript/impl/DefaultComputeEngine.java +++ b/org.tinygroup.tinyscript/src/main/java/org/tinygroup/tinyscript/impl/DefaultComputeEngine.java @@ -2,29 +2,77 @@ package org.tinygroup.tinyscript.impl; import java.util.Map; -import org.tinygroup.tinyscript.collection.expression.*; -import org.tinygroup.tinyscript.collection.function.list.*; -import org.tinygroup.tinyscript.collection.function.map.*; -import org.tinygroup.tinyscript.collection.function.math.*; -import org.tinygroup.tinyscript.collection.function.set.*; -import org.tinygroup.tinyscript.collection.objectitem.*; -import org.tinygroup.tinyscript.database.function.*; -import org.tinygroup.tinyscript.database.sql.*; -import org.tinygroup.tinyscript.dataset.attribute.*; -import org.tinygroup.tinyscript.dataset.function.*; -import org.tinygroup.tinyscript.dataset.objectitem.*; -import org.tinygroup.tinyscript.datasetwithtree.function.*; -import org.tinygroup.tinyscript.text.function.*; -import org.tinygroup.tinyscript.tree.function.*; -import org.tinygroup.tinyscript.excel.function.*; - import org.tinygroup.tinyscript.ComputeEngine; import org.tinygroup.tinyscript.ScriptException; import org.tinygroup.tinyscript.assignvalue.AssignValueProcessor; import org.tinygroup.tinyscript.assignvalue.AssignValueUtil; +import org.tinygroup.tinyscript.collection.expression.IntersectionOperator; +import org.tinygroup.tinyscript.collection.expression.SubtractOperator; +import org.tinygroup.tinyscript.collection.expression.UnionOperator; +import org.tinygroup.tinyscript.collection.expression.XorOperator; +import org.tinygroup.tinyscript.collection.function.list.CopyFunction; +import org.tinygroup.tinyscript.collection.function.list.FillFunction; +import org.tinygroup.tinyscript.collection.function.list.FilterFunction; +import org.tinygroup.tinyscript.collection.function.list.IntersectionFunction; +import org.tinygroup.tinyscript.collection.function.list.RemoveFunction; +import org.tinygroup.tinyscript.collection.function.list.SortFunction; +import org.tinygroup.tinyscript.collection.function.list.SubtractFunction; +import org.tinygroup.tinyscript.collection.function.list.UnionFunction; +import org.tinygroup.tinyscript.collection.function.list.XorFunction; +import org.tinygroup.tinyscript.collection.function.map.MapIntersectionFunction; +import org.tinygroup.tinyscript.collection.function.map.MapSubtractFunction; +import org.tinygroup.tinyscript.collection.function.map.MapUnionFunction; +import org.tinygroup.tinyscript.collection.function.map.MapXorFunction; +import org.tinygroup.tinyscript.collection.function.math.AllPermutationFunction; +import org.tinygroup.tinyscript.collection.function.math.CombinationFunction; +import org.tinygroup.tinyscript.collection.function.math.PermutationFunction; +import org.tinygroup.tinyscript.collection.function.set.SetIntersectionFunction; +import org.tinygroup.tinyscript.collection.function.set.SetSubtractFunction; +import org.tinygroup.tinyscript.collection.function.set.SetUnionFunction; +import org.tinygroup.tinyscript.collection.function.set.SetXorFunction; +import org.tinygroup.tinyscript.collection.objectitem.ListToListProcessor; +import org.tinygroup.tinyscript.collection.objectitem.MapItemProcessor; +import org.tinygroup.tinyscript.database.function.ExecuteSqlFunction; +import org.tinygroup.tinyscript.database.function.QuerySqlFunction; +import org.tinygroup.tinyscript.database.sql.JDBCNamedSqlProcessor; +import org.tinygroup.tinyscript.dataset.attribute.DataSetColumnAttributeProcessor; +import org.tinygroup.tinyscript.dataset.attribute.ExcelAssignValueProcessor; +import org.tinygroup.tinyscript.dataset.attribute.ExcelAttributeProcessor; +import org.tinygroup.tinyscript.dataset.function.CursorRowFunction; +import org.tinygroup.tinyscript.dataset.function.DataSetAggregateFunction; +import org.tinygroup.tinyscript.dataset.function.DataSetConvertFunction; +import org.tinygroup.tinyscript.dataset.function.DataSetCopyFunction; +import org.tinygroup.tinyscript.dataset.function.DataSetFieldFunction; +import org.tinygroup.tinyscript.dataset.function.DataSetFillFunction; +import org.tinygroup.tinyscript.dataset.function.DataSetFilterFunction; +import org.tinygroup.tinyscript.dataset.function.DataSetForEachFunction; +import org.tinygroup.tinyscript.dataset.function.DataSetGroupDynamicFunction; +import org.tinygroup.tinyscript.dataset.function.DataSetGroupFunction; +import org.tinygroup.tinyscript.dataset.function.DataSetGroupStagedFunction; +import org.tinygroup.tinyscript.dataset.function.DataSetJoinFunction; +import org.tinygroup.tinyscript.dataset.function.DataSetLimitFunction; +import org.tinygroup.tinyscript.dataset.function.DataSetMatchFunction; +import org.tinygroup.tinyscript.dataset.function.DataSetRemoveFunction; +import org.tinygroup.tinyscript.dataset.function.DataSetRenameFunction; +import org.tinygroup.tinyscript.dataset.function.DataSetReplaceFunction; +import org.tinygroup.tinyscript.dataset.function.DataSetSelectFunction; +import org.tinygroup.tinyscript.dataset.function.DataSetSortFunction; +import org.tinygroup.tinyscript.dataset.function.DataSetSubFunction; +import org.tinygroup.tinyscript.dataset.function.DataSetUpdateFunction; +import org.tinygroup.tinyscript.dataset.function.FirstRowFunction; +import org.tinygroup.tinyscript.dataset.function.GroupDataSetAggregateFunction; +import org.tinygroup.tinyscript.dataset.function.GroupDataSetFilterFunction; +import org.tinygroup.tinyscript.dataset.function.GroupDataSetSortFunction; +import org.tinygroup.tinyscript.dataset.function.LastRowFunction; +import org.tinygroup.tinyscript.dataset.function.NextRowFunction; +import org.tinygroup.tinyscript.dataset.function.PreviewRowFunction; +import org.tinygroup.tinyscript.dataset.objectitem.DataSetColumnItemProcessor; +import org.tinygroup.tinyscript.dataset.objectitem.DataSetItemProcessor; +import org.tinygroup.tinyscript.dataset.objectitem.DataSetRowItemProcessor; +import org.tinygroup.tinyscript.datasetwithtree.function.DataSetToTreeFunction; +import org.tinygroup.tinyscript.excel.function.ReadExcelFunction; import org.tinygroup.tinyscript.expression.ExpressionUtil; import org.tinygroup.tinyscript.expression.Operator; -import org.tinygroup.tinyscript.impl.DefaultScriptEngine; import org.tinygroup.tinyscript.interpret.AttributeProcessor; import org.tinygroup.tinyscript.interpret.AttributeUtil; import org.tinygroup.tinyscript.interpret.ScriptContextUtil; @@ -32,6 +80,8 @@ import org.tinygroup.tinyscript.interpret.custom.CustomProcessor; import org.tinygroup.tinyscript.interpret.custom.CustomUtil; import org.tinygroup.tinyscript.objectitem.ObjectItemProcessor; import org.tinygroup.tinyscript.objectitem.ObjectItemUtil; +import org.tinygroup.tinyscript.text.function.ReadTxtFunction; +import org.tinygroup.tinyscript.tree.function.CreateDataTreeFunction; /** * 默认的集算器实现 @@ -105,6 +155,7 @@ public class DefaultComputeEngine extends DefaultScriptEngine implements Compute addScriptFunction(new PermutationFunction()); addScriptFunction(new AllPermutationFunction()); + addScriptFunction(new DataSetLimitFunction()); addScriptFunction(new DataSetCopyFunction()); addScriptFunction(new DataSetRemoveFunction()); addScriptFunction(new DataSetFillFunction()); diff --git a/org.tinygroup.tinyscriptbase/src/main/java/org/tinygroup/tinyscript/expression/convert/StringDouble.java b/org.tinygroup.tinyscriptbase/src/main/java/org/tinygroup/tinyscript/expression/convert/StringDouble.java index 1ab93de3a0a85f153832f29d430e428d9507397c..77c3bc8fe19d8cfeadc5e60e1898536732667fd5 100644 --- a/org.tinygroup.tinyscriptbase/src/main/java/org/tinygroup/tinyscript/expression/convert/StringDouble.java +++ b/org.tinygroup.tinyscriptbase/src/main/java/org/tinygroup/tinyscript/expression/convert/StringDouble.java @@ -2,9 +2,13 @@ package org.tinygroup.tinyscript.expression.convert; import org.tinygroup.tinyscript.expression.Converter; -public class StringDouble implements Converter { +public class StringDouble implements Converter { public Double convert(String object) { + if (object.indexOf("%") > 0) { + object = object.replaceAll("%", ""); + return Double.parseDouble(object)/100; + } return Double.parseDouble(object); } diff --git a/org.tinygroup.tinyscriptbase/src/main/java/org/tinygroup/tinyscript/expression/convert/StringFloat.java b/org.tinygroup.tinyscriptbase/src/main/java/org/tinygroup/tinyscript/expression/convert/StringFloat.java index ac8466e9dba90ed9d46e223b642275aaf70b0b93..3a8e7e971249f53cfccaeff74eb2ff8eaf3850e9 100644 --- a/org.tinygroup.tinyscriptbase/src/main/java/org/tinygroup/tinyscript/expression/convert/StringFloat.java +++ b/org.tinygroup.tinyscriptbase/src/main/java/org/tinygroup/tinyscript/expression/convert/StringFloat.java @@ -2,9 +2,13 @@ package org.tinygroup.tinyscript.expression.convert; import org.tinygroup.tinyscript.expression.Converter; -public class StringFloat implements Converter { +public class StringFloat implements Converter { public Float convert(String object) { + if (object.indexOf("%") > 0) { + object = object.replaceAll("%", ""); + return Float.parseFloat(object) / 100; + } return Float.parseFloat(object); }