数据集:groovy执行java代码
parent
0b251147a7
commit
f09c737461
@ -0,0 +1,14 @@
|
|||||||
|
package com.anjiplus.template.gaea.business.modules.datasettransform.service;
|
||||||
|
|
||||||
|
import com.alibaba.fastjson.JSONObject;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author: Raod
|
||||||
|
* @since: 2022-02-23
|
||||||
|
*/
|
||||||
|
public interface IGroovyHandler {
|
||||||
|
|
||||||
|
List<JSONObject> transform(List<JSONObject> data);
|
||||||
|
}
|
@ -0,0 +1,65 @@
|
|||||||
|
package com.anjiplus.template.gaea.business.modules.datasettransform.service.impl;
|
||||||
|
|
||||||
|
import com.alibaba.fastjson.JSONObject;
|
||||||
|
import com.anji.plus.gaea.exception.BusinessExceptionBuilder;
|
||||||
|
import com.anjiplus.template.gaea.business.code.ResponseCode;
|
||||||
|
import com.anjiplus.template.gaea.business.modules.datasettransform.controller.dto.DataSetTransformDto;
|
||||||
|
import com.anjiplus.template.gaea.business.modules.datasettransform.service.IGroovyHandler;
|
||||||
|
import com.anjiplus.template.gaea.business.modules.datasettransform.service.TransformStrategy;
|
||||||
|
import groovy.lang.GroovyClassLoader;
|
||||||
|
import lombok.extern.slf4j.Slf4j;
|
||||||
|
import org.springframework.stereotype.Component;
|
||||||
|
|
||||||
|
import javax.script.Invocable;
|
||||||
|
import javax.script.ScriptEngine;
|
||||||
|
import javax.script.ScriptEngineManager;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Created by raodeming on 2021/3/23.
|
||||||
|
*/
|
||||||
|
@Component
|
||||||
|
@Slf4j
|
||||||
|
public class GroovyTransformServiceImpl implements TransformStrategy {
|
||||||
|
|
||||||
|
private GroovyClassLoader groovyClassLoader = new GroovyClassLoader();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 数据清洗转换 类型
|
||||||
|
*
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
public String type() {
|
||||||
|
return "javaBean";
|
||||||
|
}
|
||||||
|
|
||||||
|
/***
|
||||||
|
* 清洗转换算法接口
|
||||||
|
* @param def
|
||||||
|
* @param data
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
public List<JSONObject> transform(DataSetTransformDto def, List<JSONObject> data) {
|
||||||
|
String transformScript = def.getTransformScript();
|
||||||
|
Class<?> clazz = groovyClassLoader.parseClass(transformScript);
|
||||||
|
if (clazz != null) {
|
||||||
|
try {
|
||||||
|
Object instance = clazz.newInstance();
|
||||||
|
if (instance!=null) {
|
||||||
|
if (instance instanceof IGroovyHandler) {
|
||||||
|
IGroovyHandler handler = (IGroovyHandler) instance;
|
||||||
|
return handler.transform(data);
|
||||||
|
} else {
|
||||||
|
System.err.println("转换失败!");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} catch (Exception e) {
|
||||||
|
log.info("执行javaBean异常", e);
|
||||||
|
throw BusinessExceptionBuilder.build(ResponseCode.EXECUTE_GROOVY_ERROR, e.getMessage());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return data;
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1 @@
|
|||||||
|
UPDATE `aj_report`.`gaea_dict_item` SET `dict_code` = 'TRANSFORM_TYPE', `item_name` = 'java脚本', `item_value` = 'javaBean', `item_extend` = NULL, `enabled` = 1, `locale` = 'zh', `remark` = NULL, `sort` = 2, `create_by` = 'admin', `create_time` = '2021-03-23 10:54:08', `update_by` = 'admin', `update_time` = '2021-03-23 10:54:08', `version` = 1 WHERE `id` = 151;
|
@ -0,0 +1,58 @@
|
|||||||
|
package com;
|
||||||
|
|
||||||
|
import com.alibaba.fastjson.JSONObject;
|
||||||
|
import com.anjiplus.template.gaea.business.modules.datasettransform.service.IGroovyHandler;
|
||||||
|
import groovy.lang.GroovyClassLoader;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author: Raod
|
||||||
|
* @since: 2022-02-23
|
||||||
|
*/
|
||||||
|
public class GroovyTest {
|
||||||
|
|
||||||
|
|
||||||
|
public static void main(String[] args) throws InstantiationException, IllegalAccessException {
|
||||||
|
// codeSource来自DemoGroovyHandler
|
||||||
|
String codeSource = "package com;\n" +
|
||||||
|
"\n" +
|
||||||
|
"import com.alibaba.fastjson.JSONObject;\n" +
|
||||||
|
"import com.anjiplus.template.gaea.business.modules.datasettransform.service.IGroovyHandler;\n" +
|
||||||
|
"\n" +
|
||||||
|
"import java.util.ArrayList;\n" +
|
||||||
|
"import java.util.List;\n" +
|
||||||
|
"\n" +
|
||||||
|
"/**\n" +
|
||||||
|
" * @author: Raod\n" +
|
||||||
|
" * @since: 2022-02-23\n" +
|
||||||
|
" */\n" +
|
||||||
|
"public class DemoGroovyHandler implements IGroovyHandler {\n" +
|
||||||
|
"\n" +
|
||||||
|
" @Override\n" +
|
||||||
|
" public List<JSONObject> transform(List<JSONObject> data) {\n" +
|
||||||
|
" List<JSONObject> result = new ArrayList<>();\n" +
|
||||||
|
" JSONObject jsonObject = new JSONObject();\n" +
|
||||||
|
" jsonObject.put(\"test\", \"demo\");\n" +
|
||||||
|
" result.add(jsonObject);\n" +
|
||||||
|
" return result;\n" +
|
||||||
|
" }\n" +
|
||||||
|
"}";
|
||||||
|
GroovyClassLoader groovyClassLoader = new GroovyClassLoader();
|
||||||
|
Class<?> clazz = groovyClassLoader.parseClass(codeSource);
|
||||||
|
if (clazz != null) {
|
||||||
|
Object instance = clazz.newInstance();
|
||||||
|
if (instance!=null) {
|
||||||
|
if (instance instanceof IGroovyHandler) {
|
||||||
|
IGroovyHandler handler = (IGroovyHandler) instance;
|
||||||
|
List<JSONObject> transform = handler.transform(null);
|
||||||
|
System.out.println(JSONObject.toJSONString(transform));
|
||||||
|
|
||||||
|
} else {
|
||||||
|
System.err.println("转换失败!");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
Loading…
Reference in New Issue