Commit 7118602c by huangfusuper

命令参数替换

parent d0cc6f7d
......@@ -48,6 +48,7 @@ public class ScriptExecutorJobTask implements TimerTask {
private static final String HTTP_SUFFIX = "/myth-job-admin/job/callbackRes";
public static final String LINE = "\n";
private static final Integer INIT_SLEEP_TIME = 100;
public static final String JAVA_TYPE = "java";
private JobTaskSchedule mythJobTaskSchedule;
......@@ -135,11 +136,22 @@ public class ScriptExecutorJobTask implements TimerTask {
if (CollectionUtil.isNotEmpty(param)) {
command = PlaceholderUtils.commandReplace(command, param);
}
if (ScheduleTypeEnum.REPAIR.getCode().equals(mythJobTaskSchedule.getScheduleType())) {
if(command.startsWith(JAVA_TYPE)) {
if(ScheduleTypeEnum.REPAIR.getCode().equals(mythJobTaskSchedule.getScheduleType())){
command = PlaceholderUtils.commandDateReplace(param, command, param.get(PlaceholderEnum.DATE_PLACEHOLDER.getName()),
param.get(PlaceholderEnum.NOW_DATE_PLACEHOLDER.getName()));
}else{
command = PlaceholderUtils.commandDateReplace(param, command);
}
}
}
}
//公共参数不为空的时候
if (CollectionUtil.isNotEmpty(publicParam)) {
command = PlaceholderUtils.commandReplace(command, publicParam);
}
mythJobTaskSchedule.setRunCommand(command);
}
}
......
......@@ -9,11 +9,11 @@ import org.apache.commons.lang3.StringUtils;
import java.nio.charset.StandardCharsets;
import java.util.Date;
import java.util.HashMap;
import java.util.Map;
/**
* 占位符替换工具类
*
* @author huangfu
*/
@Slf4j
......@@ -27,96 +27,160 @@ public class PlaceholderUtils {
* 占位符后缀
*/
private static final String PLACEHOLDER_SUFFIX = "}";
public static final String JAVA_TYPE = "java";
/**
* 占位符数据替换
*
* @param scriptData 脚本数据
* @param parameter 脚本参数
* @param parameter 脚本参数
* @return 替换后的脚本参数
*/
public static byte[] resolvePlaceholders(byte[] scriptData, Map<String,String> parameter){
public static byte[] resolvePlaceholders(byte[] scriptData, Map<String, String> parameter) {
//替换为null 不做操作
if(parameter == null || parameter.isEmpty()){
if (parameter == null || parameter.isEmpty()) {
log.warn("------------占位符数据为空--------");
return scriptData;
}
//读取脚本文件
String scriptContent = new String(scriptData, StandardCharsets.UTF_8);
for (Map.Entry<String, String> entity : parameter.entrySet()) {
String newKey = String.format("%s%s%s",PLACEHOLDER_PREFIX,entity.getKey(),PLACEHOLDER_SUFFIX);
scriptContent = scriptContent.replace(newKey, entity.getValue());
String newKey = String.format("%s%s%s", PLACEHOLDER_PREFIX, entity.getKey(), PLACEHOLDER_SUFFIX);
scriptContent = scriptContent.replace(newKey, entity.getValue());
}
return scriptContent.getBytes(StandardCharsets.UTF_8);
}
/**
* 命令占位符替换
*
* @param command 命令
* @param param 参数
* @param param 参数
* @return 替换后的参数
*/
public static String commandReplace(String command,Map<String,String> param){
if(StringUtils.isBlank(command) || CollectionUtil.isEmpty(param)){
log.debug("-----------命令{},不需要替换-----------",command);
public static String commandReplace(String command, Map<String, String> param) {
if (StringUtils.isBlank(command) || CollectionUtil.isEmpty(param)) {
log.debug("-----------命令{},不需要替换-----------", command);
return command;
}
StringBuilder sb = new StringBuilder(command);
for (Map.Entry<String, String> stringStringEntry : param.entrySet()) {
sb.append(" -").append(stringStringEntry.getKey()).append(" ").append(stringStringEntry.getValue());
if (!command.startsWith(JAVA_TYPE)) {
StringBuilder sb = new StringBuilder(command);
for (Map.Entry<String, String> stringStringEntry : param.entrySet()) {
sb.append(" -").append(stringStringEntry.getKey()).append(" ").append(stringStringEntry.getValue());
}
return sb.toString();
}else{
command = commandDateReplace(param, command);
}
return command;
}
/**
* 命令日期替换
*
* @param commandParameter 参数对象
* @param command 原始命令
* @return 替换完成后的命令
*/
public static String commandDateReplace(Map<String, String> commandParameter, String command) {
return commandDateReplace(commandParameter, command, null, null);
}
/**
* 命令时间参数替换
* @param commandParameter 命令参数
* @param command 命令
* @param bizDate 时间
* @param nowDate 时间
* @return 替换后的命令
*/
public static String commandDateReplace(Map<String, String> commandParameter, String command, String bizDate,String nowDate) {
String bizDateTypeName = "yyyyMMdd";
String nowDateTypeName = "yyyyMMdd";
if (StringUtils.isBlank(command)) {
return command;
}
if (CollectionUtil.isNotEmpty(commandParameter)) {
String bizDateParamTypeName = commandParameter.get(PlaceholderEnum.DATE_PLACEHOLDER.getName());
String nowDateParamTypeName = commandParameter.get(PlaceholderEnum.NOW_DATE_PLACEHOLDER.getName());
if (StringUtils.isNoneBlank(bizDateParamTypeName)) {
bizDateTypeName = bizDateParamTypeName;
}
if (StringUtils.isNoneBlank(nowDateParamTypeName)) {
nowDateTypeName = nowDateParamTypeName;
}
}
if(StringUtils.isBlank(bizDate)){
bizDate = DateUtil.dateLessDayStr(new Date(), bizDateTypeName, 1);
}
if(StringUtils.isBlank(nowDate)) {
nowDate = DateUtil.dateFormat(new Date(), nowDateTypeName);
}
return sb.toString();
command = command.replace(PLACEHOLDER_PREFIX + PlaceholderEnum.DATE_PLACEHOLDER.getName() + PLACEHOLDER_SUFFIX, bizDate);
command = command.replace(PLACEHOLDER_PREFIX + PlaceholderEnum.NOW_DATE_PLACEHOLDER.getName() + PLACEHOLDER_SUFFIX, nowDate);
return command;
}
/**
* 初始化脚本信息
* @param command 基础命令
*
* @param command 基础命令
* @param scriptPath 脚本路径
* @return 基础命令
*/
public static String initCommand(String command,String scriptPath){
log.info("----------替换路径{}------",scriptPath);
return command.replace(PLACEHOLDER_PREFIX+PlaceholderEnum.BIZ_SCRIPT_FILE.getName()+PLACEHOLDER_SUFFIX,scriptPath);
public static String initCommand(String command, String scriptPath) {
log.info("----------替换路径{}------", scriptPath);
return command.replace(PLACEHOLDER_PREFIX + PlaceholderEnum.BIZ_SCRIPT_FILE.getName() + PLACEHOLDER_SUFFIX, scriptPath);
}
/**
* 格式化运行参数
* 如果参数内存在时间参数 就将时间参数改为
*
* @param runParam 运行参数
* @return 参数字符串
*/
public static String formatBizDateParam(String runParam,String key, Integer cutBackDay){
public static String formatBizDateParam(String runParam, String key, Integer cutBackDay) {
return formatBizDateParam(runParam, key, null, cutBackDay);
}
public static String formatBizDateParam(String runParam,String key, String value, Integer cutBackDay){
public static String formatBizDateParam(String runParam, String key, String value, Integer cutBackDay) {
if (StringUtils.isBlank(runParam)) {
return null;
}
ScriptParamAndPlaceholderDto scriptParamAndPlaceholderDto = JSON.parseObject(runParam,ScriptParamAndPlaceholderDto.class);
ScriptParamAndPlaceholderDto scriptParamAndPlaceholderDto = JSON.parseObject(runParam, ScriptParamAndPlaceholderDto.class);
//获取命令参数
Map<String, String> param = scriptParamAndPlaceholderDto.getParam();
//获取替换成参数
Map<String, String> placeholder = scriptParamAndPlaceholderDto.getPlaceholder();
if(CollectionUtil.isNotEmpty(param) && param.containsKey(key)){
if(StringUtils.isNoneBlank(value)) {
placeholder.put(key,value);
}else{
//替换命令参数
if (CollectionUtil.isNotEmpty(param) && param.containsKey(key)) {
if (StringUtils.isNoneBlank(value)) {
param.put(key, value);
} else {
String dateFormat = param.get(key);
String calculationDate = DateUtil.dateLessDayStr(new Date(), dateFormat, cutBackDay);
param.put(key,calculationDate);
param.put(key, calculationDate);
scriptParamAndPlaceholderDto.setParam(param);
}
}
//获取脚本占位符
if(CollectionUtil.isNotEmpty(placeholder) && placeholder.containsKey(key)){
if(StringUtils.isNoneBlank(value)) {
placeholder.put(key,value);
}else{
String dateFormat = param.get(key);
if (CollectionUtil.isNotEmpty(placeholder) && placeholder.containsKey(key)) {
if (StringUtils.isNoneBlank(value)) {
placeholder.put(key, value);
} else {
String dateFormat = placeholder.get(key);
String calculationDate = DateUtil.dateLessDayStr(new Date(), dateFormat, cutBackDay);
placeholder.put(key,calculationDate);
placeholder.put(key, calculationDate);
scriptParamAndPlaceholderDto.setPlaceholder(placeholder);
}
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment