All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.tinygroup.tinyscript.impl.DefaultTinyScriptEngine Maven / Gradle / Ivy

The newest version!
package org.tinygroup.tinyscript.impl;

import java.util.Map;

import org.tinygroup.tinyscript.ScriptEngine;
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.ListGroupDynamicFunction;
import org.tinygroup.tinyscript.collection.function.list.ListGroupStagedFunction;
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.CreateMapFunction;
import org.tinygroup.tinyscript.collection.function.map.MapIntersectionFunction;
import org.tinygroup.tinyscript.collection.function.map.MapSubtractFunction;
import org.tinygroup.tinyscript.collection.function.map.MapToBeanFunction;
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.csv.function.ReadCsvFunction;
import org.tinygroup.tinyscript.csv.function.WriteCsvFunction;
import org.tinygroup.tinyscript.database.function.ExecuteSqlFunction;
import org.tinygroup.tinyscript.database.function.QuerySqlFunction;
import org.tinygroup.tinyscript.database.function.WriteDBFunction;
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.DataSetFilterOneFunction;
import org.tinygroup.tinyscript.dataset.function.DataSetForEachFunction;
import org.tinygroup.tinyscript.dataset.function.DataSetFullJoinFunction;
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.DataSetInsertFunction;
import org.tinygroup.tinyscript.dataset.function.DataSetIntersectionFunction;
import org.tinygroup.tinyscript.dataset.function.DataSetJoinFunction;
import org.tinygroup.tinyscript.dataset.function.DataSetLeftJoinFunction;
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.DataSetRightJoinFunction;
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.DataSetSubtractFunction;
import org.tinygroup.tinyscript.dataset.function.DataSetToBeanListFunction;
import org.tinygroup.tinyscript.dataset.function.DataSetUnionFunction;
import org.tinygroup.tinyscript.dataset.function.DataSetUpdateFunction;
import org.tinygroup.tinyscript.dataset.function.DataSetXorFunction;
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.DataSetGroupDateFunction;
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.function.ToDynamicDataSetFunction;
import org.tinygroup.tinyscript.dataset.function.json.DataSetToJsonFunction;
import org.tinygroup.tinyscript.dataset.function.json.JsonToDataSetFunction;
import org.tinygroup.tinyscript.dataset.function.xml.DataSetToXmlFunction;
import org.tinygroup.tinyscript.dataset.function.xml.XmlToDataSetFunction;
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.datasetwithtree.function.TreeToDataSetFunction;
import org.tinygroup.tinyscript.excel.function.ReadExcelFunction;
import org.tinygroup.tinyscript.excel.function.WriteExcelFunction;
import org.tinygroup.tinyscript.expression.ExpressionUtil;
import org.tinygroup.tinyscript.expression.Operator;
import org.tinygroup.tinyscript.interpret.AttributeProcessor;
import org.tinygroup.tinyscript.interpret.AttributeUtil;
import org.tinygroup.tinyscript.interpret.ScriptContextUtil;
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;
import org.tinygroup.tinyscript.tree.function.ReadJsonFunction;
import org.tinygroup.tinyscript.tree.function.ReadTreeDataNodeFunction;
import org.tinygroup.tinyscript.tree.function.ReadXmlFunction;
import org.tinygroup.tinyscript.tree.function.TreeDataNodeToJsonFunction;

/**
 * 默认的tinyscript实现(非动态版本)
 * @author yancheng11334
 *
 */
public class DefaultTinyScriptEngine extends DefaultScriptEngine implements ScriptEngine{
	
	private static ObjectItemProcessor listToListProcessor = new ListToListProcessor();
	private static ObjectItemProcessor dataSetItemProcessor = new DataSetItemProcessor();
	private static ObjectItemProcessor dataSetColumnItemProcessor = new DataSetColumnItemProcessor();
	private static ObjectItemProcessor dataSetRowItemProcessor = new DataSetRowItemProcessor();
	private static ObjectItemProcessor mapItemProcessor = new MapItemProcessor();
	
	private static AttributeProcessor excelAttributeProcessor = new ExcelAttributeProcessor();
	private static AttributeProcessor dataSetColumnAttributeProcessor = new DataSetColumnAttributeProcessor();
	
	private static AssignValueProcessor excelAssignValueProcessor = new ExcelAssignValueProcessor();
	
	private static Operator unionOperator = new UnionOperator();
	private static Operator subtractOperator = new SubtractOperator();
	private static Operator intersectionOperator = new IntersectionOperator();
	private static Operator xorOperator = new XorOperator();
	
	private static CustomProcessor jDBCNamedSqlProcessor = new JDBCNamedSqlProcessor();
	
	public DefaultTinyScriptEngine() throws ScriptException {
		super();
		initComputeEngine();
	}
	
	public DefaultTinyScriptEngine(Map map) throws ScriptException {
		super(map);
		initComputeEngine();
	}

	private void initComputeEngine() throws ScriptException {
		// 设置属性
		setIndexFromOne(true);
		// 注册引擎到上下文
		ScriptContextUtil.setScriptEngine(getScriptContext(), this);

		// 注册函数
		addScriptFunction(new FillFunction());
		addScriptFunction(new IntersectionFunction());
		addScriptFunction(new UnionFunction());
		addScriptFunction(new SubtractFunction());
		addScriptFunction(new FilterFunction());
		addScriptFunction(new SortFunction());
		addScriptFunction(new CopyFunction());
		addScriptFunction(new XorFunction());
		addScriptFunction(new RemoveFunction());

		addScriptFunction(new MapUnionFunction());
		addScriptFunction(new MapIntersectionFunction());
		addScriptFunction(new MapSubtractFunction());
		addScriptFunction(new MapXorFunction());
		addScriptFunction(new CreateMapFunction());
		addScriptFunction(new MapToBeanFunction());

		addScriptFunction(new SetUnionFunction());
		addScriptFunction(new SetIntersectionFunction());
		addScriptFunction(new SetSubtractFunction());
		addScriptFunction(new SetXorFunction());

		addScriptFunction(new CreateDataTreeFunction());
		addScriptFunction(new DataSetToTreeFunction());
		addScriptFunction(new TreeToDataSetFunction());
		addScriptFunction(new ReadJsonFunction());
		addScriptFunction(new ReadXmlFunction());
		addScriptFunction(new TreeDataNodeToJsonFunction());
		addScriptFunction(new ReadTreeDataNodeFunction());

		addScriptFunction(new ExecuteSqlFunction());
		addScriptFunction(new QuerySqlFunction());
		addScriptFunction(new WriteDBFunction());

		addScriptFunction(new CombinationFunction());
		addScriptFunction(new PermutationFunction());
		addScriptFunction(new AllPermutationFunction());

		addScriptFunction(new DataSetIntersectionFunction());
		addScriptFunction(new DataSetSubtractFunction());
		addScriptFunction(new DataSetUnionFunction());
		addScriptFunction(new DataSetXorFunction());
		addScriptFunction(new DataSetCopyFunction());
		addScriptFunction(new DataSetRemoveFunction());
		addScriptFunction(new DataSetFillFunction());
		addScriptFunction(new DataSetFilterFunction());
		addScriptFunction(new DataSetSortFunction());
		addScriptFunction(new DataSetGroupFunction());
		addScriptFunction(new DataSetJoinFunction());
		addScriptFunction(new DataSetSelectFunction());
		addScriptFunction(new DataSetMatchFunction());
		addScriptFunction(new DataSetUpdateFunction());
		addScriptFunction(new DataSetRenameFunction());
		addScriptFunction(new DataSetFieldFunction());
		addScriptFunction(new DataSetSubFunction());
		addScriptFunction(new DataSetConvertFunction());
		addScriptFunction(new DataSetForEachFunction());
		addScriptFunction(new DataSetReplaceFunction());
		addScriptFunction(new DataSetGroupStagedFunction());
		addScriptFunction(new DataSetGroupDynamicFunction());
		addScriptFunction(new ToDynamicDataSetFunction());
		addScriptFunction(new DataSetFilterOneFunction());
		addScriptFunction(new DataSetToBeanListFunction());
		addScriptFunction(new DataSetRightJoinFunction());
		addScriptFunction(new DataSetLeftJoinFunction());
		addScriptFunction(new DataSetFullJoinFunction());
		addScriptFunction(new DataSetInsertFunction());
		addScriptFunction(new DataSetToJsonFunction());
		addScriptFunction(new JsonToDataSetFunction());
		addScriptFunction(new DataSetToXmlFunction());
		addScriptFunction(new DataSetGroupDateFunction());
		addScriptFunction(new XmlToDataSetFunction());
		addScriptFunction(new ListGroupDynamicFunction());
		addScriptFunction(new ListGroupStagedFunction());
		

		addScriptFunction(new GroupDataSetFilterFunction());
		addScriptFunction(new GroupDataSetSortFunction());

		addScriptFunction(new GroupDataSetAggregateFunction());
		addScriptFunction(new DataSetAggregateFunction());

		addScriptFunction(new CursorRowFunction());
		addScriptFunction(new FirstRowFunction());
		addScriptFunction(new LastRowFunction());
		addScriptFunction(new NextRowFunction());
		addScriptFunction(new PreviewRowFunction());

		addScriptFunction(new ReadExcelFunction());
		addScriptFunction(new WriteExcelFunction());
		addScriptFunction(new ReadCsvFunction());
		addScriptFunction(new WriteCsvFunction());

		addScriptFunction(new ReadTxtFunction());

		// 注册处理器
		ObjectItemUtil.addObjectItemProcessor(listToListProcessor, 0);
		ObjectItemUtil.addObjectItemProcessor(dataSetItemProcessor);
		ObjectItemUtil.addObjectItemProcessor(dataSetColumnItemProcessor);
		ObjectItemUtil.addObjectItemProcessor(dataSetRowItemProcessor);
		ObjectItemUtil.addObjectItemProcessor(mapItemProcessor);

		AttributeUtil.addAttributeProcessor(excelAttributeProcessor, 0);
		AttributeUtil.addAttributeProcessor(dataSetColumnAttributeProcessor, 1);
		AssignValueUtil.addAssignValueProcessor(excelAssignValueProcessor);

		// 注册操作符处理器
		ExpressionUtil.addOperator(unionOperator);
		ExpressionUtil.addOperator(subtractOperator);
		ExpressionUtil.addOperator(intersectionOperator);
		ExpressionUtil.addOperator(xorOperator);
		
		//注册sql处理器
		CustomUtil.addCustomProcessor(jDBCNamedSqlProcessor);
	}
	
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy