getAllErrors() {
+ return allErrors;
+ }
+
+}
diff --git a/udf-starter-core/src/main/java/org/itkk/udf/core/exception/PermissionException.java b/udf-stater/udf-starter-core/src/main/java/org/itkk/udf/core/exception/PermissionException.java
similarity index 94%
rename from udf-starter-core/src/main/java/org/itkk/udf/core/exception/PermissionException.java
rename to udf-stater/udf-starter-core/src/main/java/org/itkk/udf/core/exception/PermissionException.java
index 3a08c31..bc8fec6 100644
--- a/udf-starter-core/src/main/java/org/itkk/udf/core/exception/PermissionException.java
+++ b/udf-stater/udf-starter-core/src/main/java/org/itkk/udf/core/exception/PermissionException.java
@@ -1,66 +1,66 @@
-/**
- * PermissionException.java
- * Created at 2016-03-01
- * Created by wangkang
- * Copyright (C) 2016 itkk.org, All rights reserved.
- */
-package org.itkk.udf.core.exception;
-
-/**
- *
- * ClassName: PermissionException
- *
- *
- * Description: 权限异常
- *
- *
- * Author: wangkang
- *
- *
- * Date: 2016年3月23日
- *
- */
-public class PermissionException extends RuntimeException {
-
- /**
- *
- * Field serialVersionUID: 序列号
- *
- */
- private static final long serialVersionUID = 1L;
-
- /**
- *
- * Description: 构造函数
- *
- *
- * @param message 异常信息
- */
- public PermissionException(String message) {
- super(message);
- }
-
- /**
- *
- * Description: 构造函数
- *
- *
- * @param cause 堆栈
- */
- public PermissionException(Throwable cause) {
- super(cause);
- }
-
- /**
- *
- * Description: 构造函数
- *
- *
- * @param message 异常信息
- * @param cause 堆栈
- */
- public PermissionException(String message, Throwable cause) {
- super(message, cause);
- }
-
-}
+/**
+ * PermissionException.java
+ * Created at 2016-03-01
+ * Created by wangkang
+ * Copyright (C) 2016 itkk.org, All rights reserved.
+ */
+package org.itkk.udf.core.exception;
+
+/**
+ *
+ * ClassName: PermissionException
+ *
+ *
+ * Description: 权限异常
+ *
+ *
+ * Author: wangkang
+ *
+ *
+ * Date: 2016年3月23日
+ *
+ */
+public class PermissionException extends RuntimeException {
+
+ /**
+ *
+ * Field serialVersionUID: 序列号
+ *
+ */
+ private static final long serialVersionUID = 1L;
+
+ /**
+ *
+ * Description: 构造函数
+ *
+ *
+ * @param message 异常信息
+ */
+ public PermissionException(String message) {
+ super(message);
+ }
+
+ /**
+ *
+ * Description: 构造函数
+ *
+ *
+ * @param cause 堆栈
+ */
+ public PermissionException(Throwable cause) {
+ super(cause);
+ }
+
+ /**
+ *
+ * Description: 构造函数
+ *
+ *
+ * @param message 异常信息
+ * @param cause 堆栈
+ */
+ public PermissionException(String message, Throwable cause) {
+ super(message, cause);
+ }
+
+}
diff --git a/udf-starter-core/src/main/java/org/itkk/udf/core/exception/SystemException.java b/udf-stater/udf-starter-core/src/main/java/org/itkk/udf/core/exception/SystemException.java
similarity index 94%
rename from udf-starter-core/src/main/java/org/itkk/udf/core/exception/SystemException.java
rename to udf-stater/udf-starter-core/src/main/java/org/itkk/udf/core/exception/SystemException.java
index 9b6b8a2..da9b75e 100644
--- a/udf-starter-core/src/main/java/org/itkk/udf/core/exception/SystemException.java
+++ b/udf-stater/udf-starter-core/src/main/java/org/itkk/udf/core/exception/SystemException.java
@@ -1,64 +1,64 @@
-/**
- * SystemException.java
- * Created at 2016-03-01
- * Created by wangkang
- * Copyright (C) 2016 itkk.org, All rights reserved.
- */
-package org.itkk.udf.core.exception;
-
-/**
- *
- * ClassName: SystemException
- *
- *
- * Description: 系统异常
- *
- *
- * Author: wangkang
- *
- *
- * Date: 2016年3月23日
- *
- */
-public class SystemException extends Exception {
-
- /**
- * 描述 : id
- */
- private static final long serialVersionUID = 1L;
-
- /**
- *
- * Description: 构造函数
- *
- *
- * @param message 异常信息
- */
- public SystemException(String message) {
- super(message);
- }
-
- /**
- *
- * Description: 构造函数
- *
- *
- * @param cause 堆栈
- */
- public SystemException(Throwable cause) {
- super(cause);
- }
-
- /**
- *
- * Description: 构造函数
- *
- *
- * @param message 异常信息
- * @param cause 堆栈
- */
- public SystemException(String message, Throwable cause) {
- super(message, cause);
- }
-
-}
+/**
+ * SystemException.java
+ * Created at 2016-03-01
+ * Created by wangkang
+ * Copyright (C) 2016 itkk.org, All rights reserved.
+ */
+package org.itkk.udf.core.exception;
+
+/**
+ *
+ * ClassName: SystemException
+ *
+ *
+ * Description: 系统异常
+ *
+ *
+ * Author: wangkang
+ *
+ *
+ * Date: 2016年3月23日
+ *
+ */
+public class SystemException extends Exception {
+
+ /**
+ * 描述 : id
+ */
+ private static final long serialVersionUID = 1L;
+
+ /**
+ *
+ * Description: 构造函数
+ *
+ *
+ * @param message 异常信息
+ */
+ public SystemException(String message) {
+ super(message);
+ }
+
+ /**
+ *
+ * Description: 构造函数
+ *
+ *
+ * @param cause 堆栈
+ */
+ public SystemException(Throwable cause) {
+ super(cause);
+ }
+
+ /**
+ *
+ * Description: 构造函数
+ *
+ *
+ * @param message 异常信息
+ * @param cause 堆栈
+ */
+ public SystemException(String message, Throwable cause) {
+ super(message, cause);
+ }
+
+}
diff --git a/udf-starter-core/src/main/java/org/itkk/udf/core/exception/SystemRuntimeException.java b/udf-stater/udf-starter-core/src/main/java/org/itkk/udf/core/exception/SystemRuntimeException.java
similarity index 94%
rename from udf-starter-core/src/main/java/org/itkk/udf/core/exception/SystemRuntimeException.java
rename to udf-stater/udf-starter-core/src/main/java/org/itkk/udf/core/exception/SystemRuntimeException.java
index 712ef1a..8b41443 100644
--- a/udf-starter-core/src/main/java/org/itkk/udf/core/exception/SystemRuntimeException.java
+++ b/udf-stater/udf-starter-core/src/main/java/org/itkk/udf/core/exception/SystemRuntimeException.java
@@ -1,66 +1,66 @@
-/**
- * SystemRuntimeException.java
- * Created at 2016-03-01
- * Created by wangkang
- * Copyright (C) 2016 itkk.org, All rights reserved.
- */
-package org.itkk.udf.core.exception;
-
-/**
- *
- * ClassName: SystemRuntimeException
- *
- *
- * Description: 系统运行时异常
- *
- *
- * Author: wangkang
- *
- *
- * Date: 2016年3月23日
- *
- */
-public class SystemRuntimeException extends RuntimeException {
-
- /**
- *
- * Field serialVersionUID: 序列号
- *
- */
- private static final long serialVersionUID = 1L;
-
- /**
- *
- * Description: 构造函数
- *
- *
- * @param message 异常信息
- */
- public SystemRuntimeException(String message) {
- super(message);
- }
-
- /**
- *
- * Description: 构造函数
- *
- *
- * @param cause 堆栈
- */
- public SystemRuntimeException(Throwable cause) {
- super(cause);
- }
-
- /**
- *
- * Description: 构造函数
- *
- *
- * @param message 异常信息
- * @param cause 堆栈
- */
- public SystemRuntimeException(String message, Throwable cause) {
- super(message, cause);
- }
-
-}
+/**
+ * SystemRuntimeException.java
+ * Created at 2016-03-01
+ * Created by wangkang
+ * Copyright (C) 2016 itkk.org, All rights reserved.
+ */
+package org.itkk.udf.core.exception;
+
+/**
+ *
+ * ClassName: SystemRuntimeException
+ *
+ *
+ * Description: 系统运行时异常
+ *
+ *
+ * Author: wangkang
+ *
+ *
+ * Date: 2016年3月23日
+ *
+ */
+public class SystemRuntimeException extends RuntimeException {
+
+ /**
+ *
+ * Field serialVersionUID: 序列号
+ *
+ */
+ private static final long serialVersionUID = 1L;
+
+ /**
+ *
+ * Description: 构造函数
+ *
+ *
+ * @param message 异常信息
+ */
+ public SystemRuntimeException(String message) {
+ super(message);
+ }
+
+ /**
+ *
+ * Description: 构造函数
+ *
+ *
+ * @param cause 堆栈
+ */
+ public SystemRuntimeException(Throwable cause) {
+ super(cause);
+ }
+
+ /**
+ *
+ * Description: 构造函数
+ *
+ *
+ * @param message 异常信息
+ * @param cause 堆栈
+ */
+ public SystemRuntimeException(String message, Throwable cause) {
+ super(message, cause);
+ }
+
+}
diff --git a/udf-starter-core/src/main/java/org/itkk/udf/core/exception/alert/IExceptionAlert.java b/udf-stater/udf-starter-core/src/main/java/org/itkk/udf/core/exception/alert/IExceptionAlert.java
similarity index 100%
rename from udf-starter-core/src/main/java/org/itkk/udf/core/exception/alert/IExceptionAlert.java
rename to udf-stater/udf-starter-core/src/main/java/org/itkk/udf/core/exception/alert/IExceptionAlert.java
diff --git a/udf-starter-core/src/main/java/org/itkk/udf/core/exception/handle/ExceptionController.java b/udf-stater/udf-starter-core/src/main/java/org/itkk/udf/core/exception/handle/ExceptionController.java
similarity index 100%
rename from udf-starter-core/src/main/java/org/itkk/udf/core/exception/handle/ExceptionController.java
rename to udf-stater/udf-starter-core/src/main/java/org/itkk/udf/core/exception/handle/ExceptionController.java
diff --git a/udf-starter-core/src/main/java/org/itkk/udf/core/exception/handle/ExceptionControllerConfig.java b/udf-stater/udf-starter-core/src/main/java/org/itkk/udf/core/exception/handle/ExceptionControllerConfig.java
similarity index 100%
rename from udf-starter-core/src/main/java/org/itkk/udf/core/exception/handle/ExceptionControllerConfig.java
rename to udf-stater/udf-starter-core/src/main/java/org/itkk/udf/core/exception/handle/ExceptionControllerConfig.java
diff --git a/udf-starter-core/src/main/java/org/itkk/udf/core/exception/handle/ExceptionCors.java b/udf-stater/udf-starter-core/src/main/java/org/itkk/udf/core/exception/handle/ExceptionCors.java
similarity index 100%
rename from udf-starter-core/src/main/java/org/itkk/udf/core/exception/handle/ExceptionCors.java
rename to udf-stater/udf-starter-core/src/main/java/org/itkk/udf/core/exception/handle/ExceptionCors.java
diff --git a/udf-starter-core/src/main/java/org/itkk/udf/core/exception/handle/ExceptionHandle.java b/udf-stater/udf-starter-core/src/main/java/org/itkk/udf/core/exception/handle/ExceptionHandle.java
similarity index 100%
rename from udf-starter-core/src/main/java/org/itkk/udf/core/exception/handle/ExceptionHandle.java
rename to udf-stater/udf-starter-core/src/main/java/org/itkk/udf/core/exception/handle/ExceptionHandle.java
diff --git a/udf-starter-core/src/main/java/org/itkk/udf/core/exception/handle/RmsResponseErrorHandler.java b/udf-stater/udf-starter-core/src/main/java/org/itkk/udf/core/exception/handle/RmsResponseErrorHandler.java
similarity index 100%
rename from udf-starter-core/src/main/java/org/itkk/udf/core/exception/handle/RmsResponseErrorHandler.java
rename to udf-stater/udf-starter-core/src/main/java/org/itkk/udf/core/exception/handle/RmsResponseErrorHandler.java
diff --git a/udf-starter-core/src/main/java/org/itkk/udf/core/utils/ClassUtil.java b/udf-stater/udf-starter-core/src/main/java/org/itkk/udf/core/utils/ClassUtil.java
similarity index 96%
rename from udf-starter-core/src/main/java/org/itkk/udf/core/utils/ClassUtil.java
rename to udf-stater/udf-starter-core/src/main/java/org/itkk/udf/core/utils/ClassUtil.java
index fa24c61..1c0416f 100644
--- a/udf-starter-core/src/main/java/org/itkk/udf/core/utils/ClassUtil.java
+++ b/udf-stater/udf-starter-core/src/main/java/org/itkk/udf/core/utils/ClassUtil.java
@@ -1,59 +1,59 @@
-/**
- * ClassUtil.java
- * Created at 2017-06-02
- * Created by Administrator
- * Copyright (C) 2016 itkk.org, All rights reserved.
- */
-package org.itkk.udf.core.utils;
-
-import org.springframework.beans.factory.config.BeanDefinition;
-import org.springframework.context.annotation.ClassPathScanningCandidateComponentProvider;
-import org.springframework.core.type.filter.AssignableTypeFilter;
-
-import java.lang.reflect.Modifier;
-import java.util.ArrayList;
-import java.util.List;
-import java.util.Set;
-
-/**
- * 描述 : ClassUtil
- *
- * @author Administrator
- */
-public class ClassUtil {
-
- /**
- * 描述 : 私有化构造函数
- */
- private ClassUtil() {
-
- }
-
- /**
- * 描述 : 获取在指定包下某个class的所有非抽象子类
- *
- * @param parentClass 父类
- * @param packagePath 指定包,格式如"org.itkk"
- * @param 泛型类
- * @return 列表
- * @throws ClassNotFoundException 异常
- */
- public static List> getSubClasses(final Class parentClass,
- final String packagePath) throws ClassNotFoundException {
- ClassPathScanningCandidateComponentProvider provider =
- new ClassPathScanningCandidateComponentProvider(false);
- provider.addIncludeFilter(new AssignableTypeFilter(parentClass));
- Set components = provider.findCandidateComponents(packagePath);
- List> subClasses = new ArrayList<>();
- for (BeanDefinition component : components) {
- @SuppressWarnings("unchecked")
- Class cls = (Class) Class.forName(component.getBeanClassName());
- if (Modifier.isAbstract(cls.getModifiers())) {
- continue;
- }
- subClasses.add(cls);
- }
- return subClasses;
- }
-
-}
+/**
+ * ClassUtil.java
+ * Created at 2017-06-02
+ * Created by Administrator
+ * Copyright (C) 2016 itkk.org, All rights reserved.
+ */
+package org.itkk.udf.core.utils;
+
+import org.springframework.beans.factory.config.BeanDefinition;
+import org.springframework.context.annotation.ClassPathScanningCandidateComponentProvider;
+import org.springframework.core.type.filter.AssignableTypeFilter;
+
+import java.lang.reflect.Modifier;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Set;
+
+/**
+ * 描述 : ClassUtil
+ *
+ * @author Administrator
+ */
+public class ClassUtil {
+
+ /**
+ * 描述 : 私有化构造函数
+ */
+ private ClassUtil() {
+
+ }
+
+ /**
+ * 描述 : 获取在指定包下某个class的所有非抽象子类
+ *
+ * @param parentClass 父类
+ * @param packagePath 指定包,格式如"org.itkk"
+ * @param 泛型类
+ * @return 列表
+ * @throws ClassNotFoundException 异常
+ */
+ public static List> getSubClasses(final Class parentClass,
+ final String packagePath) throws ClassNotFoundException {
+ ClassPathScanningCandidateComponentProvider provider =
+ new ClassPathScanningCandidateComponentProvider(false);
+ provider.addIncludeFilter(new AssignableTypeFilter(parentClass));
+ Set components = provider.findCandidateComponents(packagePath);
+ List> subClasses = new ArrayList<>();
+ for (BeanDefinition component : components) {
+ @SuppressWarnings("unchecked")
+ Class cls = (Class) Class.forName(component.getBeanClassName());
+ if (Modifier.isAbstract(cls.getModifiers())) {
+ continue;
+ }
+ subClasses.add(cls);
+ }
+ return subClasses;
+ }
+
+}
diff --git a/udf-starter-core/src/main/java/org/itkk/udf/core/utils/DateUtil.java b/udf-stater/udf-starter-core/src/main/java/org/itkk/udf/core/utils/DateUtil.java
similarity index 96%
rename from udf-starter-core/src/main/java/org/itkk/udf/core/utils/DateUtil.java
rename to udf-stater/udf-starter-core/src/main/java/org/itkk/udf/core/utils/DateUtil.java
index 7ba048b..9438f33 100644
--- a/udf-starter-core/src/main/java/org/itkk/udf/core/utils/DateUtil.java
+++ b/udf-stater/udf-starter-core/src/main/java/org/itkk/udf/core/utils/DateUtil.java
@@ -1,283 +1,283 @@
-/**
- * DateUtil.java
- * Created at 2017-06-02
- * Created by Administrator
- * Copyright (C) 2016 itkk.org, All rights reserved.
- */
-package org.itkk.udf.core.utils;
-
-import java.text.ParseException;
-import java.text.SimpleDateFormat;
-import java.util.*;
-
-/**
- *
- * ClassName: DateUtil
- *
- *
- * Description: 日期工具类
- *
- *
- * Author: Administrator
- *
- *
- * Date: 2016年3月23日
- *
- */
-public class DateUtil {
-
- /**
- *
- * Description: 构造函数
- *
- */
- private DateUtil() {
- }
-
- /**
- * dayStart
- *
- * @param date date
- * @return Date
- */
- public static Date dayStart(Date date) {
- Calendar calendar = new GregorianCalendar();
- calendar.setTime(date);
- calendar.set(Calendar.HOUR, 0);
- calendar.set(Calendar.MINUTE, 0);
- calendar.set(Calendar.SECOND, 0);
- calendar.set(Calendar.MILLISECOND, 0);
- return calendar.getTime();
- }
-
- /**
- * dayEnd
- *
- * @param date date
- * @return Date
- */
- public static Date dayEnd(Date date) {
- final int num23 = 23;
- final int num59 = 59;
- final int num999 = 999;
- Calendar calendar = new GregorianCalendar();
- calendar.setTime(date);
- calendar.set(Calendar.HOUR, num23);
- calendar.set(Calendar.MINUTE, num59);
- calendar.set(Calendar.SECOND, num59);
- calendar.set(Calendar.MILLISECOND, num999);
- return calendar.getTime();
- }
-
- /**
- * 对日期(时间)中的日进行加减计算.
- * 例子:
- * 如果Date类型的d为 2005年8月20日,那么
- * calculateByDate(d,-10)的值为2005年8月10日
- * 而calculateByDate(d,+10)的值为2005年8月30日
- *
- * @param d 日期(时间).
- * @param amount 加减计算的幅度.+n=加n天;-n=减n天.
- * @return 计算后的日期(时间).
- */
- public static Date calculateByDate(Date d, int amount) {
- return calculate(d, GregorianCalendar.DATE, amount);
- }
-
- /**
- *
- * Description: 对日期(分钟)中的日进行加减计算.
- *
- *
- * @param d 日期(时间).
- * @param amount 加减计算的幅度
- * @return 计算后的日期(时间)
- */
- public static Date calculateByMinute(Date d, int amount) {
- return calculate(d, GregorianCalendar.MINUTE, amount);
- }
-
- /**
- *
- * Description: 对日期(年)中的日进行加减计算.
- *
- *
- * @param d 日期(时间).
- * @param amount 加减计算的幅度
- * @return 计算后的日期(时间)
- */
- public static Date calculateByYear(Date d, int amount) {
- return calculate(d, GregorianCalendar.YEAR, amount);
- }
-
- /**
- * 对日期(时间)中由field参数指定的日期成员进行加减计算.
- * 例子:
- * 如果Date类型的d为 2005年8月20日,那么
- * calculate(d,GregorianCalendar.YEAR,-10)的值为1995年8月20日
- * 而calculate(d,GregorianCalendar.YEAR,+10)的值为2015年8月20日
- *
- * @param d 日期(时间).
- * @param field 日期成员.
- * 日期成员主要有:
- * 年:GregorianCalendar.YEAR
- * 月:GregorianCalendar.MONTH
- * 日:GregorianCalendar.DATE
- * 时:GregorianCalendar.HOUR
- * 分:GregorianCalendar.MINUTE
- * 秒:GregorianCalendar.SECOND
- * 毫秒:GregorianCalendar.MILLISECOND
- * @param amount 加减计算的幅度.+n=加n个由参数field指定的日期成员值;-n=减n个由参数field代表的日期成员值.
- * @return 计算后的日期(时间).
- */
- private static Date calculate(Date d, int field, int amount) {
- if (d == null) {
- return null;
- }
- GregorianCalendar g = new GregorianCalendar();
- g.setGregorianChange(d);
- g.add(field, amount);
- return g.getTime();
- }
-
- /**
- * 日期(时间)转化为字符串.
- *
- * @param formater 日期或时间的格式.
- * @param aDate java.util.Date类的实例.
- * @return 日期转化后的字符串.
- */
- public static String dateToString(String formater, Date aDate) {
- if (formater == null || "".equals(formater)) {
- return null;
- }
- if (aDate == null) {
- return null;
- }
- return (new SimpleDateFormat(formater)).format(aDate);
- }
-
- /**
- * 当前日期(时间)转化为字符串.
- *
- * @param formater 日期或时间的格式.
- * @return 日期转化后的字符串.
- */
- public static String dateToString(String formater) {
- return dateToString(formater, new Date());
- }
-
- /**
- * 获取当前日期对应的星期数.
- * 1=星期天,2=星期一,3=星期二,4=星期三,5=星期四,6=星期五,7=星期六
- *
- * @return 当前日期对应的星期数
- */
- public static int dayOfWeek() {
- GregorianCalendar g = new GregorianCalendar();
- return g.get(java.util.Calendar.DAY_OF_WEEK);
- }
-
- /**
- * 获取所有的时区编号.
- * 排序规则:按照ASCII字符的正序进行排序.
- * 排序时候忽略字符大小写.
- *
- * @return 所有的时区编号(时区编号已经按照字符[忽略大小写]排序).
- */
- public static List fecthAllTimeZoneIds() {
- List v = new ArrayList<>();
- String[] ids = TimeZone.getAvailableIDs();
- Arrays.stream(ids).forEach(id -> { //NOSONAR
- v.add(id);
- });
- Collections.sort(v, String.CASE_INSENSITIVE_ORDER);
- return v;
- }
-
- /**
- * 将日期时间字符串根据转换为指定时区的日期时间.
- *
- * @param srcFormater 待转化的日期时间的格式.
- * @param srcDateTime 待转化的日期时间.
- * @param dstFormater 目标的日期时间的格式.
- * @param dstTimeZoneId 目标的时区编号.
- * @return 转化后的日期时间.
- * @throws ParseException 异常
- */
- public static String stringToTimezone(String srcFormater, String srcDateTime, String dstFormater, String dstTimeZoneId) throws ParseException { //NOSONAR
- if (srcFormater == null || "".equals(srcFormater)) {
- return null;
- }
- if (srcDateTime == null || "".equals(srcDateTime)) {
- return null;
- }
- if (dstFormater == null || "".equals(dstFormater)) {
- return null;
- }
- if (dstTimeZoneId == null || "".equals(dstTimeZoneId)) {
- return null;
- }
- SimpleDateFormat sdf = new SimpleDateFormat(srcFormater);
- int diffTime = getDiffTimeZoneRawOffset(dstTimeZoneId);
- Date d = sdf.parse(srcDateTime);
- long nowTime = d.getTime();
- long newNowTime = nowTime - diffTime;
- d = new Date(newNowTime);
- return dateToString(dstFormater, d);
- }
-
- /**
- * 获取系统当前默认时区与UTC的时间差.(单位:毫秒)
- *
- * @return 系统当前默认时区与UTC的时间差.(单 = 毫秒)
- */
- public static int getDefaultTimeZoneRawOffset() {
- return TimeZone.getDefault().getRawOffset();
- }
-
- /**
- *
- * Description: 返回UTC与指定时区的时间差
- *
- *
- * @param timeZoneId 时区ID
- * @return 时差
- */
- public static String getUtcTimeZoneRawOffset(String timeZoneId) {
- return new SimpleDateFormat("HH:mm").format(getTimeZoneRawOffset(timeZoneId));
- }
-
- /**
- * 获取指定时区与UTC的时间差.(单位:毫秒)
- *
- * @param timeZoneId 时区Id
- * @return 指定时区与UTC的时间差.(单位 = 毫秒)
- */
- public static int getTimeZoneRawOffset(String timeZoneId) {
- return TimeZone.getTimeZone(timeZoneId).getRawOffset();
- }
-
- /**
- * 获取系统当前默认时区与指定时区的时间差.(单位:毫秒)
- *
- * @param timeZoneId 时区Id
- * @return 系统当前默认时区与指定时区的时间差.(单位 = 毫秒)
- */
- private static int getDiffTimeZoneRawOffset(String timeZoneId) {
- return TimeZone.getDefault().getRawOffset() - TimeZone.getTimeZone(timeZoneId).getRawOffset();
- }
-
- /**
- * 将日期时间字符串根据转换为指定时区的日期时间.
- *
- * @param srcDateTime 待转化的日期时间.
- * @param dstTimeZoneId 目标的时区编号.
- * @return 转化后的日期时间.
- * @throws ParseException 异常
- */
- public static String stringToTimezoneDefault(String srcDateTime, String dstTimeZoneId) throws ParseException {
- return stringToTimezone("yyyy-MM-dd HH:mm:ss", srcDateTime, "yyyy-MM-dd HH:mm:ss", dstTimeZoneId);
- }
-
-}
+/**
+ * DateUtil.java
+ * Created at 2017-06-02
+ * Created by Administrator
+ * Copyright (C) 2016 itkk.org, All rights reserved.
+ */
+package org.itkk.udf.core.utils;
+
+import java.text.ParseException;
+import java.text.SimpleDateFormat;
+import java.util.*;
+
+/**
+ *
+ * ClassName: DateUtil
+ *
+ *
+ * Description: 日期工具类
+ *
+ *
+ * Author: Administrator
+ *
+ *
+ * Date: 2016年3月23日
+ *
+ */
+public class DateUtil {
+
+ /**
+ *
+ * Description: 构造函数
+ *
+ */
+ private DateUtil() {
+ }
+
+ /**
+ * dayStart
+ *
+ * @param date date
+ * @return Date
+ */
+ public static Date dayStart(Date date) {
+ Calendar calendar = new GregorianCalendar();
+ calendar.setTime(date);
+ calendar.set(Calendar.HOUR, 0);
+ calendar.set(Calendar.MINUTE, 0);
+ calendar.set(Calendar.SECOND, 0);
+ calendar.set(Calendar.MILLISECOND, 0);
+ return calendar.getTime();
+ }
+
+ /**
+ * dayEnd
+ *
+ * @param date date
+ * @return Date
+ */
+ public static Date dayEnd(Date date) {
+ final int num23 = 23;
+ final int num59 = 59;
+ final int num999 = 999;
+ Calendar calendar = new GregorianCalendar();
+ calendar.setTime(date);
+ calendar.set(Calendar.HOUR, num23);
+ calendar.set(Calendar.MINUTE, num59);
+ calendar.set(Calendar.SECOND, num59);
+ calendar.set(Calendar.MILLISECOND, num999);
+ return calendar.getTime();
+ }
+
+ /**
+ * 对日期(时间)中的日进行加减计算.
+ * 例子:
+ * 如果Date类型的d为 2005年8月20日,那么
+ * calculateByDate(d,-10)的值为2005年8月10日
+ * 而calculateByDate(d,+10)的值为2005年8月30日
+ *
+ * @param d 日期(时间).
+ * @param amount 加减计算的幅度.+n=加n天;-n=减n天.
+ * @return 计算后的日期(时间).
+ */
+ public static Date calculateByDate(Date d, int amount) {
+ return calculate(d, GregorianCalendar.DATE, amount);
+ }
+
+ /**
+ *
+ * Description: 对日期(分钟)中的日进行加减计算.
+ *
+ *
+ * @param d 日期(时间).
+ * @param amount 加减计算的幅度
+ * @return 计算后的日期(时间)
+ */
+ public static Date calculateByMinute(Date d, int amount) {
+ return calculate(d, GregorianCalendar.MINUTE, amount);
+ }
+
+ /**
+ *
+ * Description: 对日期(年)中的日进行加减计算.
+ *
+ *
+ * @param d 日期(时间).
+ * @param amount 加减计算的幅度
+ * @return 计算后的日期(时间)
+ */
+ public static Date calculateByYear(Date d, int amount) {
+ return calculate(d, GregorianCalendar.YEAR, amount);
+ }
+
+ /**
+ * 对日期(时间)中由field参数指定的日期成员进行加减计算.
+ * 例子:
+ * 如果Date类型的d为 2005年8月20日,那么
+ * calculate(d,GregorianCalendar.YEAR,-10)的值为1995年8月20日
+ * 而calculate(d,GregorianCalendar.YEAR,+10)的值为2015年8月20日
+ *
+ * @param d 日期(时间).
+ * @param field 日期成员.
+ * 日期成员主要有:
+ * 年:GregorianCalendar.YEAR
+ * 月:GregorianCalendar.MONTH
+ * 日:GregorianCalendar.DATE
+ * 时:GregorianCalendar.HOUR
+ * 分:GregorianCalendar.MINUTE
+ * 秒:GregorianCalendar.SECOND
+ * 毫秒:GregorianCalendar.MILLISECOND
+ * @param amount 加减计算的幅度.+n=加n个由参数field指定的日期成员值;-n=减n个由参数field代表的日期成员值.
+ * @return 计算后的日期(时间).
+ */
+ private static Date calculate(Date d, int field, int amount) {
+ if (d == null) {
+ return null;
+ }
+ GregorianCalendar g = new GregorianCalendar();
+ g.setGregorianChange(d);
+ g.add(field, amount);
+ return g.getTime();
+ }
+
+ /**
+ * 日期(时间)转化为字符串.
+ *
+ * @param formater 日期或时间的格式.
+ * @param aDate java.util.Date类的实例.
+ * @return 日期转化后的字符串.
+ */
+ public static String dateToString(String formater, Date aDate) {
+ if (formater == null || "".equals(formater)) {
+ return null;
+ }
+ if (aDate == null) {
+ return null;
+ }
+ return (new SimpleDateFormat(formater)).format(aDate);
+ }
+
+ /**
+ * 当前日期(时间)转化为字符串.
+ *
+ * @param formater 日期或时间的格式.
+ * @return 日期转化后的字符串.
+ */
+ public static String dateToString(String formater) {
+ return dateToString(formater, new Date());
+ }
+
+ /**
+ * 获取当前日期对应的星期数.
+ * 1=星期天,2=星期一,3=星期二,4=星期三,5=星期四,6=星期五,7=星期六
+ *
+ * @return 当前日期对应的星期数
+ */
+ public static int dayOfWeek() {
+ GregorianCalendar g = new GregorianCalendar();
+ return g.get(java.util.Calendar.DAY_OF_WEEK);
+ }
+
+ /**
+ * 获取所有的时区编号.
+ * 排序规则:按照ASCII字符的正序进行排序.
+ * 排序时候忽略字符大小写.
+ *
+ * @return 所有的时区编号(时区编号已经按照字符[忽略大小写]排序).
+ */
+ public static List fecthAllTimeZoneIds() {
+ List v = new ArrayList<>();
+ String[] ids = TimeZone.getAvailableIDs();
+ Arrays.stream(ids).forEach(id -> { //NOSONAR
+ v.add(id);
+ });
+ Collections.sort(v, String.CASE_INSENSITIVE_ORDER);
+ return v;
+ }
+
+ /**
+ * 将日期时间字符串根据转换为指定时区的日期时间.
+ *
+ * @param srcFormater 待转化的日期时间的格式.
+ * @param srcDateTime 待转化的日期时间.
+ * @param dstFormater 目标的日期时间的格式.
+ * @param dstTimeZoneId 目标的时区编号.
+ * @return 转化后的日期时间.
+ * @throws ParseException 异常
+ */
+ public static String stringToTimezone(String srcFormater, String srcDateTime, String dstFormater, String dstTimeZoneId) throws ParseException { //NOSONAR
+ if (srcFormater == null || "".equals(srcFormater)) {
+ return null;
+ }
+ if (srcDateTime == null || "".equals(srcDateTime)) {
+ return null;
+ }
+ if (dstFormater == null || "".equals(dstFormater)) {
+ return null;
+ }
+ if (dstTimeZoneId == null || "".equals(dstTimeZoneId)) {
+ return null;
+ }
+ SimpleDateFormat sdf = new SimpleDateFormat(srcFormater);
+ int diffTime = getDiffTimeZoneRawOffset(dstTimeZoneId);
+ Date d = sdf.parse(srcDateTime);
+ long nowTime = d.getTime();
+ long newNowTime = nowTime - diffTime;
+ d = new Date(newNowTime);
+ return dateToString(dstFormater, d);
+ }
+
+ /**
+ * 获取系统当前默认时区与UTC的时间差.(单位:毫秒)
+ *
+ * @return 系统当前默认时区与UTC的时间差.(单 = 毫秒)
+ */
+ public static int getDefaultTimeZoneRawOffset() {
+ return TimeZone.getDefault().getRawOffset();
+ }
+
+ /**
+ *
+ * Description: 返回UTC与指定时区的时间差
+ *
+ *
+ * @param timeZoneId 时区ID
+ * @return 时差
+ */
+ public static String getUtcTimeZoneRawOffset(String timeZoneId) {
+ return new SimpleDateFormat("HH:mm").format(getTimeZoneRawOffset(timeZoneId));
+ }
+
+ /**
+ * 获取指定时区与UTC的时间差.(单位:毫秒)
+ *
+ * @param timeZoneId 时区Id
+ * @return 指定时区与UTC的时间差.(单位 = 毫秒)
+ */
+ public static int getTimeZoneRawOffset(String timeZoneId) {
+ return TimeZone.getTimeZone(timeZoneId).getRawOffset();
+ }
+
+ /**
+ * 获取系统当前默认时区与指定时区的时间差.(单位:毫秒)
+ *
+ * @param timeZoneId 时区Id
+ * @return 系统当前默认时区与指定时区的时间差.(单位 = 毫秒)
+ */
+ private static int getDiffTimeZoneRawOffset(String timeZoneId) {
+ return TimeZone.getDefault().getRawOffset() - TimeZone.getTimeZone(timeZoneId).getRawOffset();
+ }
+
+ /**
+ * 将日期时间字符串根据转换为指定时区的日期时间.
+ *
+ * @param srcDateTime 待转化的日期时间.
+ * @param dstTimeZoneId 目标的时区编号.
+ * @return 转化后的日期时间.
+ * @throws ParseException 异常
+ */
+ public static String stringToTimezoneDefault(String srcDateTime, String dstTimeZoneId) throws ParseException {
+ return stringToTimezone("yyyy-MM-dd HH:mm:ss", srcDateTime, "yyyy-MM-dd HH:mm:ss", dstTimeZoneId);
+ }
+
+}
diff --git a/udf-starter-core/src/main/java/org/itkk/udf/core/utils/IdUtil.java b/udf-stater/udf-starter-core/src/main/java/org/itkk/udf/core/utils/IdUtil.java
similarity index 100%
rename from udf-starter-core/src/main/java/org/itkk/udf/core/utils/IdUtil.java
rename to udf-stater/udf-starter-core/src/main/java/org/itkk/udf/core/utils/IdUtil.java
diff --git a/udf-starter-core/src/main/java/org/itkk/udf/core/utils/ZipUtil.java b/udf-stater/udf-starter-core/src/main/java/org/itkk/udf/core/utils/ZipUtil.java
similarity index 100%
rename from udf-starter-core/src/main/java/org/itkk/udf/core/utils/ZipUtil.java
rename to udf-stater/udf-starter-core/src/main/java/org/itkk/udf/core/utils/ZipUtil.java
diff --git a/udf-starter-core/src/main/java/org/itkk/udf/core/utils/excel/ExportExcel.java b/udf-stater/udf-starter-core/src/main/java/org/itkk/udf/core/utils/excel/ExportExcel.java
similarity index 100%
rename from udf-starter-core/src/main/java/org/itkk/udf/core/utils/excel/ExportExcel.java
rename to udf-stater/udf-starter-core/src/main/java/org/itkk/udf/core/utils/excel/ExportExcel.java
diff --git a/udf-starter-core/src/main/java/org/itkk/udf/core/utils/excel/ExportExcelHeaderMateData.java b/udf-stater/udf-starter-core/src/main/java/org/itkk/udf/core/utils/excel/ExportExcelHeaderMateData.java
similarity index 100%
rename from udf-starter-core/src/main/java/org/itkk/udf/core/utils/excel/ExportExcelHeaderMateData.java
rename to udf-stater/udf-starter-core/src/main/java/org/itkk/udf/core/utils/excel/ExportExcelHeaderMateData.java
diff --git a/udf-starter-core/src/main/java/org/itkk/udf/core/utils/excel/ImportExcel.java b/udf-stater/udf-starter-core/src/main/java/org/itkk/udf/core/utils/excel/ImportExcel.java
similarity index 100%
rename from udf-starter-core/src/main/java/org/itkk/udf/core/utils/excel/ImportExcel.java
rename to udf-stater/udf-starter-core/src/main/java/org/itkk/udf/core/utils/excel/ImportExcel.java
diff --git a/udf-starter-core/src/main/java/org/itkk/udf/core/xss/XssFilter.java b/udf-stater/udf-starter-core/src/main/java/org/itkk/udf/core/xss/XssFilter.java
similarity index 96%
rename from udf-starter-core/src/main/java/org/itkk/udf/core/xss/XssFilter.java
rename to udf-stater/udf-starter-core/src/main/java/org/itkk/udf/core/xss/XssFilter.java
index 5016f40..a43c1c6 100644
--- a/udf-starter-core/src/main/java/org/itkk/udf/core/xss/XssFilter.java
+++ b/udf-stater/udf-starter-core/src/main/java/org/itkk/udf/core/xss/XssFilter.java
@@ -1,43 +1,43 @@
-/**
- * XssFilter.java
- * Created at 2016-09-19
- * Created by wangkang
- * Copyright (C) 2016 itkk.org, All rights reserved.
- */
-package org.itkk.udf.core.xss;
-
-import lombok.extern.slf4j.Slf4j;
-
-import javax.servlet.*;
-import javax.servlet.annotation.WebFilter;
-import javax.servlet.http.HttpServletRequest;
-import java.io.IOException;
-
-/**
- * 描述 : 跨站请求防范
- *
- * @author wangkang
- */
-@WebFilter(filterName = "xssFilter", urlPatterns = "/*", asyncSupported = true)
-@Slf4j
-public class XssFilter implements Filter {
-
- @Override
- public void init(FilterConfig filterConfig) {
- log.debug("(XssFilter) initialize");
- }
-
- @Override
- public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain)
- throws IOException, ServletException {
- XssHttpServletRequestWrapper xssRequest =
- new XssHttpServletRequestWrapper((HttpServletRequest) request);
- chain.doFilter(xssRequest, response);
- }
-
- @Override
- public void destroy() {
- log.debug("(XssFilter) destroy");
- }
-
-}
+/**
+ * XssFilter.java
+ * Created at 2016-09-19
+ * Created by wangkang
+ * Copyright (C) 2016 itkk.org, All rights reserved.
+ */
+package org.itkk.udf.core.xss;
+
+import lombok.extern.slf4j.Slf4j;
+
+import javax.servlet.*;
+import javax.servlet.annotation.WebFilter;
+import javax.servlet.http.HttpServletRequest;
+import java.io.IOException;
+
+/**
+ * 描述 : 跨站请求防范
+ *
+ * @author wangkang
+ */
+@WebFilter(filterName = "xssFilter", urlPatterns = "/*", asyncSupported = true)
+@Slf4j
+public class XssFilter implements Filter {
+
+ @Override
+ public void init(FilterConfig filterConfig) {
+ log.debug("(XssFilter) initialize");
+ }
+
+ @Override
+ public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain)
+ throws IOException, ServletException {
+ XssHttpServletRequestWrapper xssRequest =
+ new XssHttpServletRequestWrapper((HttpServletRequest) request);
+ chain.doFilter(xssRequest, response);
+ }
+
+ @Override
+ public void destroy() {
+ log.debug("(XssFilter) destroy");
+ }
+
+}
diff --git a/udf-starter-core/src/main/java/org/itkk/udf/core/xss/XssHttpServletRequestWrapper.java b/udf-stater/udf-starter-core/src/main/java/org/itkk/udf/core/xss/XssHttpServletRequestWrapper.java
similarity index 96%
rename from udf-starter-core/src/main/java/org/itkk/udf/core/xss/XssHttpServletRequestWrapper.java
rename to udf-stater/udf-starter-core/src/main/java/org/itkk/udf/core/xss/XssHttpServletRequestWrapper.java
index 4962244..256b50d 100644
--- a/udf-starter-core/src/main/java/org/itkk/udf/core/xss/XssHttpServletRequestWrapper.java
+++ b/udf-stater/udf-starter-core/src/main/java/org/itkk/udf/core/xss/XssHttpServletRequestWrapper.java
@@ -1,56 +1,56 @@
-/**
- * XssHttpServletRequestWrapper.java
- * Created at 2016-09-19
- * Created by wangkang
- * Copyright (C) 2016 itkk.org, All rights reserved.
- */
-package org.itkk.udf.core.xss;
-
-import org.springframework.web.util.HtmlUtils;
-
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletRequestWrapper;
-
-/**
- * 描述 : 跨站请求防范
- *
- * @author wangkang
- */
-public class XssHttpServletRequestWrapper extends HttpServletRequestWrapper {
-
- /**
- * 描述 : 构造函数
- *
- * @param request 请求对象
- */
- public XssHttpServletRequestWrapper(HttpServletRequest request) {
- super(request);
- }
-
- @Override
- public String getHeader(String name) {
- String value = super.getHeader(name);
- return HtmlUtils.htmlEscape(value);
- }
-
- @Override
- public String getParameter(String name) {
- String value = super.getParameter(name);
- return HtmlUtils.htmlEscape(value);
- }
-
- @Override
- public String[] getParameterValues(String name) {
- String[] values = super.getParameterValues(name);
- if (values != null) {
- int length = values.length;
- String[] escapseValues = new String[length];
- for (int i = 0; i < length; i++) {
- escapseValues[i] = HtmlUtils.htmlEscape(values[i]);
- }
- return escapseValues;
- }
- return super.getParameterValues(name);
- }
-
-}
+/**
+ * XssHttpServletRequestWrapper.java
+ * Created at 2016-09-19
+ * Created by wangkang
+ * Copyright (C) 2016 itkk.org, All rights reserved.
+ */
+package org.itkk.udf.core.xss;
+
+import org.springframework.web.util.HtmlUtils;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletRequestWrapper;
+
+/**
+ * 描述 : 跨站请求防范
+ *
+ * @author wangkang
+ */
+public class XssHttpServletRequestWrapper extends HttpServletRequestWrapper {
+
+ /**
+ * 描述 : 构造函数
+ *
+ * @param request 请求对象
+ */
+ public XssHttpServletRequestWrapper(HttpServletRequest request) {
+ super(request);
+ }
+
+ @Override
+ public String getHeader(String name) {
+ String value = super.getHeader(name);
+ return HtmlUtils.htmlEscape(value);
+ }
+
+ @Override
+ public String getParameter(String name) {
+ String value = super.getParameter(name);
+ return HtmlUtils.htmlEscape(value);
+ }
+
+ @Override
+ public String[] getParameterValues(String name) {
+ String[] values = super.getParameterValues(name);
+ if (values != null) {
+ int length = values.length;
+ String[] escapseValues = new String[length];
+ for (int i = 0; i < length; i++) {
+ escapseValues[i] = HtmlUtils.htmlEscape(values[i]);
+ }
+ return escapseValues;
+ }
+ return super.getParameterValues(name);
+ }
+
+}
diff --git a/udf-starter-cors/pom.xml b/udf-stater/udf-starter-cors/pom.xml
similarity index 100%
rename from udf-starter-cors/pom.xml
rename to udf-stater/udf-starter-cors/pom.xml
diff --git a/udf-starter-cors/src/main/java/org/itkk/udf/cors/CorsConfig.java b/udf-stater/udf-starter-cors/src/main/java/org/itkk/udf/cors/CorsConfig.java
similarity index 96%
rename from udf-starter-cors/src/main/java/org/itkk/udf/cors/CorsConfig.java
rename to udf-stater/udf-starter-cors/src/main/java/org/itkk/udf/cors/CorsConfig.java
index 4de1894..1c306f1 100644
--- a/udf-starter-cors/src/main/java/org/itkk/udf/cors/CorsConfig.java
+++ b/udf-stater/udf-starter-cors/src/main/java/org/itkk/udf/cors/CorsConfig.java
@@ -1,110 +1,110 @@
-/**
- * CorsConfig.java
- * Created at 2017-04-25
- * Created by Administrator
- * Copyright (C) 2016 itkk.org, All rights reserved.
- */
-package org.itkk.udf.cors;
-
-import lombok.Data;
-import org.apache.commons.lang3.StringUtils;
-import org.springframework.boot.context.properties.ConfigurationProperties;
-import org.springframework.context.annotation.Bean;
-import org.springframework.context.annotation.Configuration;
-import org.springframework.util.CollectionUtils;
-import org.springframework.validation.annotation.Validated;
-import org.springframework.web.servlet.config.annotation.CorsRegistration;
-import org.springframework.web.servlet.config.annotation.CorsRegistry;
-import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
-import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter;
-
-import javax.validation.constraints.NotNull;
-import java.util.Map;
-
-/**
- * 描述 : CorsConfig ( another way @see EndpointCorsProperties.java )
- *
- * @author Administrator
- */
-@Configuration
-@ConfigurationProperties(prefix = "org.itkk.cors")
-@Validated
-@Data
-public class CorsConfig {
-
- /**
- * 描述 : 跨域信息
- */
- @NotNull
- private Map config;
-
- /**
- * 描述 : corsConfigurer
- *
- * @return WebMvcConfigurer
- */
- @Bean
- public WebMvcConfigurer corsConfigurer() { //NOSONAR
- return new WebMvcConfigurerAdapter() { //NOSONAR
- @Override
- public void addCorsMappings(CorsRegistry registry) {
- //扫描地址
- if (!CollectionUtils.isEmpty(config)) {
- config.forEach((key, item) -> {
- CorsRegistration cr = registry.addMapping(item.getMapping());
- if (item.getAllowCredentials() != null) {
- cr.allowCredentials(item.getAllowCredentials());
- }
- if (StringUtils.isNotBlank(item.getAllowedOrigins())) {
- String[] allowedOriginArray = item.getAllowedOrigins().split(",");
- cr.allowedOrigins(allowedOriginArray);
- }
- if (StringUtils.isNotBlank(item.getAllowedMethods())) {
- String[] allowedMethodArray = item.getAllowedMethods().split(",");
- cr.allowedMethods(allowedMethodArray);
- }
- if (StringUtils.isNotBlank(item.getAllowedHeaders())) {
- String[] allowedHeaderArray = item.getAllowedHeaders().split(",");
- cr.allowedHeaders(allowedHeaderArray);
- }
- });
- }
- }
- };
- }
-
- /**
- * 描述 : 跨域信息
- *
- * @author Administrator
- */
- @Data
- public static class CorsRegistrationConfig {
- /**
- * 描述 : 扫描地址
- */
- private String mapping = "/**";
-
- /**
- * 描述 : 允许cookie
- */
- private Boolean allowCredentials = true;
-
- /**
- * 描述 : 允许的域
- */
- private String allowedOrigins = "*";
-
- /**
- * 描述 : 允许的方法
- */
- private String allowedMethods = "POST,GET,DELETE,PUT";
-
- /**
- * 描述 : 允许的头信息
- */
- private String allowedHeaders = "*";
-
- }
-
-}
+/**
+ * CorsConfig.java
+ * Created at 2017-04-25
+ * Created by Administrator
+ * Copyright (C) 2016 itkk.org, All rights reserved.
+ */
+package org.itkk.udf.cors;
+
+import lombok.Data;
+import org.apache.commons.lang3.StringUtils;
+import org.springframework.boot.context.properties.ConfigurationProperties;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+import org.springframework.util.CollectionUtils;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.web.servlet.config.annotation.CorsRegistration;
+import org.springframework.web.servlet.config.annotation.CorsRegistry;
+import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
+import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter;
+
+import javax.validation.constraints.NotNull;
+import java.util.Map;
+
+/**
+ * 描述 : CorsConfig ( another way @see EndpointCorsProperties.java )
+ *
+ * @author Administrator
+ */
+@Configuration
+@ConfigurationProperties(prefix = "org.itkk.cors")
+@Validated
+@Data
+public class CorsConfig {
+
+ /**
+ * 描述 : 跨域信息
+ */
+ @NotNull
+ private Map config;
+
+ /**
+ * 描述 : corsConfigurer
+ *
+ * @return WebMvcConfigurer
+ */
+ @Bean
+ public WebMvcConfigurer corsConfigurer() { //NOSONAR
+ return new WebMvcConfigurerAdapter() { //NOSONAR
+ @Override
+ public void addCorsMappings(CorsRegistry registry) {
+ //扫描地址
+ if (!CollectionUtils.isEmpty(config)) {
+ config.forEach((key, item) -> {
+ CorsRegistration cr = registry.addMapping(item.getMapping());
+ if (item.getAllowCredentials() != null) {
+ cr.allowCredentials(item.getAllowCredentials());
+ }
+ if (StringUtils.isNotBlank(item.getAllowedOrigins())) {
+ String[] allowedOriginArray = item.getAllowedOrigins().split(",");
+ cr.allowedOrigins(allowedOriginArray);
+ }
+ if (StringUtils.isNotBlank(item.getAllowedMethods())) {
+ String[] allowedMethodArray = item.getAllowedMethods().split(",");
+ cr.allowedMethods(allowedMethodArray);
+ }
+ if (StringUtils.isNotBlank(item.getAllowedHeaders())) {
+ String[] allowedHeaderArray = item.getAllowedHeaders().split(",");
+ cr.allowedHeaders(allowedHeaderArray);
+ }
+ });
+ }
+ }
+ };
+ }
+
+ /**
+ * 描述 : 跨域信息
+ *
+ * @author Administrator
+ */
+ @Data
+ public static class CorsRegistrationConfig {
+ /**
+ * 描述 : 扫描地址
+ */
+ private String mapping = "/**";
+
+ /**
+ * 描述 : 允许cookie
+ */
+ private Boolean allowCredentials = true;
+
+ /**
+ * 描述 : 允许的域
+ */
+ private String allowedOrigins = "*";
+
+ /**
+ * 描述 : 允许的方法
+ */
+ private String allowedMethods = "POST,GET,DELETE,PUT";
+
+ /**
+ * 描述 : 允许的头信息
+ */
+ private String allowedHeaders = "*";
+
+ }
+
+}
diff --git a/udf-starter-dal-mybatis/pom.xml b/udf-stater/udf-starter-dal-mybatis/pom.xml
similarity index 100%
rename from udf-starter-dal-mybatis/pom.xml
rename to udf-stater/udf-starter-dal-mybatis/pom.xml
diff --git a/udf-starter-dal-mybatis/src/main/java/org/itkk/udf/dal/mybatis/MyBatisConfig.java b/udf-stater/udf-starter-dal-mybatis/src/main/java/org/itkk/udf/dal/mybatis/MyBatisConfig.java
similarity index 100%
rename from udf-starter-dal-mybatis/src/main/java/org/itkk/udf/dal/mybatis/MyBatisConfig.java
rename to udf-stater/udf-starter-dal-mybatis/src/main/java/org/itkk/udf/dal/mybatis/MyBatisConfig.java
diff --git a/udf-starter-dal-mybatis/src/main/java/org/itkk/udf/dal/mybatis/MyBatisProperties.java b/udf-stater/udf-starter-dal-mybatis/src/main/java/org/itkk/udf/dal/mybatis/MyBatisProperties.java
similarity index 100%
rename from udf-starter-dal-mybatis/src/main/java/org/itkk/udf/dal/mybatis/MyBatisProperties.java
rename to udf-stater/udf-starter-dal-mybatis/src/main/java/org/itkk/udf/dal/mybatis/MyBatisProperties.java
diff --git a/udf-starter-dal-mybatis/src/main/java/org/itkk/udf/dal/mybatis/plugin/InterceptorUtil.java b/udf-stater/udf-starter-dal-mybatis/src/main/java/org/itkk/udf/dal/mybatis/plugin/InterceptorUtil.java
similarity index 100%
rename from udf-starter-dal-mybatis/src/main/java/org/itkk/udf/dal/mybatis/plugin/InterceptorUtil.java
rename to udf-stater/udf-starter-dal-mybatis/src/main/java/org/itkk/udf/dal/mybatis/plugin/InterceptorUtil.java
diff --git a/udf-starter-dal-mybatis/src/main/java/org/itkk/udf/dal/mybatis/plugin/pagequery/BoundSqlSqlSource.java b/udf-stater/udf-starter-dal-mybatis/src/main/java/org/itkk/udf/dal/mybatis/plugin/pagequery/BoundSqlSqlSource.java
similarity index 100%
rename from udf-starter-dal-mybatis/src/main/java/org/itkk/udf/dal/mybatis/plugin/pagequery/BoundSqlSqlSource.java
rename to udf-stater/udf-starter-dal-mybatis/src/main/java/org/itkk/udf/dal/mybatis/plugin/pagequery/BoundSqlSqlSource.java
diff --git a/udf-starter-dal-mybatis/src/main/java/org/itkk/udf/dal/mybatis/plugin/pagequery/Page.java b/udf-stater/udf-starter-dal-mybatis/src/main/java/org/itkk/udf/dal/mybatis/plugin/pagequery/Page.java
similarity index 100%
rename from udf-starter-dal-mybatis/src/main/java/org/itkk/udf/dal/mybatis/plugin/pagequery/Page.java
rename to udf-stater/udf-starter-dal-mybatis/src/main/java/org/itkk/udf/dal/mybatis/plugin/pagequery/Page.java
diff --git a/udf-starter-dal-mybatis/src/main/java/org/itkk/udf/dal/mybatis/plugin/pagequery/PageInterceptor.java b/udf-stater/udf-starter-dal-mybatis/src/main/java/org/itkk/udf/dal/mybatis/plugin/pagequery/PageInterceptor.java
similarity index 100%
rename from udf-starter-dal-mybatis/src/main/java/org/itkk/udf/dal/mybatis/plugin/pagequery/PageInterceptor.java
rename to udf-stater/udf-starter-dal-mybatis/src/main/java/org/itkk/udf/dal/mybatis/plugin/pagequery/PageInterceptor.java
diff --git a/udf-starter-dal-mybatis/src/main/java/org/itkk/udf/dal/mybatis/plugin/pagequery/PageResult.java b/udf-stater/udf-starter-dal-mybatis/src/main/java/org/itkk/udf/dal/mybatis/plugin/pagequery/PageResult.java
similarity index 100%
rename from udf-starter-dal-mybatis/src/main/java/org/itkk/udf/dal/mybatis/plugin/pagequery/PageResult.java
rename to udf-stater/udf-starter-dal-mybatis/src/main/java/org/itkk/udf/dal/mybatis/plugin/pagequery/PageResult.java
diff --git a/udf-starter-dal-mybatis/src/main/java/org/itkk/udf/dal/mybatis/plugin/pagequery/parser/SqlParser.java b/udf-stater/udf-starter-dal-mybatis/src/main/java/org/itkk/udf/dal/mybatis/plugin/pagequery/parser/SqlParser.java
similarity index 100%
rename from udf-starter-dal-mybatis/src/main/java/org/itkk/udf/dal/mybatis/plugin/pagequery/parser/SqlParser.java
rename to udf-stater/udf-starter-dal-mybatis/src/main/java/org/itkk/udf/dal/mybatis/plugin/pagequery/parser/SqlParser.java
diff --git a/udf-starter-dal-mybatis/src/main/java/org/itkk/udf/dal/mybatis/plugin/tablesplit/BaseTableSplitInterceptor.java b/udf-stater/udf-starter-dal-mybatis/src/main/java/org/itkk/udf/dal/mybatis/plugin/tablesplit/BaseTableSplitInterceptor.java
similarity index 100%
rename from udf-starter-dal-mybatis/src/main/java/org/itkk/udf/dal/mybatis/plugin/tablesplit/BaseTableSplitInterceptor.java
rename to udf-stater/udf-starter-dal-mybatis/src/main/java/org/itkk/udf/dal/mybatis/plugin/tablesplit/BaseTableSplitInterceptor.java
diff --git a/udf-starter-dal-mybatis/src/main/java/org/itkk/udf/dal/mybatis/plugin/tablesplit/DefaultStrategy.java b/udf-stater/udf-starter-dal-mybatis/src/main/java/org/itkk/udf/dal/mybatis/plugin/tablesplit/DefaultStrategy.java
similarity index 100%
rename from udf-starter-dal-mybatis/src/main/java/org/itkk/udf/dal/mybatis/plugin/tablesplit/DefaultStrategy.java
rename to udf-stater/udf-starter-dal-mybatis/src/main/java/org/itkk/udf/dal/mybatis/plugin/tablesplit/DefaultStrategy.java
diff --git a/udf-starter-dal-mybatis/src/main/java/org/itkk/udf/dal/mybatis/plugin/tablesplit/IStrategy.java b/udf-stater/udf-starter-dal-mybatis/src/main/java/org/itkk/udf/dal/mybatis/plugin/tablesplit/IStrategy.java
similarity index 100%
rename from udf-starter-dal-mybatis/src/main/java/org/itkk/udf/dal/mybatis/plugin/tablesplit/IStrategy.java
rename to udf-stater/udf-starter-dal-mybatis/src/main/java/org/itkk/udf/dal/mybatis/plugin/tablesplit/IStrategy.java
diff --git a/udf-starter-dal-mybatis/src/main/java/org/itkk/udf/dal/mybatis/plugin/tablesplit/QueryTableSplitInterceptor.java b/udf-stater/udf-starter-dal-mybatis/src/main/java/org/itkk/udf/dal/mybatis/plugin/tablesplit/QueryTableSplitInterceptor.java
similarity index 100%
rename from udf-starter-dal-mybatis/src/main/java/org/itkk/udf/dal/mybatis/plugin/tablesplit/QueryTableSplitInterceptor.java
rename to udf-stater/udf-starter-dal-mybatis/src/main/java/org/itkk/udf/dal/mybatis/plugin/tablesplit/QueryTableSplitInterceptor.java
diff --git a/udf-starter-dal-mybatis/src/main/java/org/itkk/udf/dal/mybatis/plugin/tablesplit/TableSplitContextHolder.java b/udf-stater/udf-starter-dal-mybatis/src/main/java/org/itkk/udf/dal/mybatis/plugin/tablesplit/TableSplitContextHolder.java
similarity index 100%
rename from udf-starter-dal-mybatis/src/main/java/org/itkk/udf/dal/mybatis/plugin/tablesplit/TableSplitContextHolder.java
rename to udf-stater/udf-starter-dal-mybatis/src/main/java/org/itkk/udf/dal/mybatis/plugin/tablesplit/TableSplitContextHolder.java
diff --git a/udf-starter-dal-mybatis/src/main/java/org/itkk/udf/dal/mybatis/plugin/tablesplit/TableSplitThreadLocal.java b/udf-stater/udf-starter-dal-mybatis/src/main/java/org/itkk/udf/dal/mybatis/plugin/tablesplit/TableSplitThreadLocal.java
similarity index 100%
rename from udf-starter-dal-mybatis/src/main/java/org/itkk/udf/dal/mybatis/plugin/tablesplit/TableSplitThreadLocal.java
rename to udf-stater/udf-starter-dal-mybatis/src/main/java/org/itkk/udf/dal/mybatis/plugin/tablesplit/TableSplitThreadLocal.java
diff --git a/udf-starter-dal-mybatis/src/main/java/org/itkk/udf/dal/mybatis/plugin/tablesplit/UpdateTableSplitInterceptor.java b/udf-stater/udf-starter-dal-mybatis/src/main/java/org/itkk/udf/dal/mybatis/plugin/tablesplit/UpdateTableSplitInterceptor.java
similarity index 100%
rename from udf-starter-dal-mybatis/src/main/java/org/itkk/udf/dal/mybatis/plugin/tablesplit/UpdateTableSplitInterceptor.java
rename to udf-stater/udf-starter-dal-mybatis/src/main/java/org/itkk/udf/dal/mybatis/plugin/tablesplit/UpdateTableSplitInterceptor.java
diff --git a/udf-starter-datasource-dynamic/pom.xml b/udf-stater/udf-starter-datasource-dynamic/pom.xml
similarity index 100%
rename from udf-starter-datasource-dynamic/pom.xml
rename to udf-stater/udf-starter-datasource-dynamic/pom.xml
diff --git a/udf-starter-datasource-dynamic/src/main/java/org/itkk/udf/datasource/dynamic/DataSourceThreadLocal.java b/udf-stater/udf-starter-datasource-dynamic/src/main/java/org/itkk/udf/datasource/dynamic/DataSourceThreadLocal.java
similarity index 100%
rename from udf-starter-datasource-dynamic/src/main/java/org/itkk/udf/datasource/dynamic/DataSourceThreadLocal.java
rename to udf-stater/udf-starter-datasource-dynamic/src/main/java/org/itkk/udf/datasource/dynamic/DataSourceThreadLocal.java
diff --git a/udf-starter-datasource-dynamic/src/main/java/org/itkk/udf/datasource/dynamic/DbContextHolder.java b/udf-stater/udf-starter-datasource-dynamic/src/main/java/org/itkk/udf/datasource/dynamic/DbContextHolder.java
similarity index 100%
rename from udf-starter-datasource-dynamic/src/main/java/org/itkk/udf/datasource/dynamic/DbContextHolder.java
rename to udf-stater/udf-starter-datasource-dynamic/src/main/java/org/itkk/udf/datasource/dynamic/DbContextHolder.java
diff --git a/udf-starter-datasource-dynamic/src/main/java/org/itkk/udf/datasource/dynamic/DynamicDataSource.java b/udf-stater/udf-starter-datasource-dynamic/src/main/java/org/itkk/udf/datasource/dynamic/DynamicDataSource.java
similarity index 100%
rename from udf-starter-datasource-dynamic/src/main/java/org/itkk/udf/datasource/dynamic/DynamicDataSource.java
rename to udf-stater/udf-starter-datasource-dynamic/src/main/java/org/itkk/udf/datasource/dynamic/DynamicDataSource.java
diff --git a/udf-starter-datasource-dynamic/src/main/java/org/itkk/udf/datasource/dynamic/DynamicDataSourceConfig.java b/udf-stater/udf-starter-datasource-dynamic/src/main/java/org/itkk/udf/datasource/dynamic/DynamicDataSourceConfig.java
similarity index 100%
rename from udf-starter-datasource-dynamic/src/main/java/org/itkk/udf/datasource/dynamic/DynamicDataSourceConfig.java
rename to udf-stater/udf-starter-datasource-dynamic/src/main/java/org/itkk/udf/datasource/dynamic/DynamicDataSourceConfig.java
diff --git a/udf-starter-datasource-dynamic/src/main/java/org/itkk/udf/datasource/dynamic/DynamicDataSourceException.java b/udf-stater/udf-starter-datasource-dynamic/src/main/java/org/itkk/udf/datasource/dynamic/DynamicDataSourceException.java
similarity index 100%
rename from udf-starter-datasource-dynamic/src/main/java/org/itkk/udf/datasource/dynamic/DynamicDataSourceException.java
rename to udf-stater/udf-starter-datasource-dynamic/src/main/java/org/itkk/udf/datasource/dynamic/DynamicDataSourceException.java
diff --git a/udf-starter-datasource/pom.xml b/udf-stater/udf-starter-datasource/pom.xml
similarity index 100%
rename from udf-starter-datasource/pom.xml
rename to udf-stater/udf-starter-datasource/pom.xml
diff --git a/udf-starter-datasource/src/main/java/org/itkk/udf/datasource/dynamic/DataSourceConfig.java b/udf-stater/udf-starter-datasource/src/main/java/org/itkk/udf/datasource/dynamic/DataSourceConfig.java
similarity index 100%
rename from udf-starter-datasource/src/main/java/org/itkk/udf/datasource/dynamic/DataSourceConfig.java
rename to udf-stater/udf-starter-datasource/src/main/java/org/itkk/udf/datasource/dynamic/DataSourceConfig.java
diff --git a/udf-starter-exception-alert/pom.xml b/udf-stater/udf-starter-exception-alert/pom.xml
similarity index 100%
rename from udf-starter-exception-alert/pom.xml
rename to udf-stater/udf-starter-exception-alert/pom.xml
diff --git a/udf-starter-exception-alert/src/main/java/org/itkk/udf/exception/alert/ExceptionAlert.java b/udf-stater/udf-starter-exception-alert/src/main/java/org/itkk/udf/exception/alert/ExceptionAlert.java
similarity index 100%
rename from udf-starter-exception-alert/src/main/java/org/itkk/udf/exception/alert/ExceptionAlert.java
rename to udf-stater/udf-starter-exception-alert/src/main/java/org/itkk/udf/exception/alert/ExceptionAlert.java
diff --git a/udf-starter-exception-alert/src/main/java/org/itkk/udf/exception/alert/ExceptionAlertConfig.java b/udf-stater/udf-starter-exception-alert/src/main/java/org/itkk/udf/exception/alert/ExceptionAlertConfig.java
similarity index 100%
rename from udf-starter-exception-alert/src/main/java/org/itkk/udf/exception/alert/ExceptionAlertConfig.java
rename to udf-stater/udf-starter-exception-alert/src/main/java/org/itkk/udf/exception/alert/ExceptionAlertConfig.java
diff --git a/udf-starter-exception-alert/src/main/java/org/itkk/udf/exception/alert/ExceptionAlertConstant.java b/udf-stater/udf-starter-exception-alert/src/main/java/org/itkk/udf/exception/alert/ExceptionAlertConstant.java
similarity index 100%
rename from udf-starter-exception-alert/src/main/java/org/itkk/udf/exception/alert/ExceptionAlertConstant.java
rename to udf-stater/udf-starter-exception-alert/src/main/java/org/itkk/udf/exception/alert/ExceptionAlertConstant.java
diff --git a/udf-starter-exception-alert/src/main/java/org/itkk/udf/exception/alert/ExceptionAlertProperties.java b/udf-stater/udf-starter-exception-alert/src/main/java/org/itkk/udf/exception/alert/ExceptionAlertProperties.java
similarity index 100%
rename from udf-starter-exception-alert/src/main/java/org/itkk/udf/exception/alert/ExceptionAlertProperties.java
rename to udf-stater/udf-starter-exception-alert/src/main/java/org/itkk/udf/exception/alert/ExceptionAlertProperties.java
diff --git a/udf-starter-file-aliyun-oss-api/pom.xml b/udf-stater/udf-starter-file-aliyun-oss-api/pom.xml
similarity index 100%
rename from udf-starter-file-aliyun-oss-api/pom.xml
rename to udf-stater/udf-starter-file-aliyun-oss-api/pom.xml
diff --git a/udf-starter-file-aliyun-oss-api/src/main/java/org/itkk/udf/file/aliyun/oss/api/AliyunOssProperties.java b/udf-stater/udf-starter-file-aliyun-oss-api/src/main/java/org/itkk/udf/file/aliyun/oss/api/AliyunOssProperties.java
similarity index 100%
rename from udf-starter-file-aliyun-oss-api/src/main/java/org/itkk/udf/file/aliyun/oss/api/AliyunOssProperties.java
rename to udf-stater/udf-starter-file-aliyun-oss-api/src/main/java/org/itkk/udf/file/aliyun/oss/api/AliyunOssProperties.java
diff --git a/udf-starter-file-aliyun-oss-api/src/main/java/org/itkk/udf/file/aliyun/oss/api/OssWarpper.java b/udf-stater/udf-starter-file-aliyun-oss-api/src/main/java/org/itkk/udf/file/aliyun/oss/api/OssWarpper.java
similarity index 100%
rename from udf-starter-file-aliyun-oss-api/src/main/java/org/itkk/udf/file/aliyun/oss/api/OssWarpper.java
rename to udf-stater/udf-starter-file-aliyun-oss-api/src/main/java/org/itkk/udf/file/aliyun/oss/api/OssWarpper.java
diff --git a/udf-starter-file-aliyun-oss-api/src/main/java/org/itkk/udf/file/aliyun/oss/api/domain/PolicyResult.java b/udf-stater/udf-starter-file-aliyun-oss-api/src/main/java/org/itkk/udf/file/aliyun/oss/api/domain/PolicyResult.java
similarity index 100%
rename from udf-starter-file-aliyun-oss-api/src/main/java/org/itkk/udf/file/aliyun/oss/api/domain/PolicyResult.java
rename to udf-stater/udf-starter-file-aliyun-oss-api/src/main/java/org/itkk/udf/file/aliyun/oss/api/domain/PolicyResult.java
diff --git a/udf-starter-file-aliyun-oss-api/src/main/java/org/itkk/udf/file/aliyun/oss/api/download/DownConstant.java b/udf-stater/udf-starter-file-aliyun-oss-api/src/main/java/org/itkk/udf/file/aliyun/oss/api/download/DownConstant.java
similarity index 100%
rename from udf-starter-file-aliyun-oss-api/src/main/java/org/itkk/udf/file/aliyun/oss/api/download/DownConstant.java
rename to udf-stater/udf-starter-file-aliyun-oss-api/src/main/java/org/itkk/udf/file/aliyun/oss/api/download/DownConstant.java
diff --git a/udf-starter-file-aliyun-oss-api/src/main/java/org/itkk/udf/file/aliyun/oss/api/download/DownLoad.java b/udf-stater/udf-starter-file-aliyun-oss-api/src/main/java/org/itkk/udf/file/aliyun/oss/api/download/DownLoad.java
similarity index 100%
rename from udf-starter-file-aliyun-oss-api/src/main/java/org/itkk/udf/file/aliyun/oss/api/download/DownLoad.java
rename to udf-stater/udf-starter-file-aliyun-oss-api/src/main/java/org/itkk/udf/file/aliyun/oss/api/download/DownLoad.java
diff --git a/udf-starter-file-aliyun-oss-api/src/main/java/org/itkk/udf/file/aliyun/oss/api/download/DownLoadParam.java b/udf-stater/udf-starter-file-aliyun-oss-api/src/main/java/org/itkk/udf/file/aliyun/oss/api/download/DownLoadParam.java
similarity index 100%
rename from udf-starter-file-aliyun-oss-api/src/main/java/org/itkk/udf/file/aliyun/oss/api/download/DownLoadParam.java
rename to udf-stater/udf-starter-file-aliyun-oss-api/src/main/java/org/itkk/udf/file/aliyun/oss/api/download/DownLoadParam.java
diff --git a/udf-starter-file-aliyun-oss-api/src/main/java/org/itkk/udf/file/aliyun/oss/api/download/DownLoadProcessAspect.java b/udf-stater/udf-starter-file-aliyun-oss-api/src/main/java/org/itkk/udf/file/aliyun/oss/api/download/DownLoadProcessAspect.java
similarity index 100%
rename from udf-starter-file-aliyun-oss-api/src/main/java/org/itkk/udf/file/aliyun/oss/api/download/DownLoadProcessAspect.java
rename to udf-stater/udf-starter-file-aliyun-oss-api/src/main/java/org/itkk/udf/file/aliyun/oss/api/download/DownLoadProcessAspect.java
diff --git a/udf-starter-file-aliyun-oss-api/src/main/java/org/itkk/udf/file/aliyun/oss/api/download/DownLoadProcessService.java b/udf-stater/udf-starter-file-aliyun-oss-api/src/main/java/org/itkk/udf/file/aliyun/oss/api/download/DownLoadProcessService.java
similarity index 100%
rename from udf-starter-file-aliyun-oss-api/src/main/java/org/itkk/udf/file/aliyun/oss/api/download/DownLoadProcessService.java
rename to udf-stater/udf-starter-file-aliyun-oss-api/src/main/java/org/itkk/udf/file/aliyun/oss/api/download/DownLoadProcessService.java
diff --git a/udf-starter-file-aliyun-oss-api/src/main/java/org/itkk/udf/file/aliyun/oss/api/download/DownloadInfo.java b/udf-stater/udf-starter-file-aliyun-oss-api/src/main/java/org/itkk/udf/file/aliyun/oss/api/download/DownloadInfo.java
similarity index 100%
rename from udf-starter-file-aliyun-oss-api/src/main/java/org/itkk/udf/file/aliyun/oss/api/download/DownloadInfo.java
rename to udf-stater/udf-starter-file-aliyun-oss-api/src/main/java/org/itkk/udf/file/aliyun/oss/api/download/DownloadInfo.java
diff --git a/udf-starter-file-aliyun-oss-api/src/main/java/org/itkk/udf/file/aliyun/oss/api/download/IDownLoadProcess.java b/udf-stater/udf-starter-file-aliyun-oss-api/src/main/java/org/itkk/udf/file/aliyun/oss/api/download/IDownLoadProcess.java
similarity index 100%
rename from udf-starter-file-aliyun-oss-api/src/main/java/org/itkk/udf/file/aliyun/oss/api/download/IDownLoadProcess.java
rename to udf-stater/udf-starter-file-aliyun-oss-api/src/main/java/org/itkk/udf/file/aliyun/oss/api/download/IDownLoadProcess.java
diff --git a/udf-starter-file-aliyun-oss-api/src/main/java/org/itkk/udf/file/aliyun/oss/api/meta/AliyunOssAccessMeta.java b/udf-stater/udf-starter-file-aliyun-oss-api/src/main/java/org/itkk/udf/file/aliyun/oss/api/meta/AliyunOssAccessMeta.java
similarity index 100%
rename from udf-starter-file-aliyun-oss-api/src/main/java/org/itkk/udf/file/aliyun/oss/api/meta/AliyunOssAccessMeta.java
rename to udf-stater/udf-starter-file-aliyun-oss-api/src/main/java/org/itkk/udf/file/aliyun/oss/api/meta/AliyunOssAccessMeta.java
diff --git a/udf-starter-file-aliyun-oss-api/src/main/java/org/itkk/udf/file/aliyun/oss/api/meta/AliyunOssPathMeta.java b/udf-stater/udf-starter-file-aliyun-oss-api/src/main/java/org/itkk/udf/file/aliyun/oss/api/meta/AliyunOssPathMeta.java
similarity index 100%
rename from udf-starter-file-aliyun-oss-api/src/main/java/org/itkk/udf/file/aliyun/oss/api/meta/AliyunOssPathMeta.java
rename to udf-stater/udf-starter-file-aliyun-oss-api/src/main/java/org/itkk/udf/file/aliyun/oss/api/meta/AliyunOssPathMeta.java
diff --git a/udf-starter-file-aliyun-oss/pom.xml b/udf-stater/udf-starter-file-aliyun-oss/pom.xml
similarity index 100%
rename from udf-starter-file-aliyun-oss/pom.xml
rename to udf-stater/udf-starter-file-aliyun-oss/pom.xml
diff --git a/udf-starter-file-aliyun-oss/src/main/java/org/itkk/udf/file/aliyun/oss/web/AliyunOssController.java b/udf-stater/udf-starter-file-aliyun-oss/src/main/java/org/itkk/udf/file/aliyun/oss/web/AliyunOssController.java
similarity index 100%
rename from udf-starter-file-aliyun-oss/src/main/java/org/itkk/udf/file/aliyun/oss/web/AliyunOssController.java
rename to udf-stater/udf-starter-file-aliyun-oss/src/main/java/org/itkk/udf/file/aliyun/oss/web/AliyunOssController.java
diff --git a/udf-starter-file-aliyun-oss/src/main/java/org/itkk/udf/file/aliyun/oss/web/IAliuyunOssController.java b/udf-stater/udf-starter-file-aliyun-oss/src/main/java/org/itkk/udf/file/aliyun/oss/web/IAliuyunOssController.java
similarity index 100%
rename from udf-starter-file-aliyun-oss/src/main/java/org/itkk/udf/file/aliyun/oss/web/IAliuyunOssController.java
rename to udf-stater/udf-starter-file-aliyun-oss/src/main/java/org/itkk/udf/file/aliyun/oss/web/IAliuyunOssController.java
diff --git a/udf-starter-file/pom.xml b/udf-stater/udf-starter-file/pom.xml
similarity index 100%
rename from udf-starter-file/pom.xml
rename to udf-stater/udf-starter-file/pom.xml
diff --git a/udf-starter-file/src/main/java/org/itkk/udf/file/FileException.java b/udf-stater/udf-starter-file/src/main/java/org/itkk/udf/file/FileException.java
similarity index 94%
rename from udf-starter-file/src/main/java/org/itkk/udf/file/FileException.java
rename to udf-stater/udf-starter-file/src/main/java/org/itkk/udf/file/FileException.java
index 2dbcf3e..c576953 100644
--- a/udf-starter-file/src/main/java/org/itkk/udf/file/FileException.java
+++ b/udf-stater/udf-starter-file/src/main/java/org/itkk/udf/file/FileException.java
@@ -1,66 +1,66 @@
-/**
- * FileException.java
- * Created at 2016-03-01
- * Created by wangkang
- * Copyright (C) 2016 itkk.org, All rights reserved.
- */
-package org.itkk.udf.file;
-
-/**
- *
- * ClassName: FileException
- *
- *
- * Description: 文件异常
- *
- *
- * Author: wangkang
- *
- *
- * Date: 2016年3月23日
- *
- */
-public class FileException extends RuntimeException {
-
- /**
- *
- * Field serialVersionUID: 序列号
- *
- */
- private static final long serialVersionUID = 1L;
-
- /**
- *
- * Description: 构造函数
- *
- *
- * @param message 异常信息
- */
- public FileException(String message) {
- super(message);
- }
-
- /**
- *
- * Description: 构造函数
- *
- *
- * @param cause 堆栈
- */
- public FileException(Throwable cause) {
- super(cause);
- }
-
- /**
- *
- * Description: 构造函数
- *
- *
- * @param message 异常信息
- * @param cause 堆栈
- */
- public FileException(String message, Throwable cause) {
- super(message, cause);
- }
-
-}
+/**
+ * FileException.java
+ * Created at 2016-03-01
+ * Created by wangkang
+ * Copyright (C) 2016 itkk.org, All rights reserved.
+ */
+package org.itkk.udf.file;
+
+/**
+ *
+ * ClassName: FileException
+ *
+ *
+ * Description: 文件异常
+ *
+ *
+ * Author: wangkang
+ *
+ *
+ * Date: 2016年3月23日
+ *
+ */
+public class FileException extends RuntimeException {
+
+ /**
+ *
+ * Field serialVersionUID: 序列号
+ *
+ */
+ private static final long serialVersionUID = 1L;
+
+ /**
+ *
+ * Description: 构造函数
+ *
+ *
+ * @param message 异常信息
+ */
+ public FileException(String message) {
+ super(message);
+ }
+
+ /**
+ *
+ * Description: 构造函数
+ *
+ *
+ * @param cause 堆栈
+ */
+ public FileException(Throwable cause) {
+ super(cause);
+ }
+
+ /**
+ *
+ * Description: 构造函数
+ *
+ *
+ * @param message 异常信息
+ * @param cause 堆栈
+ */
+ public FileException(String message, Throwable cause) {
+ super(message, cause);
+ }
+
+}
diff --git a/udf-starter-file/src/main/java/org/itkk/udf/file/FileProperties.java b/udf-stater/udf-starter-file/src/main/java/org/itkk/udf/file/FileProperties.java
similarity index 95%
rename from udf-starter-file/src/main/java/org/itkk/udf/file/FileProperties.java
rename to udf-stater/udf-starter-file/src/main/java/org/itkk/udf/file/FileProperties.java
index f5d0b8d..0c96034 100644
--- a/udf-starter-file/src/main/java/org/itkk/udf/file/FileProperties.java
+++ b/udf-stater/udf-starter-file/src/main/java/org/itkk/udf/file/FileProperties.java
@@ -1,42 +1,42 @@
-/**
- * Config.java
- * Created at 2016-11-19
- * Created by Administrator
- * Copyright (C) 2016 itkk.org, All rights reserved.
- */
-package org.itkk.udf.file;
-
-import lombok.Data;
-import org.itkk.udf.file.meta.PathMeta;
-import org.springframework.boot.context.properties.ConfigurationProperties;
-import org.springframework.stereotype.Component;
-
-import java.io.Serializable;
-import java.util.Map;
-
-/**
- * 描述 : Config
- *
- * @author Administrator
- */
-@Component
-@ConfigurationProperties(prefix = "org.itkk.file.properties")
-@Data
-public class FileProperties implements Serializable {
-
- /**
- * 描述 : ID
- */
- private static final long serialVersionUID = 1L;
-
- /**
- * 描述 : 根路径
- */
- private String rootPath;
-
- /**
- * 描述 : 文件路径 ( key : pathCode )
- */
- private Map path;
-
-}
+/**
+ * Config.java
+ * Created at 2016-11-19
+ * Created by Administrator
+ * Copyright (C) 2016 itkk.org, All rights reserved.
+ */
+package org.itkk.udf.file;
+
+import lombok.Data;
+import org.itkk.udf.file.meta.PathMeta;
+import org.springframework.boot.context.properties.ConfigurationProperties;
+import org.springframework.stereotype.Component;
+
+import java.io.Serializable;
+import java.util.Map;
+
+/**
+ * 描述 : Config
+ *
+ * @author Administrator
+ */
+@Component
+@ConfigurationProperties(prefix = "org.itkk.file.properties")
+@Data
+public class FileProperties implements Serializable {
+
+ /**
+ * 描述 : ID
+ */
+ private static final long serialVersionUID = 1L;
+
+ /**
+ * 描述 : 根路径
+ */
+ private String rootPath;
+
+ /**
+ * 描述 : 文件路径 ( key : pathCode )
+ */
+ private Map path;
+
+}
diff --git a/udf-starter-file/src/main/java/org/itkk/udf/file/meta/PathMeta.java b/udf-stater/udf-starter-file/src/main/java/org/itkk/udf/file/meta/PathMeta.java
similarity index 93%
rename from udf-starter-file/src/main/java/org/itkk/udf/file/meta/PathMeta.java
rename to udf-stater/udf-starter-file/src/main/java/org/itkk/udf/file/meta/PathMeta.java
index 28ee42e..5f33f4a 100644
--- a/udf-starter-file/src/main/java/org/itkk/udf/file/meta/PathMeta.java
+++ b/udf-stater/udf-starter-file/src/main/java/org/itkk/udf/file/meta/PathMeta.java
@@ -1,41 +1,41 @@
-/**
- * PathMeta.java
- * Created at 2017-05-26
- * Created by Administrator
- * Copyright (C) 2016 itkk.org, All rights reserved.
- */
-package org.itkk.udf.file.meta;
-
-import lombok.Data;
-
-import java.io.Serializable;
-
-/**
- * 描述 : PathMeta
- *
- * @author Administrator
- */
-@Data
-public class PathMeta implements Serializable {
-
- /**
- * 描述 : ID
- */
- private static final long serialVersionUID = 1L;
-
- /**
- * 描述 : 应用名称
- */
- private String owner;
-
- /**
- * 描述 : 文件路径
- */
- private String path;
-
- /**
- * 描述 : 描述
- */
- private String description;
-
-}
+/**
+ * PathMeta.java
+ * Created at 2017-05-26
+ * Created by Administrator
+ * Copyright (C) 2016 itkk.org, All rights reserved.
+ */
+package org.itkk.udf.file.meta;
+
+import lombok.Data;
+
+import java.io.Serializable;
+
+/**
+ * 描述 : PathMeta
+ *
+ * @author Administrator
+ */
+@Data
+public class PathMeta implements Serializable {
+
+ /**
+ * 描述 : ID
+ */
+ private static final long serialVersionUID = 1L;
+
+ /**
+ * 描述 : 应用名称
+ */
+ private String owner;
+
+ /**
+ * 描述 : 文件路径
+ */
+ private String path;
+
+ /**
+ * 描述 : 描述
+ */
+ private String description;
+
+}
diff --git a/udf-starter-file/src/main/java/org/itkk/udf/file/service/FileService.java b/udf-stater/udf-starter-file/src/main/java/org/itkk/udf/file/service/FileService.java
similarity index 97%
rename from udf-starter-file/src/main/java/org/itkk/udf/file/service/FileService.java
rename to udf-stater/udf-starter-file/src/main/java/org/itkk/udf/file/service/FileService.java
index f37fe55..4f11e83 100644
--- a/udf-starter-file/src/main/java/org/itkk/udf/file/service/FileService.java
+++ b/udf-stater/udf-starter-file/src/main/java/org/itkk/udf/file/service/FileService.java
@@ -1,161 +1,161 @@
-/**
- * FileService.java
- * Created at 2017-05-26
- * Created by Administrator
- * Copyright (C) 2016 itkk.org, All rights reserved.
- */
-package org.itkk.udf.file.service;
-
-import org.apache.commons.codec.binary.Base64;
-import org.apache.commons.lang3.StringUtils;
-import org.itkk.udf.core.ApplicationConfig;
-import org.itkk.udf.core.domain.file.FileInfo;
-import org.itkk.udf.file.FileException;
-import org.itkk.udf.file.FileProperties;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.core.io.FileSystemResource;
-import org.springframework.stereotype.Service;
-import org.springframework.web.multipart.MultipartFile;
-
-import javax.activation.FileTypeMap;
-import java.io.File;
-import java.io.IOException;
-import java.text.SimpleDateFormat;
-import java.util.Date;
-
-/**
- * 描述 : FileService
- *
- * @author Administrator
- */
-@Service
-public class FileService {
-
- /**
- * 描述 : fileProperties
- */
- @Autowired
- private FileProperties fileProperties;
-
- /**
- * 描述 : applicationConfig
- */
- @Autowired
- private ApplicationConfig applicationConfig;
-
- /**
- * 描述 : 返回文件信息
- *
- * @param fileId 文件ID
- * @return 文件信息
- * @throws IOException 异常
- */
- public FileInfo getFileInfo(String fileId) throws IOException {
- //判断fileId是否为空
- if (StringUtils.isBlank(fileId)) {
- throw new FileException("fileId can not be empty");
- }
- //返回对象
- FileInfo result = new FileInfo();
- result.setId(fileId);
- //获得相对路径
- String relativeFilePath = new String(Base64.decodeBase64(result.getId().getBytes(applicationConfig.getEncoding())), applicationConfig.getEncoding());
- result.setRelativePath(relativeFilePath);
- //获得rootPath
- String rootPath = fileProperties.getRootPath();
- //拼接绝对路径(目录)
- String absolutePath = rootPath + relativeFilePath;
- //获得资源对象
- FileSystemResource fsr = new FileSystemResource(absolutePath);
- //判断资源是否存在
- if (!fsr.exists()) {
- throw new FileException("file : " + relativeFilePath + " does not exist");
- }
- //获得contentType
- String contentType = FileTypeMap.getDefaultFileTypeMap().getContentType(fsr.getFile());
- result.setContentType(contentType);
- //获得文件名称
- String fileName = fsr.getFilename();
- result.setName(fileName);
- //获得文件长度
- Long size = fsr.contentLength();
- result.setSize(size);
- //返回
- return result;
- }
-
- /**
- * 描述 : 上传文件
- *
- * @param pathCode 路径代码
- * @param file 文件
- * @return 结果
- * @throws IllegalStateException 异常
- * @throws IOException 异常
- */
- public FileInfo upload(String pathCode, MultipartFile file) throws IOException {
- //验证
- this.verification(pathCode, file);
- //创建返回对象
- FileInfo fileInfo = new FileInfo();
- //获得rootPath
- String rootPath = fileProperties.getRootPath();
- //根据pathCode获得path
- String path = fileProperties.getPath().get(pathCode).getPath();
- //获得当前时间戳
- String day = new SimpleDateFormat("yyyyMMdd").format(new Date()) + "/";
- //获得文件名
- String originalFilename = file.getOriginalFilename();
- fileInfo.setName(originalFilename);
- //获得上下文类型
- String contentType = file.getContentType();
- fileInfo.setContentType(contentType);
- //获得文件长度
- Long size = file.getSize();
- fileInfo.setSize(size);
- //拼接相对路径(目录)
- String relativePath = path + day;
- //拼接相对路径(文件)
- String relativeFilePath = relativePath + originalFilename;
- fileInfo.setRelativePath(relativeFilePath);
- //拼接绝对路径(目录)
- String absolutePath = rootPath + relativePath;
- //拼接绝对路径(文件)
- String absoluteFilePath = rootPath + relativeFilePath;
- //获得base64文件ID(通过文件相对路径计算获得)
- String fileId = new String(Base64.encodeBase64(fileInfo.getRelativePath().getBytes(applicationConfig.getEncoding())), applicationConfig.getEncoding());
- fileInfo.setId(fileId);
- //获得文件对象(目录)
- File dest = new File(absolutePath);
- //创建目录
- dest.mkdirs();
- //获得文件对象
- dest = new File(absoluteFilePath);
- //保存
- file.transferTo(dest);
- //返回
- return fileInfo;
- }
-
- /**
- * 描述 : 验证
- *
- * @param pathCode 路径代码
- * @param file 文件
- */
- public void verification(String pathCode, MultipartFile file) {
- //验证根路径是否配置
- if (fileProperties.getRootPath() == null) {
- throw new FileException("rootPath not defined");
- }
- //验证pathCode是否存在
- if (!fileProperties.getPath().containsKey(pathCode)) {
- throw new FileException("pathCode : " + pathCode + " not defined");
- }
- //文件是否为空
- if (file.isEmpty()) {
- throw new FileException("file is empty");
- }
- }
-
-}
+/**
+ * FileService.java
+ * Created at 2017-05-26
+ * Created by Administrator
+ * Copyright (C) 2016 itkk.org, All rights reserved.
+ */
+package org.itkk.udf.file.service;
+
+import org.apache.commons.codec.binary.Base64;
+import org.apache.commons.lang3.StringUtils;
+import org.itkk.udf.core.ApplicationConfig;
+import org.itkk.udf.core.domain.file.FileInfo;
+import org.itkk.udf.file.FileException;
+import org.itkk.udf.file.FileProperties;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.core.io.FileSystemResource;
+import org.springframework.stereotype.Service;
+import org.springframework.web.multipart.MultipartFile;
+
+import javax.activation.FileTypeMap;
+import java.io.File;
+import java.io.IOException;
+import java.text.SimpleDateFormat;
+import java.util.Date;
+
+/**
+ * 描述 : FileService
+ *
+ * @author Administrator
+ */
+@Service
+public class FileService {
+
+ /**
+ * 描述 : fileProperties
+ */
+ @Autowired
+ private FileProperties fileProperties;
+
+ /**
+ * 描述 : applicationConfig
+ */
+ @Autowired
+ private ApplicationConfig applicationConfig;
+
+ /**
+ * 描述 : 返回文件信息
+ *
+ * @param fileId 文件ID
+ * @return 文件信息
+ * @throws IOException 异常
+ */
+ public FileInfo getFileInfo(String fileId) throws IOException {
+ //判断fileId是否为空
+ if (StringUtils.isBlank(fileId)) {
+ throw new FileException("fileId can not be empty");
+ }
+ //返回对象
+ FileInfo result = new FileInfo();
+ result.setId(fileId);
+ //获得相对路径
+ String relativeFilePath = new String(Base64.decodeBase64(result.getId().getBytes(applicationConfig.getEncoding())), applicationConfig.getEncoding());
+ result.setRelativePath(relativeFilePath);
+ //获得rootPath
+ String rootPath = fileProperties.getRootPath();
+ //拼接绝对路径(目录)
+ String absolutePath = rootPath + relativeFilePath;
+ //获得资源对象
+ FileSystemResource fsr = new FileSystemResource(absolutePath);
+ //判断资源是否存在
+ if (!fsr.exists()) {
+ throw new FileException("file : " + relativeFilePath + " does not exist");
+ }
+ //获得contentType
+ String contentType = FileTypeMap.getDefaultFileTypeMap().getContentType(fsr.getFile());
+ result.setContentType(contentType);
+ //获得文件名称
+ String fileName = fsr.getFilename();
+ result.setName(fileName);
+ //获得文件长度
+ Long size = fsr.contentLength();
+ result.setSize(size);
+ //返回
+ return result;
+ }
+
+ /**
+ * 描述 : 上传文件
+ *
+ * @param pathCode 路径代码
+ * @param file 文件
+ * @return 结果
+ * @throws IllegalStateException 异常
+ * @throws IOException 异常
+ */
+ public FileInfo upload(String pathCode, MultipartFile file) throws IOException {
+ //验证
+ this.verification(pathCode, file);
+ //创建返回对象
+ FileInfo fileInfo = new FileInfo();
+ //获得rootPath
+ String rootPath = fileProperties.getRootPath();
+ //根据pathCode获得path
+ String path = fileProperties.getPath().get(pathCode).getPath();
+ //获得当前时间戳
+ String day = new SimpleDateFormat("yyyyMMdd").format(new Date()) + "/";
+ //获得文件名
+ String originalFilename = file.getOriginalFilename();
+ fileInfo.setName(originalFilename);
+ //获得上下文类型
+ String contentType = file.getContentType();
+ fileInfo.setContentType(contentType);
+ //获得文件长度
+ Long size = file.getSize();
+ fileInfo.setSize(size);
+ //拼接相对路径(目录)
+ String relativePath = path + day;
+ //拼接相对路径(文件)
+ String relativeFilePath = relativePath + originalFilename;
+ fileInfo.setRelativePath(relativeFilePath);
+ //拼接绝对路径(目录)
+ String absolutePath = rootPath + relativePath;
+ //拼接绝对路径(文件)
+ String absoluteFilePath = rootPath + relativeFilePath;
+ //获得base64文件ID(通过文件相对路径计算获得)
+ String fileId = new String(Base64.encodeBase64(fileInfo.getRelativePath().getBytes(applicationConfig.getEncoding())), applicationConfig.getEncoding());
+ fileInfo.setId(fileId);
+ //获得文件对象(目录)
+ File dest = new File(absolutePath);
+ //创建目录
+ dest.mkdirs();
+ //获得文件对象
+ dest = new File(absoluteFilePath);
+ //保存
+ file.transferTo(dest);
+ //返回
+ return fileInfo;
+ }
+
+ /**
+ * 描述 : 验证
+ *
+ * @param pathCode 路径代码
+ * @param file 文件
+ */
+ public void verification(String pathCode, MultipartFile file) {
+ //验证根路径是否配置
+ if (fileProperties.getRootPath() == null) {
+ throw new FileException("rootPath not defined");
+ }
+ //验证pathCode是否存在
+ if (!fileProperties.getPath().containsKey(pathCode)) {
+ throw new FileException("pathCode : " + pathCode + " not defined");
+ }
+ //文件是否为空
+ if (file.isEmpty()) {
+ throw new FileException("file is empty");
+ }
+ }
+
+}
diff --git a/udf-starter-file/src/main/java/org/itkk/udf/file/web/FileController.java b/udf-stater/udf-starter-file/src/main/java/org/itkk/udf/file/web/FileController.java
similarity index 96%
rename from udf-starter-file/src/main/java/org/itkk/udf/file/web/FileController.java
rename to udf-stater/udf-starter-file/src/main/java/org/itkk/udf/file/web/FileController.java
index f52d9d3..c0cf9fd 100644
--- a/udf-starter-file/src/main/java/org/itkk/udf/file/web/FileController.java
+++ b/udf-stater/udf-starter-file/src/main/java/org/itkk/udf/file/web/FileController.java
@@ -1,120 +1,120 @@
-/**
- * FileController.java
- * Created at 2017-05-26
- * Created by Administrator
- * Copyright (C) 2016 itkk.org, All rights reserved.
- */
-package org.itkk.udf.file.web;
-
-import org.apache.commons.collections4.CollectionUtils;
-import org.itkk.udf.core.ApplicationConfig;
-import org.itkk.udf.core.RestResponse;
-import org.itkk.udf.core.domain.file.FileInfo;
-import org.itkk.udf.core.domain.file.FileParam;
-import org.itkk.udf.file.FileProperties;
-import org.itkk.udf.file.service.FileService;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.core.io.FileSystemResource;
-import org.springframework.web.bind.annotation.RequestBody;
-import org.springframework.web.bind.annotation.RestController;
-import org.springframework.web.multipart.MultipartFile;
-
-import javax.servlet.http.HttpServletResponse;
-import java.io.BufferedInputStream;
-import java.io.IOException;
-import java.io.OutputStream;
-import java.util.ArrayList;
-import java.util.List;
-
-/**
- * 描述 : FileController
- *
- * @author Administrator
- */
-@RestController
-public class FileController implements IFileController {
-
- /**
- * 描述 : applicationConfig
- */
- @Autowired
- private ApplicationConfig applicationConfig;
-
- /**
- * 描述 : fileProperties
- */
- @Autowired
- private FileProperties fileProperties;
-
- /**
- * 描述 : fileService
- */
- @Autowired
- private FileService fileService;
-
- @Override
- public RestResponse upload(String pathCode, MultipartFile file) throws IOException {
- return new RestResponse<>(fileService.upload(pathCode, file));
- }
-
- @Override
- public RestResponse> batchUpload(String pathCode, List files) throws IOException {
- List infos = new ArrayList<>();
- if (CollectionUtils.isNotEmpty(files)) {
- for (MultipartFile file : files) {
- infos.add(fileService.upload(pathCode, file));
- }
- }
- return new RestResponse<>(infos);
- }
-
- @Override
- public RestResponse properties() {
- return new RestResponse<>(fileProperties);
- }
-
- @Override
- public void download(@RequestBody FileParam fileParam, HttpServletResponse response)
- throws IOException {
- this.loadFile(fileParam.getId(), response);
- }
-
- @Override
- public RestResponse info(@RequestBody FileParam fileParam) throws IOException {
- return new RestResponse<>(this.fileService.getFileInfo(fileParam.getId()));
- }
-
- /**
- * 描述 : 加载文件
- *
- * @param fileId 相对路径
- * @param response 响应对象
- * @throws IOException IOException
- */
- private void loadFile(String fileId, HttpServletResponse response) throws IOException {
- //获得文件信息
- FileInfo fileInfo = this.fileService.getFileInfo(fileId);
- //设置response
- response.setContentLengthLong(fileInfo.getSize());
- response.setCharacterEncoding(applicationConfig.getEncoding());
- response.setContentType(fileInfo.getContentType());
- //获得rootPath
- String rootPath = fileProperties.getRootPath();
- //拼接绝对路径(目录)
- String absolutePath = rootPath + fileInfo.getRelativePath();
- //获得资源对象
- FileSystemResource fsr = new FileSystemResource(absolutePath);
- //输出文件
- final int buffInt = 1024;
- byte[] buff = new byte[buffInt];
- try (OutputStream os = response.getOutputStream(); BufferedInputStream bis = new BufferedInputStream(fsr.getInputStream())) { //NOSONAR
- int i = bis.read(buff);
- while (i != -1) {
- os.write(buff, 0, buff.length);
- os.flush();
- i = bis.read(buff);
- }
- }
- }
-
-}
+/**
+ * FileController.java
+ * Created at 2017-05-26
+ * Created by Administrator
+ * Copyright (C) 2016 itkk.org, All rights reserved.
+ */
+package org.itkk.udf.file.web;
+
+import org.apache.commons.collections4.CollectionUtils;
+import org.itkk.udf.core.ApplicationConfig;
+import org.itkk.udf.core.RestResponse;
+import org.itkk.udf.core.domain.file.FileInfo;
+import org.itkk.udf.core.domain.file.FileParam;
+import org.itkk.udf.file.FileProperties;
+import org.itkk.udf.file.service.FileService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.core.io.FileSystemResource;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RestController;
+import org.springframework.web.multipart.MultipartFile;
+
+import javax.servlet.http.HttpServletResponse;
+import java.io.BufferedInputStream;
+import java.io.IOException;
+import java.io.OutputStream;
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * 描述 : FileController
+ *
+ * @author Administrator
+ */
+@RestController
+public class FileController implements IFileController {
+
+ /**
+ * 描述 : applicationConfig
+ */
+ @Autowired
+ private ApplicationConfig applicationConfig;
+
+ /**
+ * 描述 : fileProperties
+ */
+ @Autowired
+ private FileProperties fileProperties;
+
+ /**
+ * 描述 : fileService
+ */
+ @Autowired
+ private FileService fileService;
+
+ @Override
+ public RestResponse upload(String pathCode, MultipartFile file) throws IOException {
+ return new RestResponse<>(fileService.upload(pathCode, file));
+ }
+
+ @Override
+ public RestResponse> batchUpload(String pathCode, List files) throws IOException {
+ List infos = new ArrayList<>();
+ if (CollectionUtils.isNotEmpty(files)) {
+ for (MultipartFile file : files) {
+ infos.add(fileService.upload(pathCode, file));
+ }
+ }
+ return new RestResponse<>(infos);
+ }
+
+ @Override
+ public RestResponse properties() {
+ return new RestResponse<>(fileProperties);
+ }
+
+ @Override
+ public void download(@RequestBody FileParam fileParam, HttpServletResponse response)
+ throws IOException {
+ this.loadFile(fileParam.getId(), response);
+ }
+
+ @Override
+ public RestResponse info(@RequestBody FileParam fileParam) throws IOException {
+ return new RestResponse<>(this.fileService.getFileInfo(fileParam.getId()));
+ }
+
+ /**
+ * 描述 : 加载文件
+ *
+ * @param fileId 相对路径
+ * @param response 响应对象
+ * @throws IOException IOException
+ */
+ private void loadFile(String fileId, HttpServletResponse response) throws IOException {
+ //获得文件信息
+ FileInfo fileInfo = this.fileService.getFileInfo(fileId);
+ //设置response
+ response.setContentLengthLong(fileInfo.getSize());
+ response.setCharacterEncoding(applicationConfig.getEncoding());
+ response.setContentType(fileInfo.getContentType());
+ //获得rootPath
+ String rootPath = fileProperties.getRootPath();
+ //拼接绝对路径(目录)
+ String absolutePath = rootPath + fileInfo.getRelativePath();
+ //获得资源对象
+ FileSystemResource fsr = new FileSystemResource(absolutePath);
+ //输出文件
+ final int buffInt = 1024;
+ byte[] buff = new byte[buffInt];
+ try (OutputStream os = response.getOutputStream(); BufferedInputStream bis = new BufferedInputStream(fsr.getInputStream())) { //NOSONAR
+ int i = bis.read(buff);
+ while (i != -1) {
+ os.write(buff, 0, buff.length);
+ os.flush();
+ i = bis.read(buff);
+ }
+ }
+ }
+
+}
diff --git a/udf-starter-file/src/main/java/org/itkk/udf/file/web/IFileController.java b/udf-stater/udf-starter-file/src/main/java/org/itkk/udf/file/web/IFileController.java
similarity index 97%
rename from udf-starter-file/src/main/java/org/itkk/udf/file/web/IFileController.java
rename to udf-stater/udf-starter-file/src/main/java/org/itkk/udf/file/web/IFileController.java
index d43bb70..f52814a 100644
--- a/udf-starter-file/src/main/java/org/itkk/udf/file/web/IFileController.java
+++ b/udf-stater/udf-starter-file/src/main/java/org/itkk/udf/file/web/IFileController.java
@@ -1,120 +1,120 @@
-/**
- * IFileController.java
- * Created at 2017-05-26
- * Created by Administrator
- * Copyright (C) 2016 itkk.org, All rights reserved.
- */
-package org.itkk.udf.file.web;
-
-import io.swagger.annotations.Api;
-import io.swagger.annotations.ApiImplicitParam;
-import io.swagger.annotations.ApiImplicitParams;
-import io.swagger.annotations.ApiOperation;
-import org.itkk.udf.core.RestResponse;
-import org.itkk.udf.core.domain.file.FileInfo;
-import org.itkk.udf.core.domain.file.FileParam;
-import org.itkk.udf.file.FileProperties;
-import org.springframework.web.bind.annotation.RequestBody;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RequestMethod;
-import org.springframework.web.multipart.MultipartFile;
-
-import javax.servlet.http.HttpServletResponse;
-import java.io.IOException;
-import java.util.List;
-
-/**
- * 描述 : IFileController
- *
- * @author Administrator
- */
-@Api(value = "文件服务", consumes = "application/json", produces = "application/json",
- protocols = "http")
-@RequestMapping(value = "/service/file")
-public interface IFileController {
-
- /**
- * 描述 : 上传文件
- *
- * @param pathCode 路径代码
- * @param file 文件
- * @return 结果
- * @throws IOException 异常
- */
- @ApiOperation(value = "FILE_1", notes = "上传文件")
- @ApiImplicitParams({
- @ApiImplicitParam(paramType = "header", name = "rmsApplicationName", value = "rms应用名称", required = true, dataType = "string"),
- @ApiImplicitParam(paramType = "header", name = "rmsSign", value = "rms认证秘钥", required = true, dataType = "string"),
- @ApiImplicitParam(paramType = "header", name = "rmsServiceCode", value = "rms接口编号", required = true, dataType = "string"),
- @ApiImplicitParam(paramType = "form", name = "pathCode", value = "路径代码", required = true, dataType = "string"),
- @ApiImplicitParam(paramType = "form", name = "file", value = "文件", required = true, dataType = "__file")
- })
- @RequestMapping(value = "upload", method = RequestMethod.POST)
- RestResponse upload(String pathCode, MultipartFile file) throws IOException;
-
- /**
- * 描述 : 文件配置
- *
- * @return 文件配置
- */
- @ApiOperation(value = "FILE_2", notes = "文件配置")
- @ApiImplicitParams({
- @ApiImplicitParam(paramType = "header", name = "rmsApplicationName", value = "rms应用名称", required = true, dataType = "string"),
- @ApiImplicitParam(paramType = "header", name = "rmsSign", value = "rms认证秘钥", required = true, dataType = "string"),
- @ApiImplicitParam(paramType = "header", name = "rmsServiceCode", value = "rms接口编号", required = true, dataType = "string")
- })
- @RequestMapping(value = "properties", method = RequestMethod.GET)
- RestResponse properties();
-
- /**
- * 描述 : 通过文件ID访问文件
- *
- * @param fileParam 文件参数
- * @param response 响应对象
- * @throws IOException 异常
- */
- @ApiOperation(value = "FILE_3", notes = "通过文件ID访问文件")
- @ApiImplicitParams({
- @ApiImplicitParam(paramType = "header", name = "rmsApplicationName", value = "rms应用名称", required = true, dataType = "string"),
- @ApiImplicitParam(paramType = "header", name = "rmsSign", value = "rms认证秘钥", required = true, dataType = "string"),
- @ApiImplicitParam(paramType = "header", name = "rmsServiceCode", value = "rms接口编号", required = true, dataType = "string")
- })
- @RequestMapping(value = "download", method = RequestMethod.POST)
- void download(@RequestBody FileParam fileParam, HttpServletResponse response) throws IOException;
-
- /**
- * 描述 : 通过文件ID访问文件
- *
- * @param fileParam 文件参数
- * @return 文件信息
- * @throws IOException 异常
- */
- @ApiOperation(value = "FILE_4", notes = "通过文件ID获得文件信息")
- @ApiImplicitParams({
- @ApiImplicitParam(paramType = "header", name = "rmsApplicationName", value = "rms应用名称", required = true, dataType = "string"),
- @ApiImplicitParam(paramType = "header", name = "rmsSign", value = "rms认证秘钥", required = true, dataType = "string"),
- @ApiImplicitParam(paramType = "header", name = "rmsServiceCode", value = "rms接口编号", required = true, dataType = "string")
- })
- @RequestMapping(value = "info", method = RequestMethod.POST)
- RestResponse info(@RequestBody FileParam fileParam) throws IOException;
-
- /**
- * 描述 : 批量上传文件
- *
- * @param pathCode 路径代码
- * @param files 文件清单
- * @return 结果
- * @throws IOException 异常
- */
- @ApiOperation(value = "FILE_5", notes = "批量上传文件")
- @ApiImplicitParams({
- @ApiImplicitParam(paramType = "header", name = "rmsApplicationName", value = "rms应用名称", required = true, dataType = "string"),
- @ApiImplicitParam(paramType = "header", name = "rmsSign", value = "rms认证秘钥", required = true, dataType = "string"),
- @ApiImplicitParam(paramType = "header", name = "rmsServiceCode", value = "rms接口编号", required = true, dataType = "string"),
- @ApiImplicitParam(paramType = "form", name = "pathCode", value = "路径代码", required = true, dataType = "string"),
- @ApiImplicitParam(paramType = "form", name = "files", value = "文件清单", required = true, allowMultiple = true, dataType = "__file")
- })
- @RequestMapping(value = "upload/batch", method = RequestMethod.POST)
- RestResponse> batchUpload(String pathCode, List files) throws IOException;
-
-}
+/**
+ * IFileController.java
+ * Created at 2017-05-26
+ * Created by Administrator
+ * Copyright (C) 2016 itkk.org, All rights reserved.
+ */
+package org.itkk.udf.file.web;
+
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiImplicitParam;
+import io.swagger.annotations.ApiImplicitParams;
+import io.swagger.annotations.ApiOperation;
+import org.itkk.udf.core.RestResponse;
+import org.itkk.udf.core.domain.file.FileInfo;
+import org.itkk.udf.core.domain.file.FileParam;
+import org.itkk.udf.file.FileProperties;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestMethod;
+import org.springframework.web.multipart.MultipartFile;
+
+import javax.servlet.http.HttpServletResponse;
+import java.io.IOException;
+import java.util.List;
+
+/**
+ * 描述 : IFileController
+ *
+ * @author Administrator
+ */
+@Api(value = "文件服务", consumes = "application/json", produces = "application/json",
+ protocols = "http")
+@RequestMapping(value = "/service/file")
+public interface IFileController {
+
+ /**
+ * 描述 : 上传文件
+ *
+ * @param pathCode 路径代码
+ * @param file 文件
+ * @return 结果
+ * @throws IOException 异常
+ */
+ @ApiOperation(value = "FILE_1", notes = "上传文件")
+ @ApiImplicitParams({
+ @ApiImplicitParam(paramType = "header", name = "rmsApplicationName", value = "rms应用名称", required = true, dataType = "string"),
+ @ApiImplicitParam(paramType = "header", name = "rmsSign", value = "rms认证秘钥", required = true, dataType = "string"),
+ @ApiImplicitParam(paramType = "header", name = "rmsServiceCode", value = "rms接口编号", required = true, dataType = "string"),
+ @ApiImplicitParam(paramType = "form", name = "pathCode", value = "路径代码", required = true, dataType = "string"),
+ @ApiImplicitParam(paramType = "form", name = "file", value = "文件", required = true, dataType = "__file")
+ })
+ @RequestMapping(value = "upload", method = RequestMethod.POST)
+ RestResponse upload(String pathCode, MultipartFile file) throws IOException;
+
+ /**
+ * 描述 : 文件配置
+ *
+ * @return 文件配置
+ */
+ @ApiOperation(value = "FILE_2", notes = "文件配置")
+ @ApiImplicitParams({
+ @ApiImplicitParam(paramType = "header", name = "rmsApplicationName", value = "rms应用名称", required = true, dataType = "string"),
+ @ApiImplicitParam(paramType = "header", name = "rmsSign", value = "rms认证秘钥", required = true, dataType = "string"),
+ @ApiImplicitParam(paramType = "header", name = "rmsServiceCode", value = "rms接口编号", required = true, dataType = "string")
+ })
+ @RequestMapping(value = "properties", method = RequestMethod.GET)
+ RestResponse properties();
+
+ /**
+ * 描述 : 通过文件ID访问文件
+ *
+ * @param fileParam 文件参数
+ * @param response 响应对象
+ * @throws IOException 异常
+ */
+ @ApiOperation(value = "FILE_3", notes = "通过文件ID访问文件")
+ @ApiImplicitParams({
+ @ApiImplicitParam(paramType = "header", name = "rmsApplicationName", value = "rms应用名称", required = true, dataType = "string"),
+ @ApiImplicitParam(paramType = "header", name = "rmsSign", value = "rms认证秘钥", required = true, dataType = "string"),
+ @ApiImplicitParam(paramType = "header", name = "rmsServiceCode", value = "rms接口编号", required = true, dataType = "string")
+ })
+ @RequestMapping(value = "download", method = RequestMethod.POST)
+ void download(@RequestBody FileParam fileParam, HttpServletResponse response) throws IOException;
+
+ /**
+ * 描述 : 通过文件ID访问文件
+ *
+ * @param fileParam 文件参数
+ * @return 文件信息
+ * @throws IOException 异常
+ */
+ @ApiOperation(value = "FILE_4", notes = "通过文件ID获得文件信息")
+ @ApiImplicitParams({
+ @ApiImplicitParam(paramType = "header", name = "rmsApplicationName", value = "rms应用名称", required = true, dataType = "string"),
+ @ApiImplicitParam(paramType = "header", name = "rmsSign", value = "rms认证秘钥", required = true, dataType = "string"),
+ @ApiImplicitParam(paramType = "header", name = "rmsServiceCode", value = "rms接口编号", required = true, dataType = "string")
+ })
+ @RequestMapping(value = "info", method = RequestMethod.POST)
+ RestResponse info(@RequestBody FileParam fileParam) throws IOException;
+
+ /**
+ * 描述 : 批量上传文件
+ *
+ * @param pathCode 路径代码
+ * @param files 文件清单
+ * @return 结果
+ * @throws IOException 异常
+ */
+ @ApiOperation(value = "FILE_5", notes = "批量上传文件")
+ @ApiImplicitParams({
+ @ApiImplicitParam(paramType = "header", name = "rmsApplicationName", value = "rms应用名称", required = true, dataType = "string"),
+ @ApiImplicitParam(paramType = "header", name = "rmsSign", value = "rms认证秘钥", required = true, dataType = "string"),
+ @ApiImplicitParam(paramType = "header", name = "rmsServiceCode", value = "rms接口编号", required = true, dataType = "string"),
+ @ApiImplicitParam(paramType = "form", name = "pathCode", value = "路径代码", required = true, dataType = "string"),
+ @ApiImplicitParam(paramType = "form", name = "files", value = "文件清单", required = true, allowMultiple = true, dataType = "__file")
+ })
+ @RequestMapping(value = "upload/batch", method = RequestMethod.POST)
+ RestResponse> batchUpload(String pathCode, List files) throws IOException;
+
+}
diff --git a/udf-starter-id/pom.xml b/udf-stater/udf-starter-id/pom.xml
similarity index 100%
rename from udf-starter-id/pom.xml
rename to udf-stater/udf-starter-id/pom.xml
diff --git a/udf-starter-id/src/main/java/org/itkk/udf/id/IdWorker.java b/udf-stater/udf-starter-id/src/main/java/org/itkk/udf/id/IdWorker.java
similarity index 100%
rename from udf-starter-id/src/main/java/org/itkk/udf/id/IdWorker.java
rename to udf-stater/udf-starter-id/src/main/java/org/itkk/udf/id/IdWorker.java
diff --git a/udf-starter-id/src/main/java/org/itkk/udf/id/IdWorkerConfig.java b/udf-stater/udf-starter-id/src/main/java/org/itkk/udf/id/IdWorkerConfig.java
similarity index 100%
rename from udf-starter-id/src/main/java/org/itkk/udf/id/IdWorkerConfig.java
rename to udf-stater/udf-starter-id/src/main/java/org/itkk/udf/id/IdWorkerConfig.java
diff --git a/udf-starter-id/src/main/java/org/itkk/udf/id/IdWorkerFactory.java b/udf-stater/udf-starter-id/src/main/java/org/itkk/udf/id/IdWorkerFactory.java
similarity index 100%
rename from udf-starter-id/src/main/java/org/itkk/udf/id/IdWorkerFactory.java
rename to udf-stater/udf-starter-id/src/main/java/org/itkk/udf/id/IdWorkerFactory.java
diff --git a/udf-starter-id/src/main/java/org/itkk/udf/id/IdWorkerProperties.java b/udf-stater/udf-starter-id/src/main/java/org/itkk/udf/id/IdWorkerProperties.java
similarity index 100%
rename from udf-starter-id/src/main/java/org/itkk/udf/id/IdWorkerProperties.java
rename to udf-stater/udf-starter-id/src/main/java/org/itkk/udf/id/IdWorkerProperties.java
diff --git a/udf-starter-id/src/main/java/org/itkk/udf/id/domain/CacheValue.java b/udf-stater/udf-starter-id/src/main/java/org/itkk/udf/id/domain/CacheValue.java
similarity index 100%
rename from udf-starter-id/src/main/java/org/itkk/udf/id/domain/CacheValue.java
rename to udf-stater/udf-starter-id/src/main/java/org/itkk/udf/id/domain/CacheValue.java
diff --git a/udf-starter-id/src/main/java/org/itkk/udf/id/domain/IdWorkerWrapper.java b/udf-stater/udf-starter-id/src/main/java/org/itkk/udf/id/domain/IdWorkerWrapper.java
similarity index 100%
rename from udf-starter-id/src/main/java/org/itkk/udf/id/domain/IdWorkerWrapper.java
rename to udf-stater/udf-starter-id/src/main/java/org/itkk/udf/id/domain/IdWorkerWrapper.java
diff --git a/udf-starter-id/src/main/java/org/itkk/udf/id/service/IdWorkerService.java b/udf-stater/udf-starter-id/src/main/java/org/itkk/udf/id/service/IdWorkerService.java
similarity index 100%
rename from udf-starter-id/src/main/java/org/itkk/udf/id/service/IdWorkerService.java
rename to udf-stater/udf-starter-id/src/main/java/org/itkk/udf/id/service/IdWorkerService.java
diff --git a/udf-starter-id/src/main/java/org/itkk/udf/id/web/IIdWorkerController.java b/udf-stater/udf-starter-id/src/main/java/org/itkk/udf/id/web/IIdWorkerController.java
similarity index 100%
rename from udf-starter-id/src/main/java/org/itkk/udf/id/web/IIdWorkerController.java
rename to udf-stater/udf-starter-id/src/main/java/org/itkk/udf/id/web/IIdWorkerController.java
diff --git a/udf-starter-id/src/main/java/org/itkk/udf/id/web/IdWorkerController.java b/udf-stater/udf-starter-id/src/main/java/org/itkk/udf/id/web/IdWorkerController.java
similarity index 100%
rename from udf-starter-id/src/main/java/org/itkk/udf/id/web/IdWorkerController.java
rename to udf-stater/udf-starter-id/src/main/java/org/itkk/udf/id/web/IdWorkerController.java
diff --git a/udf-starter-id/src/main/test/org/itkk/udf/id/IdWorkerTest.java b/udf-stater/udf-starter-id/src/main/test/org/itkk/udf/id/IdWorkerTest.java
similarity index 100%
rename from udf-starter-id/src/main/test/org/itkk/udf/id/IdWorkerTest.java
rename to udf-stater/udf-starter-id/src/main/test/org/itkk/udf/id/IdWorkerTest.java
diff --git a/udf-starter-mail/pom.xml b/udf-stater/udf-starter-mail/pom.xml
similarity index 100%
rename from udf-starter-mail/pom.xml
rename to udf-stater/udf-starter-mail/pom.xml
diff --git a/udf-starter-mail/src/main/java/org/itkk/udf/mail/MailException.java b/udf-stater/udf-starter-mail/src/main/java/org/itkk/udf/mail/MailException.java
similarity index 94%
rename from udf-starter-mail/src/main/java/org/itkk/udf/mail/MailException.java
rename to udf-stater/udf-starter-mail/src/main/java/org/itkk/udf/mail/MailException.java
index d77a649..792189a 100644
--- a/udf-starter-mail/src/main/java/org/itkk/udf/mail/MailException.java
+++ b/udf-stater/udf-starter-mail/src/main/java/org/itkk/udf/mail/MailException.java
@@ -1,66 +1,66 @@
-/**
- * MailException.java
- * Created at 2016-03-01
- * Created by wangkang
- * Copyright (C) 2016 itkk.org, All rights reserved.
- */
-package org.itkk.udf.mail;
-
-/**
- *
- * ClassName: MailException
- *
- *
- * Description: 文件异常
- *
- *
- * Author: wangkang
- *
- *
- * Date: 2016年3月23日
- *
- */
-public class MailException extends RuntimeException {
-
- /**
- *
- * Field serialVersionUID: 序列号
- *
- */
- private static final long serialVersionUID = 1L;
-
- /**
- *
- * Description: 构造函数
- *
- *
- * @param message 异常信息
- */
- public MailException(String message) {
- super(message);
- }
-
- /**
- *
- * Description: 构造函数
- *
- *
- * @param cause 堆栈
- */
- public MailException(Throwable cause) {
- super(cause);
- }
-
- /**
- *
- * Description: 构造函数
- *
- *
- * @param message 异常信息
- * @param cause 堆栈
- */
- public MailException(String message, Throwable cause) {
- super(message, cause);
- }
-
-}
+/**
+ * MailException.java
+ * Created at 2016-03-01
+ * Created by wangkang
+ * Copyright (C) 2016 itkk.org, All rights reserved.
+ */
+package org.itkk.udf.mail;
+
+/**
+ *
+ * ClassName: MailException
+ *
+ *
+ * Description: 文件异常
+ *
+ *
+ * Author: wangkang
+ *
+ *
+ * Date: 2016年3月23日
+ *
+ */
+public class MailException extends RuntimeException {
+
+ /**
+ *
+ * Field serialVersionUID: 序列号
+ *
+ */
+ private static final long serialVersionUID = 1L;
+
+ /**
+ *
+ * Description: 构造函数
+ *
+ *
+ * @param message 异常信息
+ */
+ public MailException(String message) {
+ super(message);
+ }
+
+ /**
+ *
+ * Description: 构造函数
+ *
+ *
+ * @param cause 堆栈
+ */
+ public MailException(Throwable cause) {
+ super(cause);
+ }
+
+ /**
+ *
+ * Description: 构造函数
+ *
+ *
+ * @param message 异常信息
+ * @param cause 堆栈
+ */
+ public MailException(String message, Throwable cause) {
+ super(message, cause);
+ }
+
+}
diff --git a/udf-starter-mail/src/main/java/org/itkk/udf/mail/MailProperties.java b/udf-stater/udf-starter-mail/src/main/java/org/itkk/udf/mail/MailProperties.java
similarity index 95%
rename from udf-starter-mail/src/main/java/org/itkk/udf/mail/MailProperties.java
rename to udf-stater/udf-starter-mail/src/main/java/org/itkk/udf/mail/MailProperties.java
index 6595c18..5a87e02 100644
--- a/udf-starter-mail/src/main/java/org/itkk/udf/mail/MailProperties.java
+++ b/udf-stater/udf-starter-mail/src/main/java/org/itkk/udf/mail/MailProperties.java
@@ -1,35 +1,35 @@
-/**
- * MailProperties.java
- * Created at 2016-11-19
- * Created by Administrator
- * Copyright (C) 2016 itkk.org, All rights reserved.
- */
-package org.itkk.udf.mail;
-
-import lombok.Data;
-import org.springframework.boot.context.properties.ConfigurationProperties;
-import org.springframework.stereotype.Component;
-
-import java.io.Serializable;
-
-/**
- * 描述 : MailProperties
- *
- * @author Administrator
- */
-@Component
-@ConfigurationProperties(prefix = "org.itkk.mail.properties")
-@Data
-public class MailProperties implements Serializable {
-
- /**
- * 描述 : ID
- */
- private static final long serialVersionUID = 1L;
-
- /**
- * 描述 : 发送地址
- */
- private String from;
-
-}
+/**
+ * MailProperties.java
+ * Created at 2016-11-19
+ * Created by Administrator
+ * Copyright (C) 2016 itkk.org, All rights reserved.
+ */
+package org.itkk.udf.mail;
+
+import lombok.Data;
+import org.springframework.boot.context.properties.ConfigurationProperties;
+import org.springframework.stereotype.Component;
+
+import java.io.Serializable;
+
+/**
+ * 描述 : MailProperties
+ *
+ * @author Administrator
+ */
+@Component
+@ConfigurationProperties(prefix = "org.itkk.mail.properties")
+@Data
+public class MailProperties implements Serializable {
+
+ /**
+ * 描述 : ID
+ */
+ private static final long serialVersionUID = 1L;
+
+ /**
+ * 描述 : 发送地址
+ */
+ private String from;
+
+}
diff --git a/udf-starter-mail/src/main/java/org/itkk/udf/mail/service/MailService.java b/udf-stater/udf-starter-mail/src/main/java/org/itkk/udf/mail/service/MailService.java
similarity index 97%
rename from udf-starter-mail/src/main/java/org/itkk/udf/mail/service/MailService.java
rename to udf-stater/udf-starter-mail/src/main/java/org/itkk/udf/mail/service/MailService.java
index 799717c..56fa5f0 100644
--- a/udf-starter-mail/src/main/java/org/itkk/udf/mail/service/MailService.java
+++ b/udf-stater/udf-starter-mail/src/main/java/org/itkk/udf/mail/service/MailService.java
@@ -1,151 +1,151 @@
-/**
- * MailService.java
- * Created at 2017-05-28
- * Created by Administrator
- * Copyright (C) 2016 itkk.org, All rights reserved.
- */
-package org.itkk.udf.mail.service;
-
-import org.apache.commons.collections4.CollectionUtils;
-import org.apache.commons.lang3.ArrayUtils;
-import org.apache.commons.lang3.StringUtils;
-import org.itkk.udf.core.RestResponse;
-import org.itkk.udf.core.domain.file.FileInfo;
-import org.itkk.udf.core.domain.file.FileParam;
-import org.itkk.udf.core.domain.mail.AttachmentInfo;
-import org.itkk.udf.core.domain.mail.InlineInfo;
-import org.itkk.udf.core.domain.mail.MailInfo;
-import org.itkk.udf.mail.MailException;
-import org.itkk.udf.mail.MailProperties;
-import org.itkk.udf.rms.Rms;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.core.ParameterizedTypeReference;
-import org.springframework.core.io.ByteArrayResource;
-import org.springframework.http.ResponseEntity;
-import org.springframework.mail.javamail.JavaMailSender;
-import org.springframework.mail.javamail.MimeMessageHelper;
-import org.springframework.stereotype.Service;
-
-import javax.mail.MessagingException;
-import javax.mail.internet.MimeMessage;
-import java.net.IDN;
-import java.util.Arrays;
-import java.util.Date;
-
-/**
- * 描述 : MailService
- *
- * @author Administrator
- */
-@Service
-public class MailService {
-
- /**
- * 描述 : mailSender
- */
- @Autowired
- private JavaMailSender mailSender;
-
- /**
- * 描述 : mailProperties
- */
- @Autowired
- private MailProperties mailProperties;
-
- /**
- * 描述 : rms
- */
- @Autowired
- private Rms rms;
-
- /**
- * 描述 : 发送邮件
- *
- * @param mailInfo 邮件信息
- * @throws MessagingException 异常
- */
- public void send(MailInfo mailInfo) throws MessagingException { //NOSONAR
- //创建消息
- MimeMessage message = mailSender.createMimeMessage();
- //判断是否有附件
- boolean multipart = CollectionUtils.isNotEmpty(mailInfo.getAttachments());
- //构造消息
- MimeMessageHelper helper = new MimeMessageHelper(message, multipart);
- //必要字段
- helper.setFrom(IDN.toASCII(mailProperties.getFrom()));
- helper.setSentDate(new Date());
- helper.setTo(Arrays.stream(mailInfo.getTo()).map(IDN::toASCII).toArray(String[]::new));
- helper.setSubject(mailInfo.getSubject());
- helper.setText(mailInfo.getText(), mailInfo.getIsHtmlText());
- //秘密抄送
- if (ArrayUtils.isNotEmpty(mailInfo.getBcc())) {
- helper.setBcc(Arrays.stream(mailInfo.getBcc()).map(IDN::toASCII).toArray(String[]::new));
- }
- //抄送
- if (ArrayUtils.isNotEmpty(mailInfo.getCc())) {
- helper.setCc(Arrays.stream(mailInfo.getCc()).map(IDN::toASCII).toArray(String[]::new));
- }
- //优先级
- if (mailInfo.getPriority() != null) {
- helper.setPriority(mailInfo.getPriority());
- }
- //邮件回执
- if (StringUtils.isNotBlank(mailInfo.getReplyTo())) {
- helper.setReplyTo(mailInfo.getReplyTo());
- }
- //处理静态资源
- if (CollectionUtils.isNotEmpty(mailInfo.getInlines())) {
- for (InlineInfo inlineInfo : mailInfo.getInlines()) {
- //判空
- if (StringUtils.isBlank(inlineInfo.getFileId())
- || StringUtils.isBlank(inlineInfo.getName())) {
- throw new MailException("inlineInfo fileid and name are not be null");
- }
- //获得必要参数
- String fileId = inlineInfo.getFileId();
- String name = inlineInfo.getName();
- //构造参数
- FileParam fileParam = new FileParam();
- fileParam.setId(fileId);
- //获得文件
- ResponseEntity file =
- rms.call("FILE_3", fileParam, null, new ParameterizedTypeReference() {
- }, null);
- //构造resource
- ByteArrayResource bar = new ByteArrayResource(file.getBody());
- //添加静态资源
- helper.addInline(name, bar);
- }
- }
- //处理附件
- if (CollectionUtils.isNotEmpty(mailInfo.getAttachments())) {
- for (AttachmentInfo attachment : mailInfo.getAttachments()) {
- if (StringUtils.isNotBlank(attachment.getFileId())) {
- //获得必要参数
- String fileId = attachment.getFileId();
- String name = attachment.getName();
- //构造参数
- FileParam fileParam = new FileParam();
- fileParam.setId(fileId);
- //获得文件信息
- ResponseEntity> fileInfo = rms.call("FILE_4", fileParam, null,
- new ParameterizedTypeReference>() {
- }, null);
- //获得文件
- ResponseEntity file =
- rms.call("FILE_3", fileParam, null, new ParameterizedTypeReference() {
- }, null);
- //构造resource
- ByteArrayResource bar = new ByteArrayResource(file.getBody());
- //判断附件名称
- name = StringUtils.isNoneBlank(name) ? name : fileInfo.getBody().getResult().getName();
- //添加附件
- helper.addAttachment(name, bar);
- }
- }
- }
- //发送消息
- mailSender.send(message);
- }
-
-}
+/**
+ * MailService.java
+ * Created at 2017-05-28
+ * Created by Administrator
+ * Copyright (C) 2016 itkk.org, All rights reserved.
+ */
+package org.itkk.udf.mail.service;
+
+import org.apache.commons.collections4.CollectionUtils;
+import org.apache.commons.lang3.ArrayUtils;
+import org.apache.commons.lang3.StringUtils;
+import org.itkk.udf.core.RestResponse;
+import org.itkk.udf.core.domain.file.FileInfo;
+import org.itkk.udf.core.domain.file.FileParam;
+import org.itkk.udf.core.domain.mail.AttachmentInfo;
+import org.itkk.udf.core.domain.mail.InlineInfo;
+import org.itkk.udf.core.domain.mail.MailInfo;
+import org.itkk.udf.mail.MailException;
+import org.itkk.udf.mail.MailProperties;
+import org.itkk.udf.rms.Rms;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.core.ParameterizedTypeReference;
+import org.springframework.core.io.ByteArrayResource;
+import org.springframework.http.ResponseEntity;
+import org.springframework.mail.javamail.JavaMailSender;
+import org.springframework.mail.javamail.MimeMessageHelper;
+import org.springframework.stereotype.Service;
+
+import javax.mail.MessagingException;
+import javax.mail.internet.MimeMessage;
+import java.net.IDN;
+import java.util.Arrays;
+import java.util.Date;
+
+/**
+ * 描述 : MailService
+ *
+ * @author Administrator
+ */
+@Service
+public class MailService {
+
+ /**
+ * 描述 : mailSender
+ */
+ @Autowired
+ private JavaMailSender mailSender;
+
+ /**
+ * 描述 : mailProperties
+ */
+ @Autowired
+ private MailProperties mailProperties;
+
+ /**
+ * 描述 : rms
+ */
+ @Autowired
+ private Rms rms;
+
+ /**
+ * 描述 : 发送邮件
+ *
+ * @param mailInfo 邮件信息
+ * @throws MessagingException 异常
+ */
+ public void send(MailInfo mailInfo) throws MessagingException { //NOSONAR
+ //创建消息
+ MimeMessage message = mailSender.createMimeMessage();
+ //判断是否有附件
+ boolean multipart = CollectionUtils.isNotEmpty(mailInfo.getAttachments());
+ //构造消息
+ MimeMessageHelper helper = new MimeMessageHelper(message, multipart);
+ //必要字段
+ helper.setFrom(IDN.toASCII(mailProperties.getFrom()));
+ helper.setSentDate(new Date());
+ helper.setTo(Arrays.stream(mailInfo.getTo()).map(IDN::toASCII).toArray(String[]::new));
+ helper.setSubject(mailInfo.getSubject());
+ helper.setText(mailInfo.getText(), mailInfo.getIsHtmlText());
+ //秘密抄送
+ if (ArrayUtils.isNotEmpty(mailInfo.getBcc())) {
+ helper.setBcc(Arrays.stream(mailInfo.getBcc()).map(IDN::toASCII).toArray(String[]::new));
+ }
+ //抄送
+ if (ArrayUtils.isNotEmpty(mailInfo.getCc())) {
+ helper.setCc(Arrays.stream(mailInfo.getCc()).map(IDN::toASCII).toArray(String[]::new));
+ }
+ //优先级
+ if (mailInfo.getPriority() != null) {
+ helper.setPriority(mailInfo.getPriority());
+ }
+ //邮件回执
+ if (StringUtils.isNotBlank(mailInfo.getReplyTo())) {
+ helper.setReplyTo(mailInfo.getReplyTo());
+ }
+ //处理静态资源
+ if (CollectionUtils.isNotEmpty(mailInfo.getInlines())) {
+ for (InlineInfo inlineInfo : mailInfo.getInlines()) {
+ //判空
+ if (StringUtils.isBlank(inlineInfo.getFileId())
+ || StringUtils.isBlank(inlineInfo.getName())) {
+ throw new MailException("inlineInfo fileid and name are not be null");
+ }
+ //获得必要参数
+ String fileId = inlineInfo.getFileId();
+ String name = inlineInfo.getName();
+ //构造参数
+ FileParam fileParam = new FileParam();
+ fileParam.setId(fileId);
+ //获得文件
+ ResponseEntity file =
+ rms.call("FILE_3", fileParam, null, new ParameterizedTypeReference() {
+ }, null);
+ //构造resource
+ ByteArrayResource bar = new ByteArrayResource(file.getBody());
+ //添加静态资源
+ helper.addInline(name, bar);
+ }
+ }
+ //处理附件
+ if (CollectionUtils.isNotEmpty(mailInfo.getAttachments())) {
+ for (AttachmentInfo attachment : mailInfo.getAttachments()) {
+ if (StringUtils.isNotBlank(attachment.getFileId())) {
+ //获得必要参数
+ String fileId = attachment.getFileId();
+ String name = attachment.getName();
+ //构造参数
+ FileParam fileParam = new FileParam();
+ fileParam.setId(fileId);
+ //获得文件信息
+ ResponseEntity> fileInfo = rms.call("FILE_4", fileParam, null,
+ new ParameterizedTypeReference>() {
+ }, null);
+ //获得文件
+ ResponseEntity file =
+ rms.call("FILE_3", fileParam, null, new ParameterizedTypeReference() {
+ }, null);
+ //构造resource
+ ByteArrayResource bar = new ByteArrayResource(file.getBody());
+ //判断附件名称
+ name = StringUtils.isNoneBlank(name) ? name : fileInfo.getBody().getResult().getName();
+ //添加附件
+ helper.addAttachment(name, bar);
+ }
+ }
+ }
+ //发送消息
+ mailSender.send(message);
+ }
+
+}
diff --git a/udf-starter-mail/src/main/java/org/itkk/udf/mail/web/IMailController.java b/udf-stater/udf-starter-mail/src/main/java/org/itkk/udf/mail/web/IMailController.java
similarity index 97%
rename from udf-starter-mail/src/main/java/org/itkk/udf/mail/web/IMailController.java
rename to udf-stater/udf-starter-mail/src/main/java/org/itkk/udf/mail/web/IMailController.java
index 7472e9e..ee1048a 100644
--- a/udf-starter-mail/src/main/java/org/itkk/udf/mail/web/IMailController.java
+++ b/udf-stater/udf-starter-mail/src/main/java/org/itkk/udf/mail/web/IMailController.java
@@ -1,53 +1,53 @@
-/**
- * IMailController.java
- * Created at 2017-05-26
- * Created by Administrator
- * Copyright (C) 2016 itkk.org, All rights reserved.
- */
-package org.itkk.udf.mail.web;
-
-import io.swagger.annotations.Api;
-import io.swagger.annotations.ApiImplicitParam;
-import io.swagger.annotations.ApiImplicitParams;
-import io.swagger.annotations.ApiOperation;
-import org.itkk.udf.core.RestResponse;
-import org.itkk.udf.core.domain.mail.MailInfo;
-import org.springframework.validation.BindingResult;
-import org.springframework.web.bind.annotation.RequestBody;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RequestMethod;
-
-import javax.mail.MessagingException;
-import javax.validation.Valid;
-
-/**
- * 描述 : IMailController
- *
- * @author Administrator
- */
-@Api(value = "邮件服务", consumes = "application/json", produces = "application/json",
- protocols = "http")
-@RequestMapping(value = "/service/mail")
-public interface IMailController { //NOSONAR
-
- /**
- * 描述 : 发送邮件
- *
- * @param mailInfo 邮件信息
- * @param result 校验结果
- * @return 发送结果
- * @throws MessagingException 异常
- */
- @ApiOperation(value = "MAIL_1", notes = "发送邮件
注意:请填写正常内容,不要有test,helloword之类的词,否则会被设定为垃圾邮件")
- @ApiImplicitParams({
- @ApiImplicitParam(paramType = "header", name = "rmsApplicationName", value = "rms应用名称",
- required = true, dataType = "string"),
- @ApiImplicitParam(paramType = "header", name = "rmsSign", value = "rms认证秘钥", required = true,
- dataType = "string"),
- @ApiImplicitParam(paramType = "header", name = "rmsServiceCode", value = "rms接口编号",
- required = true, dataType = "string")})
- @RequestMapping(method = RequestMethod.POST)
- RestResponse send(@Valid @RequestBody MailInfo mailInfo, BindingResult result)
- throws MessagingException;
-
-}
+/**
+ * IMailController.java
+ * Created at 2017-05-26
+ * Created by Administrator
+ * Copyright (C) 2016 itkk.org, All rights reserved.
+ */
+package org.itkk.udf.mail.web;
+
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiImplicitParam;
+import io.swagger.annotations.ApiImplicitParams;
+import io.swagger.annotations.ApiOperation;
+import org.itkk.udf.core.RestResponse;
+import org.itkk.udf.core.domain.mail.MailInfo;
+import org.springframework.validation.BindingResult;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestMethod;
+
+import javax.mail.MessagingException;
+import javax.validation.Valid;
+
+/**
+ * 描述 : IMailController
+ *
+ * @author Administrator
+ */
+@Api(value = "邮件服务", consumes = "application/json", produces = "application/json",
+ protocols = "http")
+@RequestMapping(value = "/service/mail")
+public interface IMailController { //NOSONAR
+
+ /**
+ * 描述 : 发送邮件
+ *
+ * @param mailInfo 邮件信息
+ * @param result 校验结果
+ * @return 发送结果
+ * @throws MessagingException 异常
+ */
+ @ApiOperation(value = "MAIL_1", notes = "发送邮件
注意:请填写正常内容,不要有test,helloword之类的词,否则会被设定为垃圾邮件")
+ @ApiImplicitParams({
+ @ApiImplicitParam(paramType = "header", name = "rmsApplicationName", value = "rms应用名称",
+ required = true, dataType = "string"),
+ @ApiImplicitParam(paramType = "header", name = "rmsSign", value = "rms认证秘钥", required = true,
+ dataType = "string"),
+ @ApiImplicitParam(paramType = "header", name = "rmsServiceCode", value = "rms接口编号",
+ required = true, dataType = "string")})
+ @RequestMapping(method = RequestMethod.POST)
+ RestResponse send(@Valid @RequestBody MailInfo mailInfo, BindingResult result)
+ throws MessagingException;
+
+}
diff --git a/udf-starter-mail/src/main/java/org/itkk/udf/mail/web/MailController.java b/udf-stater/udf-starter-mail/src/main/java/org/itkk/udf/mail/web/MailController.java
similarity index 96%
rename from udf-starter-mail/src/main/java/org/itkk/udf/mail/web/MailController.java
rename to udf-stater/udf-starter-mail/src/main/java/org/itkk/udf/mail/web/MailController.java
index 33b4881..7937358 100644
--- a/udf-starter-mail/src/main/java/org/itkk/udf/mail/web/MailController.java
+++ b/udf-stater/udf-starter-mail/src/main/java/org/itkk/udf/mail/web/MailController.java
@@ -1,49 +1,49 @@
-/**
- * MailController.java
- * Created at 2017-05-26
- * Created by Administrator
- * Copyright (C) 2016 itkk.org, All rights reserved.
- */
-package org.itkk.udf.mail.web;
-
-import org.itkk.udf.core.RestResponse;
-import org.itkk.udf.core.domain.mail.MailInfo;
-import org.itkk.udf.core.exception.ParameterValidException;
-import org.itkk.udf.mail.service.MailService;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.validation.BindingResult;
-import org.springframework.web.bind.annotation.RequestBody;
-import org.springframework.web.bind.annotation.RestController;
-
-import javax.mail.MessagingException;
-import javax.validation.Valid;
-
-/**
- * 描述 : MailController
- *
- * @author Administrator
- */
-@RestController
-public class MailController implements IMailController {
-
- /**
- * 描述 : mailService
- */
- @Autowired
- private MailService mailService;
-
- @Override
- public RestResponse send(@Valid @RequestBody MailInfo mailInfo, BindingResult result)
- throws MessagingException {
- //校验
- if (result.hasErrors()) {
- throw new ParameterValidException("校验失败",
- result.getAllErrors());
- }
- //发送
- mailService.send(mailInfo);
- //返回
- return new RestResponse<>();
- }
-
-}
+/**
+ * MailController.java
+ * Created at 2017-05-26
+ * Created by Administrator
+ * Copyright (C) 2016 itkk.org, All rights reserved.
+ */
+package org.itkk.udf.mail.web;
+
+import org.itkk.udf.core.RestResponse;
+import org.itkk.udf.core.domain.mail.MailInfo;
+import org.itkk.udf.core.exception.ParameterValidException;
+import org.itkk.udf.mail.service.MailService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.validation.BindingResult;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RestController;
+
+import javax.mail.MessagingException;
+import javax.validation.Valid;
+
+/**
+ * 描述 : MailController
+ *
+ * @author Administrator
+ */
+@RestController
+public class MailController implements IMailController {
+
+ /**
+ * 描述 : mailService
+ */
+ @Autowired
+ private MailService mailService;
+
+ @Override
+ public RestResponse send(@Valid @RequestBody MailInfo mailInfo, BindingResult result)
+ throws MessagingException {
+ //校验
+ if (result.hasErrors()) {
+ throw new ParameterValidException("校验失败",
+ result.getAllErrors());
+ }
+ //发送
+ mailService.send(mailInfo);
+ //返回
+ return new RestResponse<>();
+ }
+
+}
diff --git a/udf-starter-qrcode/pom.xml b/udf-stater/udf-starter-qrcode/pom.xml
similarity index 100%
rename from udf-starter-qrcode/pom.xml
rename to udf-stater/udf-starter-qrcode/pom.xml
diff --git a/udf-starter-qrcode/src/main/java/org/itkk/udf/qrcode/domain/QrCodeRequest.java b/udf-stater/udf-starter-qrcode/src/main/java/org/itkk/udf/qrcode/domain/QrCodeRequest.java
similarity index 100%
rename from udf-starter-qrcode/src/main/java/org/itkk/udf/qrcode/domain/QrCodeRequest.java
rename to udf-stater/udf-starter-qrcode/src/main/java/org/itkk/udf/qrcode/domain/QrCodeRequest.java
diff --git a/udf-starter-qrcode/src/main/java/org/itkk/udf/qrcode/option/BgImgOptions.java b/udf-stater/udf-starter-qrcode/src/main/java/org/itkk/udf/qrcode/option/BgImgOptions.java
similarity index 100%
rename from udf-starter-qrcode/src/main/java/org/itkk/udf/qrcode/option/BgImgOptions.java
rename to udf-stater/udf-starter-qrcode/src/main/java/org/itkk/udf/qrcode/option/BgImgOptions.java
diff --git a/udf-starter-qrcode/src/main/java/org/itkk/udf/qrcode/option/BgImgStyle.java b/udf-stater/udf-starter-qrcode/src/main/java/org/itkk/udf/qrcode/option/BgImgStyle.java
similarity index 100%
rename from udf-starter-qrcode/src/main/java/org/itkk/udf/qrcode/option/BgImgStyle.java
rename to udf-stater/udf-starter-qrcode/src/main/java/org/itkk/udf/qrcode/option/BgImgStyle.java
diff --git a/udf-starter-qrcode/src/main/java/org/itkk/udf/qrcode/option/BitMatrixEx.java b/udf-stater/udf-starter-qrcode/src/main/java/org/itkk/udf/qrcode/option/BitMatrixEx.java
similarity index 100%
rename from udf-starter-qrcode/src/main/java/org/itkk/udf/qrcode/option/BitMatrixEx.java
rename to udf-stater/udf-starter-qrcode/src/main/java/org/itkk/udf/qrcode/option/BitMatrixEx.java
diff --git a/udf-starter-qrcode/src/main/java/org/itkk/udf/qrcode/option/DetectOptions.java b/udf-stater/udf-starter-qrcode/src/main/java/org/itkk/udf/qrcode/option/DetectOptions.java
similarity index 100%
rename from udf-starter-qrcode/src/main/java/org/itkk/udf/qrcode/option/DetectOptions.java
rename to udf-stater/udf-starter-qrcode/src/main/java/org/itkk/udf/qrcode/option/DetectOptions.java
diff --git a/udf-starter-qrcode/src/main/java/org/itkk/udf/qrcode/option/DrawOptions.java b/udf-stater/udf-starter-qrcode/src/main/java/org/itkk/udf/qrcode/option/DrawOptions.java
similarity index 100%
rename from udf-starter-qrcode/src/main/java/org/itkk/udf/qrcode/option/DrawOptions.java
rename to udf-stater/udf-starter-qrcode/src/main/java/org/itkk/udf/qrcode/option/DrawOptions.java
diff --git a/udf-starter-qrcode/src/main/java/org/itkk/udf/qrcode/option/DrawStyle.java b/udf-stater/udf-starter-qrcode/src/main/java/org/itkk/udf/qrcode/option/DrawStyle.java
similarity index 100%
rename from udf-starter-qrcode/src/main/java/org/itkk/udf/qrcode/option/DrawStyle.java
rename to udf-stater/udf-starter-qrcode/src/main/java/org/itkk/udf/qrcode/option/DrawStyle.java
diff --git a/udf-starter-qrcode/src/main/java/org/itkk/udf/qrcode/option/ExpandType.java b/udf-stater/udf-starter-qrcode/src/main/java/org/itkk/udf/qrcode/option/ExpandType.java
similarity index 100%
rename from udf-starter-qrcode/src/main/java/org/itkk/udf/qrcode/option/ExpandType.java
rename to udf-stater/udf-starter-qrcode/src/main/java/org/itkk/udf/qrcode/option/ExpandType.java
diff --git a/udf-starter-qrcode/src/main/java/org/itkk/udf/qrcode/option/LogoOptions.java b/udf-stater/udf-starter-qrcode/src/main/java/org/itkk/udf/qrcode/option/LogoOptions.java
similarity index 100%
rename from udf-starter-qrcode/src/main/java/org/itkk/udf/qrcode/option/LogoOptions.java
rename to udf-stater/udf-starter-qrcode/src/main/java/org/itkk/udf/qrcode/option/LogoOptions.java
diff --git a/udf-starter-qrcode/src/main/java/org/itkk/udf/qrcode/option/LogoStyle.java b/udf-stater/udf-starter-qrcode/src/main/java/org/itkk/udf/qrcode/option/LogoStyle.java
similarity index 100%
rename from udf-starter-qrcode/src/main/java/org/itkk/udf/qrcode/option/LogoStyle.java
rename to udf-stater/udf-starter-qrcode/src/main/java/org/itkk/udf/qrcode/option/LogoStyle.java
diff --git a/udf-starter-qrcode/src/main/java/org/itkk/udf/qrcode/option/QrCodeOptions.java b/udf-stater/udf-starter-qrcode/src/main/java/org/itkk/udf/qrcode/option/QrCodeOptions.java
similarity index 100%
rename from udf-starter-qrcode/src/main/java/org/itkk/udf/qrcode/option/QrCodeOptions.java
rename to udf-stater/udf-starter-qrcode/src/main/java/org/itkk/udf/qrcode/option/QrCodeOptions.java
diff --git a/udf-starter-qrcode/src/main/java/org/itkk/udf/qrcode/service/QrcodeService.java b/udf-stater/udf-starter-qrcode/src/main/java/org/itkk/udf/qrcode/service/QrcodeService.java
similarity index 100%
rename from udf-starter-qrcode/src/main/java/org/itkk/udf/qrcode/service/QrcodeService.java
rename to udf-stater/udf-starter-qrcode/src/main/java/org/itkk/udf/qrcode/service/QrcodeService.java
diff --git a/udf-starter-qrcode/src/main/java/org/itkk/udf/qrcode/utils/Base64Util.java b/udf-stater/udf-starter-qrcode/src/main/java/org/itkk/udf/qrcode/utils/Base64Util.java
similarity index 100%
rename from udf-starter-qrcode/src/main/java/org/itkk/udf/qrcode/utils/Base64Util.java
rename to udf-stater/udf-starter-qrcode/src/main/java/org/itkk/udf/qrcode/utils/Base64Util.java
diff --git a/udf-starter-qrcode/src/main/java/org/itkk/udf/qrcode/utils/ColorUtil.java b/udf-stater/udf-starter-qrcode/src/main/java/org/itkk/udf/qrcode/utils/ColorUtil.java
similarity index 100%
rename from udf-starter-qrcode/src/main/java/org/itkk/udf/qrcode/utils/ColorUtil.java
rename to udf-stater/udf-starter-qrcode/src/main/java/org/itkk/udf/qrcode/utils/ColorUtil.java
diff --git a/udf-starter-qrcode/src/main/java/org/itkk/udf/qrcode/utils/HttpUtil.java b/udf-stater/udf-starter-qrcode/src/main/java/org/itkk/udf/qrcode/utils/HttpUtil.java
similarity index 100%
rename from udf-starter-qrcode/src/main/java/org/itkk/udf/qrcode/utils/HttpUtil.java
rename to udf-stater/udf-starter-qrcode/src/main/java/org/itkk/udf/qrcode/utils/HttpUtil.java
diff --git a/udf-starter-qrcode/src/main/java/org/itkk/udf/qrcode/utils/ImageUtil.java b/udf-stater/udf-starter-qrcode/src/main/java/org/itkk/udf/qrcode/utils/ImageUtil.java
similarity index 100%
rename from udf-starter-qrcode/src/main/java/org/itkk/udf/qrcode/utils/ImageUtil.java
rename to udf-stater/udf-starter-qrcode/src/main/java/org/itkk/udf/qrcode/utils/ImageUtil.java
diff --git a/udf-starter-qrcode/src/main/java/org/itkk/udf/qrcode/utils/NumUtil.java b/udf-stater/udf-starter-qrcode/src/main/java/org/itkk/udf/qrcode/utils/NumUtil.java
similarity index 100%
rename from udf-starter-qrcode/src/main/java/org/itkk/udf/qrcode/utils/NumUtil.java
rename to udf-stater/udf-starter-qrcode/src/main/java/org/itkk/udf/qrcode/utils/NumUtil.java
diff --git a/udf-starter-qrcode/src/main/java/org/itkk/udf/qrcode/utils/QrCodeUtil.java b/udf-stater/udf-starter-qrcode/src/main/java/org/itkk/udf/qrcode/utils/QrCodeUtil.java
similarity index 100%
rename from udf-starter-qrcode/src/main/java/org/itkk/udf/qrcode/utils/QrCodeUtil.java
rename to udf-stater/udf-starter-qrcode/src/main/java/org/itkk/udf/qrcode/utils/QrCodeUtil.java
diff --git a/udf-starter-qrcode/src/main/java/org/itkk/udf/qrcode/web/IQrcodeController.java b/udf-stater/udf-starter-qrcode/src/main/java/org/itkk/udf/qrcode/web/IQrcodeController.java
similarity index 100%
rename from udf-starter-qrcode/src/main/java/org/itkk/udf/qrcode/web/IQrcodeController.java
rename to udf-stater/udf-starter-qrcode/src/main/java/org/itkk/udf/qrcode/web/IQrcodeController.java
diff --git a/udf-starter-qrcode/src/main/java/org/itkk/udf/qrcode/web/QrcodeController.java b/udf-stater/udf-starter-qrcode/src/main/java/org/itkk/udf/qrcode/web/QrcodeController.java
similarity index 100%
rename from udf-starter-qrcode/src/main/java/org/itkk/udf/qrcode/web/QrcodeController.java
rename to udf-stater/udf-starter-qrcode/src/main/java/org/itkk/udf/qrcode/web/QrcodeController.java
diff --git a/udf-starter-qrcode/src/test/java/org/itkk/udf/qrcode/QrCodeServiceTest.java b/udf-stater/udf-starter-qrcode/src/test/java/org/itkk/udf/qrcode/QrCodeServiceTest.java
similarity index 100%
rename from udf-starter-qrcode/src/test/java/org/itkk/udf/qrcode/QrCodeServiceTest.java
rename to udf-stater/udf-starter-qrcode/src/test/java/org/itkk/udf/qrcode/QrCodeServiceTest.java
diff --git a/udf-starter-rms/pom.xml b/udf-stater/udf-starter-rms/pom.xml
similarity index 100%
rename from udf-starter-rms/pom.xml
rename to udf-stater/udf-starter-rms/pom.xml
diff --git a/udf-starter-rms/src/main/java/org/itkk/udf/rms/Constant.java b/udf-stater/udf-starter-rms/src/main/java/org/itkk/udf/rms/Constant.java
similarity index 95%
rename from udf-starter-rms/src/main/java/org/itkk/udf/rms/Constant.java
rename to udf-stater/udf-starter-rms/src/main/java/org/itkk/udf/rms/Constant.java
index db6f03c..371b428 100644
--- a/udf-starter-rms/src/main/java/org/itkk/udf/rms/Constant.java
+++ b/udf-stater/udf-starter-rms/src/main/java/org/itkk/udf/rms/Constant.java
@@ -1,73 +1,73 @@
-/**
- * Constant.java
- * Created at 2017-04-24
- * Created by Administrator
- * Copyright (C) 2016 itkk.org, All rights reserved.
- */
-package org.itkk.udf.rms;
-
-import org.apache.commons.codec.digest.DigestUtils;
-
-import java.text.SimpleDateFormat;
-import java.util.Date;
-
-/**
- * 描述 : 常量
- *
- * @author Administrator
- */
-public class Constant {
-
- /**
- * 描述 : 头信息(rms应用名称)
- */
- public static final String HEADER_RMS_APPLICATION_NAME_CODE = "rmsApplicationName";
-
- /**
- * 描述 : 头信息(rms认证秘钥)
- */
- public static final String HEADER_RMS_SIGN_CODE = "rmsSign";
-
- /**
- * 描述 : 头信息(rms接口编号)
- */
- public static final String HEADER_SERVICE_CODE_CODE = "rmsServiceCode";
-
- /**
- * 描述 : 日期格式
- */
- public static final String DATA_FORMAT = "yyyy-MM-dd'T'HH";
-
- /**
- * 描述 : http头
- */
- public static final String HTTP = "http://";
-
- /**
- * 描述 : https头
- */
- public static final String HTTPS = "https://";
-
- /**
- * 描述 : 私有化构造函数
- */
- private Constant() {
-
- }
-
- /**
- * 描述 : 计算sign
- *
- * @param rmsApplicationName 系统标志
- * @param secret 系统私钥
- * @return sign
- */
- public static String sign(String rmsApplicationName, String secret) {
- final String split = "_";
- StringBuilder sb = new StringBuilder();
- sb.append(rmsApplicationName).append(split).append(secret).append(split)
- .append(new SimpleDateFormat(DATA_FORMAT).format(new Date()));
- return DigestUtils.md5Hex(sb.toString());
- }
-
-}
+/**
+ * Constant.java
+ * Created at 2017-04-24
+ * Created by Administrator
+ * Copyright (C) 2016 itkk.org, All rights reserved.
+ */
+package org.itkk.udf.rms;
+
+import org.apache.commons.codec.digest.DigestUtils;
+
+import java.text.SimpleDateFormat;
+import java.util.Date;
+
+/**
+ * 描述 : 常量
+ *
+ * @author Administrator
+ */
+public class Constant {
+
+ /**
+ * 描述 : 头信息(rms应用名称)
+ */
+ public static final String HEADER_RMS_APPLICATION_NAME_CODE = "rmsApplicationName";
+
+ /**
+ * 描述 : 头信息(rms认证秘钥)
+ */
+ public static final String HEADER_RMS_SIGN_CODE = "rmsSign";
+
+ /**
+ * 描述 : 头信息(rms接口编号)
+ */
+ public static final String HEADER_SERVICE_CODE_CODE = "rmsServiceCode";
+
+ /**
+ * 描述 : 日期格式
+ */
+ public static final String DATA_FORMAT = "yyyy-MM-dd'T'HH";
+
+ /**
+ * 描述 : http头
+ */
+ public static final String HTTP = "http://";
+
+ /**
+ * 描述 : https头
+ */
+ public static final String HTTPS = "https://";
+
+ /**
+ * 描述 : 私有化构造函数
+ */
+ private Constant() {
+
+ }
+
+ /**
+ * 描述 : 计算sign
+ *
+ * @param rmsApplicationName 系统标志
+ * @param secret 系统私钥
+ * @return sign
+ */
+ public static String sign(String rmsApplicationName, String secret) {
+ final String split = "_";
+ StringBuilder sb = new StringBuilder();
+ sb.append(rmsApplicationName).append(split).append(secret).append(split)
+ .append(new SimpleDateFormat(DATA_FORMAT).format(new Date()));
+ return DigestUtils.md5Hex(sb.toString());
+ }
+
+}
diff --git a/udf-starter-rms/src/main/java/org/itkk/udf/rms/Rms.java b/udf-stater/udf-starter-rms/src/main/java/org/itkk/udf/rms/Rms.java
similarity index 97%
rename from udf-starter-rms/src/main/java/org/itkk/udf/rms/Rms.java
rename to udf-stater/udf-starter-rms/src/main/java/org/itkk/udf/rms/Rms.java
index 75694d9..437fd51 100644
--- a/udf-starter-rms/src/main/java/org/itkk/udf/rms/Rms.java
+++ b/udf-stater/udf-starter-rms/src/main/java/org/itkk/udf/rms/Rms.java
@@ -1,233 +1,233 @@
-/**
- * Rms.java
- * Created at 2017-04-24
- * Created by Administrator
- * Copyright (C) 2016 itkk.org, All rights reserved.
- */
-package org.itkk.udf.rms;
-
-import lombok.extern.slf4j.Slf4j;
-import org.apache.commons.collections4.MapUtils;
-import org.apache.commons.lang3.StringUtils;
-import org.itkk.udf.core.exception.PermissionException;
-import org.itkk.udf.rms.meta.ApplicationMeta;
-import org.itkk.udf.rms.meta.ServiceMeta;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.beans.factory.annotation.Qualifier;
-import org.springframework.beans.factory.annotation.Value;
-import org.springframework.core.ParameterizedTypeReference;
-import org.springframework.http.HttpEntity;
-import org.springframework.http.HttpHeaders;
-import org.springframework.http.HttpMethod;
-import org.springframework.http.ResponseEntity;
-import org.springframework.stereotype.Component;
-import org.springframework.web.client.RestTemplate;
-
-import java.util.HashMap;
-import java.util.Map;
-
-/**
- * 描述 : 远程服务
- *
- * @author Administrator
- */
-@Component
-@Slf4j
-public class Rms {
-
- /**
- * 描述 : 应用名称
- */
- @Value("${spring.application.name}")
- private String springApplicationName;
-
- /**
- * 描述 : restTemplate
- */
- @Autowired
- private RestTemplate restTemplate;
-
- /**
- * externalRestTemplate
- */
- @Autowired
- @Qualifier("externalRestTemplate")
- private RestTemplate externalRestTemplate;
-
- /**
- * 描述 : 配置
- */
- @Autowired
- private RmsProperties rmsProperties;
-
- /**
- * 远程服务调用 (不走ribbon)
- *
- * @param host 地址
- * @param port 端口
- * @param serviceCode 服务代码
- * @param headers headers
- * @param input 输入参数
- * @param uriParam uri参数
- * @param responseType 返回类型
- * @param uriVariables rest参数
- * @param 输入类型
- * @param 输出类型
- * @return 服务结果
- */
- public ResponseEntity call(String host, int port, String serviceCode, HttpHeaders headers, I input, String uriParam, ParameterizedTypeReference responseType, Map uriVariables) { //NOSONAR
- //客户端权限验证
- verification(serviceCode);
- //获取服务元数据
- ServiceMeta serviceMeta = rmsProperties.getService().get(serviceCode);
- //构建请求路径
- String path = (serviceMeta.getIsHttps() ? Constant.HTTPS : Constant.HTTP).concat(host).concat(":").concat(String.valueOf(port)).concat(serviceMeta.getUri());
- //获得请求方法
- String method = getRmsMethod(serviceCode);
- //拼装路径参数
- if (StringUtils.isNotBlank(uriParam)) {
- path += uriParam;
- }
- //构建请求头
- HttpHeaders httpHeaders = buildSystemTagHeaders(serviceCode);
- //添加请求头
- if (MapUtils.isNotEmpty(headers)) {
- httpHeaders.putAll(headers);
- }
- //构建请求消息体
- HttpEntity requestEntity = new HttpEntity<>(input, httpHeaders);
- //请求并且返回
- log.debug("rms url : {} , method : {} ", path, method);
- return externalRestTemplate.exchange(path, HttpMethod.resolve(method), requestEntity, responseType, uriVariables != null ? uriVariables : new HashMap());
- }
-
- /**
- * 远程服务调用 (不走ribbon)
- *
- * @param host 地址
- * @param port 端口
- * @param serviceCode 服务代码
- * @param input 输入参数
- * @param uriParam uri参数
- * @param responseType 返回类型
- * @param uriVariables rest参数
- * @param 输入类型
- * @param 输出类型
- * @return 服务结果
- */
- public ResponseEntity call(String host, int port, String serviceCode, I input, String uriParam, ParameterizedTypeReference responseType, Map uriVariables) {
- return this.call(host, port, serviceCode, null, input, uriParam, responseType, uriVariables);
- }
-
- /**
- * 描述 : 远程服务调用
- *
- * @param serviceCode 服务代码
- * @param headers headers
- * @param input 输入参数
- * @param uriParam uri参数
- * @param responseType 返回类型
- * @param uriVariables rest参数
- * @param 输入类型
- * @param 输出类型
- * @return 服务结果
- */
- public ResponseEntity call(String serviceCode, HttpHeaders headers, I input, String uriParam, ParameterizedTypeReference responseType, Map uriVariables) {
- //客户端权限验证
- verification(serviceCode);
- //构建请求路径
- String path = getRmsUrl(serviceCode);
- //获得请求方法
- String method = getRmsMethod(serviceCode);
- //拼装路径参数
- if (StringUtils.isNotBlank(uriParam)) {
- path += uriParam;
- }
- //构建请求头
- HttpHeaders httpHeaders = buildSystemTagHeaders(serviceCode);
- //添加请求头
- if (MapUtils.isNotEmpty(headers)) {
- httpHeaders.putAll(headers);
- }
- //构建请求消息体
- HttpEntity requestEntity = new HttpEntity<>(input, httpHeaders);
- //请求并且返回
- log.debug("rms url : {} , method : {} ", path, method);
- return restTemplate.exchange(path, HttpMethod.resolve(method), requestEntity, responseType, uriVariables != null ? uriVariables : new HashMap());
- }
-
- /**
- * 描述 : 远程服务调用
- *
- * @param serviceCode 服务代码
- * @param input 输入参数
- * @param uriParam uri参数
- * @param responseType 返回类型
- * @param uriVariables rest参数
- * @param 输入类型
- * @param 输出类型
- * @return 服务结果
- */
- public ResponseEntity call(String serviceCode, I input, String uriParam, ParameterizedTypeReference responseType, Map uriVariables) {
- return this.call(serviceCode, null, input, uriParam, responseType, uriVariables);
- }
-
- /**
- * 描述 : 构建请求头
- *
- * @param serviceCode 服务代码
- * @return 请求头
- */
- private HttpHeaders buildSystemTagHeaders(String serviceCode) {
- String secret = rmsProperties.getApplication().get(springApplicationName).getSecret();
- HttpHeaders headers = new HttpHeaders();
- headers.add(Constant.HEADER_RMS_APPLICATION_NAME_CODE, springApplicationName);
- headers.add(Constant.HEADER_RMS_SIGN_CODE, Constant.sign(springApplicationName, secret));
- headers.add(Constant.HEADER_SERVICE_CODE_CODE, serviceCode);
- return headers;
- }
-
- /**
- * 描述 : 客户端验证
- *
- * @param serviceCode 服务代码
- */
- private void verification(String serviceCode) {
- ApplicationMeta applicationMeta = rmsProperties.getApplication().get(springApplicationName);
- if (!applicationMeta.getAll()) {
- if (applicationMeta.getDisabled()) {
- throw new PermissionException(springApplicationName + " is disabled");
- }
- if (applicationMeta.getPurview().indexOf(serviceCode) == -1) {
- throw new PermissionException("no access to this servoceCode : " + serviceCode);
- }
- }
- }
-
- /**
- * 描述 : 获得请求方法
- *
- * @param serviceCode 服务代码
- * @return 请求方法
- */
- private String getRmsMethod(String serviceCode) {
- return rmsProperties.getService().get(serviceCode).getMethod();
- }
-
- /**
- * 描述 : 构造url;
- *
- * @param serviceCode 服务代码
- * @return url
- */
- private String getRmsUrl(String serviceCode) {
- //获取服务元数据
- ServiceMeta serviceMeta = rmsProperties.getService().get(serviceCode);
- //构建请求路径
- StringBuilder url = new StringBuilder(serviceMeta.getIsHttps() ? Constant.HTTPS : Constant.HTTP);
- url.append(rmsProperties.getApplication().get(serviceMeta.getOwner()).getServiceId());
- url.append(serviceMeta.getUri());
- return url.toString();
- }
-
-}
+/**
+ * Rms.java
+ * Created at 2017-04-24
+ * Created by Administrator
+ * Copyright (C) 2016 itkk.org, All rights reserved.
+ */
+package org.itkk.udf.rms;
+
+import lombok.extern.slf4j.Slf4j;
+import org.apache.commons.collections4.MapUtils;
+import org.apache.commons.lang3.StringUtils;
+import org.itkk.udf.core.exception.PermissionException;
+import org.itkk.udf.rms.meta.ApplicationMeta;
+import org.itkk.udf.rms.meta.ServiceMeta;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Qualifier;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.core.ParameterizedTypeReference;
+import org.springframework.http.HttpEntity;
+import org.springframework.http.HttpHeaders;
+import org.springframework.http.HttpMethod;
+import org.springframework.http.ResponseEntity;
+import org.springframework.stereotype.Component;
+import org.springframework.web.client.RestTemplate;
+
+import java.util.HashMap;
+import java.util.Map;
+
+/**
+ * 描述 : 远程服务
+ *
+ * @author Administrator
+ */
+@Component
+@Slf4j
+public class Rms {
+
+ /**
+ * 描述 : 应用名称
+ */
+ @Value("${spring.application.name}")
+ private String springApplicationName;
+
+ /**
+ * 描述 : restTemplate
+ */
+ @Autowired
+ private RestTemplate restTemplate;
+
+ /**
+ * externalRestTemplate
+ */
+ @Autowired
+ @Qualifier("externalRestTemplate")
+ private RestTemplate externalRestTemplate;
+
+ /**
+ * 描述 : 配置
+ */
+ @Autowired
+ private RmsProperties rmsProperties;
+
+ /**
+ * 远程服务调用 (不走ribbon)
+ *
+ * @param host 地址
+ * @param port 端口
+ * @param serviceCode 服务代码
+ * @param headers headers
+ * @param input 输入参数
+ * @param uriParam uri参数
+ * @param responseType 返回类型
+ * @param uriVariables rest参数
+ * @param 输入类型
+ * @param 输出类型
+ * @return 服务结果
+ */
+ public ResponseEntity call(String host, int port, String serviceCode, HttpHeaders headers, I input, String uriParam, ParameterizedTypeReference responseType, Map uriVariables) { //NOSONAR
+ //客户端权限验证
+ verification(serviceCode);
+ //获取服务元数据
+ ServiceMeta serviceMeta = rmsProperties.getService().get(serviceCode);
+ //构建请求路径
+ String path = (serviceMeta.getIsHttps() ? Constant.HTTPS : Constant.HTTP).concat(host).concat(":").concat(String.valueOf(port)).concat(serviceMeta.getUri());
+ //获得请求方法
+ String method = getRmsMethod(serviceCode);
+ //拼装路径参数
+ if (StringUtils.isNotBlank(uriParam)) {
+ path += uriParam;
+ }
+ //构建请求头
+ HttpHeaders httpHeaders = buildSystemTagHeaders(serviceCode);
+ //添加请求头
+ if (MapUtils.isNotEmpty(headers)) {
+ httpHeaders.putAll(headers);
+ }
+ //构建请求消息体
+ HttpEntity requestEntity = new HttpEntity<>(input, httpHeaders);
+ //请求并且返回
+ log.debug("rms url : {} , method : {} ", path, method);
+ return externalRestTemplate.exchange(path, HttpMethod.resolve(method), requestEntity, responseType, uriVariables != null ? uriVariables : new HashMap());
+ }
+
+ /**
+ * 远程服务调用 (不走ribbon)
+ *
+ * @param host 地址
+ * @param port 端口
+ * @param serviceCode 服务代码
+ * @param input 输入参数
+ * @param uriParam uri参数
+ * @param responseType 返回类型
+ * @param uriVariables rest参数
+ * @param 输入类型
+ * @param 输出类型
+ * @return 服务结果
+ */
+ public ResponseEntity call(String host, int port, String serviceCode, I input, String uriParam, ParameterizedTypeReference responseType, Map uriVariables) {
+ return this.call(host, port, serviceCode, null, input, uriParam, responseType, uriVariables);
+ }
+
+ /**
+ * 描述 : 远程服务调用
+ *
+ * @param serviceCode 服务代码
+ * @param headers headers
+ * @param input 输入参数
+ * @param uriParam uri参数
+ * @param responseType 返回类型
+ * @param uriVariables rest参数
+ * @param 输入类型
+ * @param 输出类型
+ * @return 服务结果
+ */
+ public ResponseEntity call(String serviceCode, HttpHeaders headers, I input, String uriParam, ParameterizedTypeReference responseType, Map uriVariables) {
+ //客户端权限验证
+ verification(serviceCode);
+ //构建请求路径
+ String path = getRmsUrl(serviceCode);
+ //获得请求方法
+ String method = getRmsMethod(serviceCode);
+ //拼装路径参数
+ if (StringUtils.isNotBlank(uriParam)) {
+ path += uriParam;
+ }
+ //构建请求头
+ HttpHeaders httpHeaders = buildSystemTagHeaders(serviceCode);
+ //添加请求头
+ if (MapUtils.isNotEmpty(headers)) {
+ httpHeaders.putAll(headers);
+ }
+ //构建请求消息体
+ HttpEntity requestEntity = new HttpEntity<>(input, httpHeaders);
+ //请求并且返回
+ log.debug("rms url : {} , method : {} ", path, method);
+ return restTemplate.exchange(path, HttpMethod.resolve(method), requestEntity, responseType, uriVariables != null ? uriVariables : new HashMap());
+ }
+
+ /**
+ * 描述 : 远程服务调用
+ *
+ * @param serviceCode 服务代码
+ * @param input 输入参数
+ * @param uriParam uri参数
+ * @param responseType 返回类型
+ * @param uriVariables rest参数
+ * @param 输入类型
+ * @param 输出类型
+ * @return 服务结果
+ */
+ public ResponseEntity call(String serviceCode, I input, String uriParam, ParameterizedTypeReference responseType, Map uriVariables) {
+ return this.call(serviceCode, null, input, uriParam, responseType, uriVariables);
+ }
+
+ /**
+ * 描述 : 构建请求头
+ *
+ * @param serviceCode 服务代码
+ * @return 请求头
+ */
+ private HttpHeaders buildSystemTagHeaders(String serviceCode) {
+ String secret = rmsProperties.getApplication().get(springApplicationName).getSecret();
+ HttpHeaders headers = new HttpHeaders();
+ headers.add(Constant.HEADER_RMS_APPLICATION_NAME_CODE, springApplicationName);
+ headers.add(Constant.HEADER_RMS_SIGN_CODE, Constant.sign(springApplicationName, secret));
+ headers.add(Constant.HEADER_SERVICE_CODE_CODE, serviceCode);
+ return headers;
+ }
+
+ /**
+ * 描述 : 客户端验证
+ *
+ * @param serviceCode 服务代码
+ */
+ private void verification(String serviceCode) {
+ ApplicationMeta applicationMeta = rmsProperties.getApplication().get(springApplicationName);
+ if (!applicationMeta.getAll()) {
+ if (applicationMeta.getDisabled()) {
+ throw new PermissionException(springApplicationName + " is disabled");
+ }
+ if (applicationMeta.getPurview().indexOf(serviceCode) == -1) {
+ throw new PermissionException("no access to this servoceCode : " + serviceCode);
+ }
+ }
+ }
+
+ /**
+ * 描述 : 获得请求方法
+ *
+ * @param serviceCode 服务代码
+ * @return 请求方法
+ */
+ private String getRmsMethod(String serviceCode) {
+ return rmsProperties.getService().get(serviceCode).getMethod();
+ }
+
+ /**
+ * 描述 : 构造url;
+ *
+ * @param serviceCode 服务代码
+ * @return url
+ */
+ private String getRmsUrl(String serviceCode) {
+ //获取服务元数据
+ ServiceMeta serviceMeta = rmsProperties.getService().get(serviceCode);
+ //构建请求路径
+ StringBuilder url = new StringBuilder(serviceMeta.getIsHttps() ? Constant.HTTPS : Constant.HTTP);
+ url.append(rmsProperties.getApplication().get(serviceMeta.getOwner()).getServiceId());
+ url.append(serviceMeta.getUri());
+ return url.toString();
+ }
+
+}
diff --git a/udf-starter-rms/src/main/java/org/itkk/udf/rms/RmsAuthHandlerInterceptor.java b/udf-stater/udf-starter-rms/src/main/java/org/itkk/udf/rms/RmsAuthHandlerInterceptor.java
similarity index 97%
rename from udf-starter-rms/src/main/java/org/itkk/udf/rms/RmsAuthHandlerInterceptor.java
rename to udf-stater/udf-starter-rms/src/main/java/org/itkk/udf/rms/RmsAuthHandlerInterceptor.java
index 001a694..099188b 100644
--- a/udf-starter-rms/src/main/java/org/itkk/udf/rms/RmsAuthHandlerInterceptor.java
+++ b/udf-stater/udf-starter-rms/src/main/java/org/itkk/udf/rms/RmsAuthHandlerInterceptor.java
@@ -1,139 +1,139 @@
-/**
- * SystemTagAuthHandlerInterceptor.java
- * Created at 2016-11-16
- * Created by wangkang
- * Copyright (C) 2016 itkk.org, All rights reserved.
- */
-package org.itkk.udf.rms;
-
-import lombok.extern.slf4j.Slf4j;
-import org.apache.commons.lang3.StringUtils;
-import org.itkk.udf.core.exception.AuthException;
-import org.itkk.udf.core.exception.PermissionException;
-import org.itkk.udf.rms.meta.ApplicationMeta;
-import org.itkk.udf.rms.meta.ServiceMeta;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.core.env.Environment;
-import org.springframework.http.HttpMethod;
-import org.springframework.web.servlet.HandlerInterceptor;
-import org.springframework.web.servlet.HandlerMapping;
-import org.springframework.web.servlet.ModelAndView;
-
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
-
-/**
- * 描述 : SystemTagAuthHandlerInterceptor
- *
- * @author wangkang
- */
-@Slf4j
-public class RmsAuthHandlerInterceptor implements HandlerInterceptor {
-
- /**
- * 描述 : 环境标识
- */
- private static final String DEV_PROFILES = "dev";
-
- /**
- * 描述 : 配置
- */
- @Autowired
- private RmsProperties rmsProperties;
-
- /**
- * 描述 : 环境变量
- */
- @Autowired
- private Environment env;
-
- @Override
- public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) { //NOSONAR
- //获取请求方法
- String method = request.getMethod();
- //如果是options请求,则直接返回true (处理跨域情况)
- if (HttpMethod.OPTIONS.equals(HttpMethod.resolve(method))) {
- return true;
- }
- //获得当前环境
- String profilesActive = env.getProperty("spring.profiles.active");
- //获取请求地址
- String url = request.getAttribute(HandlerMapping.BEST_MATCHING_PATTERN_ATTRIBUTE).toString();
- //获取认证信息(应用名称)
- String rmsApplicationName = request.getHeader(Constant.HEADER_RMS_APPLICATION_NAME_CODE);
- if (StringUtils.isBlank(rmsApplicationName)) {
- rmsApplicationName = request.getParameter(Constant.HEADER_RMS_APPLICATION_NAME_CODE);
- }
- //获取认证信息(sign)
- String rmsSign = request.getHeader(Constant.HEADER_RMS_SIGN_CODE);
- if (StringUtils.isBlank(rmsSign)) {
- rmsSign = request.getParameter(Constant.HEADER_RMS_SIGN_CODE);
- }
- //获取认证信息(服务代码)
- String rmsServiceCode = request.getHeader(Constant.HEADER_SERVICE_CODE_CODE);
- if (StringUtils.isBlank(rmsServiceCode)) {
- rmsServiceCode = request.getParameter(Constant.HEADER_SERVICE_CODE_CODE);
- }
- //日志
- log.debug("profiles.active:{},rmsApplicationName:{},rmsSign:{},rmsServiceCode:{},url:{},method:{}", profilesActive, rmsApplicationName, rmsSign, rmsServiceCode, url, method);
- //判断systemTag是否有效
- if (!this.rmsProperties.getApplication().containsKey(rmsApplicationName)) {
- throw new AuthException("unrecognized systemTag:" + rmsApplicationName);
- }
- //获得应用元数据
- ApplicationMeta applicationMeta = rmsProperties.getApplication().get(rmsApplicationName);
- //判断环境(开发环境无需校验sign)
- if (!DEV_PROFILES.equals(profilesActive)) {
- //判断是否缺少认证信息
- if (StringUtils.isBlank(rmsSign)) {
- throw new AuthException("missing required authentication parameters (rmsSign)");
- }
- //获得secret
- String secret = applicationMeta.getSecret();
- //计算sign
- String sign = Constant.sign(rmsApplicationName, secret);
- //比较sign
- if (!rmsSign.equals(sign)) {
- throw new AuthException("sign Validation failed");
- }
- }
- //判断是否有调用所有服务的权限
- if (!applicationMeta.getAll()) {
- //判断是否有服务代码
- if (StringUtils.isBlank(rmsServiceCode)) {
- throw new AuthException("missing required authentication parameters (rmsServiceCode)");
- }
- //判断是否禁止调用所有服务权限
- if (applicationMeta.getDisabled()) {
- throw new PermissionException(rmsApplicationName + " is disabled");
- }
- //判断是否有调用该服务的权限
- if (applicationMeta.getPurview().indexOf(rmsServiceCode) == -1) {
- throw new PermissionException("no access to this servoceCode : " + rmsServiceCode);
- }
- //判断服务元数据是否存在
- if (!rmsProperties.getService().containsKey(rmsServiceCode)) {
- throw new PermissionException("service code not exist");
- }
- //获得服务元数据
- ServiceMeta serviceMeta = rmsProperties.getService().get(rmsServiceCode);
- //比较url和method的有效性
- if (!serviceMeta.getUri().equals(url) || !serviceMeta.getMethod().equals(method)) {
- throw new PermissionException("url and method verification error");
- }
- }
- //返回
- return true;
- }
-
- @Override
- public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) {
- log.debug("SystemTagAuthHandlerInterceptor.postHandle");
- }
-
- @Override
- public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) {
- log.debug("SystemTagAuthHandlerInterceptor.afterCompletion");
- }
-
-}
+/**
+ * SystemTagAuthHandlerInterceptor.java
+ * Created at 2016-11-16
+ * Created by wangkang
+ * Copyright (C) 2016 itkk.org, All rights reserved.
+ */
+package org.itkk.udf.rms;
+
+import lombok.extern.slf4j.Slf4j;
+import org.apache.commons.lang3.StringUtils;
+import org.itkk.udf.core.exception.AuthException;
+import org.itkk.udf.core.exception.PermissionException;
+import org.itkk.udf.rms.meta.ApplicationMeta;
+import org.itkk.udf.rms.meta.ServiceMeta;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.core.env.Environment;
+import org.springframework.http.HttpMethod;
+import org.springframework.web.servlet.HandlerInterceptor;
+import org.springframework.web.servlet.HandlerMapping;
+import org.springframework.web.servlet.ModelAndView;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+
+/**
+ * 描述 : SystemTagAuthHandlerInterceptor
+ *
+ * @author wangkang
+ */
+@Slf4j
+public class RmsAuthHandlerInterceptor implements HandlerInterceptor {
+
+ /**
+ * 描述 : 环境标识
+ */
+ private static final String DEV_PROFILES = "dev";
+
+ /**
+ * 描述 : 配置
+ */
+ @Autowired
+ private RmsProperties rmsProperties;
+
+ /**
+ * 描述 : 环境变量
+ */
+ @Autowired
+ private Environment env;
+
+ @Override
+ public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) { //NOSONAR
+ //获取请求方法
+ String method = request.getMethod();
+ //如果是options请求,则直接返回true (处理跨域情况)
+ if (HttpMethod.OPTIONS.equals(HttpMethod.resolve(method))) {
+ return true;
+ }
+ //获得当前环境
+ String profilesActive = env.getProperty("spring.profiles.active");
+ //获取请求地址
+ String url = request.getAttribute(HandlerMapping.BEST_MATCHING_PATTERN_ATTRIBUTE).toString();
+ //获取认证信息(应用名称)
+ String rmsApplicationName = request.getHeader(Constant.HEADER_RMS_APPLICATION_NAME_CODE);
+ if (StringUtils.isBlank(rmsApplicationName)) {
+ rmsApplicationName = request.getParameter(Constant.HEADER_RMS_APPLICATION_NAME_CODE);
+ }
+ //获取认证信息(sign)
+ String rmsSign = request.getHeader(Constant.HEADER_RMS_SIGN_CODE);
+ if (StringUtils.isBlank(rmsSign)) {
+ rmsSign = request.getParameter(Constant.HEADER_RMS_SIGN_CODE);
+ }
+ //获取认证信息(服务代码)
+ String rmsServiceCode = request.getHeader(Constant.HEADER_SERVICE_CODE_CODE);
+ if (StringUtils.isBlank(rmsServiceCode)) {
+ rmsServiceCode = request.getParameter(Constant.HEADER_SERVICE_CODE_CODE);
+ }
+ //日志
+ log.debug("profiles.active:{},rmsApplicationName:{},rmsSign:{},rmsServiceCode:{},url:{},method:{}", profilesActive, rmsApplicationName, rmsSign, rmsServiceCode, url, method);
+ //判断systemTag是否有效
+ if (!this.rmsProperties.getApplication().containsKey(rmsApplicationName)) {
+ throw new AuthException("unrecognized systemTag:" + rmsApplicationName);
+ }
+ //获得应用元数据
+ ApplicationMeta applicationMeta = rmsProperties.getApplication().get(rmsApplicationName);
+ //判断环境(开发环境无需校验sign)
+ if (!DEV_PROFILES.equals(profilesActive)) {
+ //判断是否缺少认证信息
+ if (StringUtils.isBlank(rmsSign)) {
+ throw new AuthException("missing required authentication parameters (rmsSign)");
+ }
+ //获得secret
+ String secret = applicationMeta.getSecret();
+ //计算sign
+ String sign = Constant.sign(rmsApplicationName, secret);
+ //比较sign
+ if (!rmsSign.equals(sign)) {
+ throw new AuthException("sign Validation failed");
+ }
+ }
+ //判断是否有调用所有服务的权限
+ if (!applicationMeta.getAll()) {
+ //判断是否有服务代码
+ if (StringUtils.isBlank(rmsServiceCode)) {
+ throw new AuthException("missing required authentication parameters (rmsServiceCode)");
+ }
+ //判断是否禁止调用所有服务权限
+ if (applicationMeta.getDisabled()) {
+ throw new PermissionException(rmsApplicationName + " is disabled");
+ }
+ //判断是否有调用该服务的权限
+ if (applicationMeta.getPurview().indexOf(rmsServiceCode) == -1) {
+ throw new PermissionException("no access to this servoceCode : " + rmsServiceCode);
+ }
+ //判断服务元数据是否存在
+ if (!rmsProperties.getService().containsKey(rmsServiceCode)) {
+ throw new PermissionException("service code not exist");
+ }
+ //获得服务元数据
+ ServiceMeta serviceMeta = rmsProperties.getService().get(rmsServiceCode);
+ //比较url和method的有效性
+ if (!serviceMeta.getUri().equals(url) || !serviceMeta.getMethod().equals(method)) {
+ throw new PermissionException("url and method verification error");
+ }
+ }
+ //返回
+ return true;
+ }
+
+ @Override
+ public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) {
+ log.debug("SystemTagAuthHandlerInterceptor.postHandle");
+ }
+
+ @Override
+ public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) {
+ log.debug("SystemTagAuthHandlerInterceptor.afterCompletion");
+ }
+
+}
diff --git a/udf-starter-rms/src/main/java/org/itkk/udf/rms/RmsConfig.java b/udf-stater/udf-starter-rms/src/main/java/org/itkk/udf/rms/RmsConfig.java
similarity index 96%
rename from udf-starter-rms/src/main/java/org/itkk/udf/rms/RmsConfig.java
rename to udf-stater/udf-starter-rms/src/main/java/org/itkk/udf/rms/RmsConfig.java
index 5a3fffa..4f4bb05 100644
--- a/udf-starter-rms/src/main/java/org/itkk/udf/rms/RmsConfig.java
+++ b/udf-stater/udf-starter-rms/src/main/java/org/itkk/udf/rms/RmsConfig.java
@@ -1,84 +1,84 @@
-/**
- * Config.java
- * Created at 2016-11-19
- * Created by Administrator
- * Copyright (C) 2016 itkk.org, All rights reserved.
- */
-package org.itkk.udf.rms;
-
-import lombok.Data;
-import org.itkk.udf.core.exception.handle.RmsResponseErrorHandler;
-import org.springframework.boot.context.properties.ConfigurationProperties;
-import org.springframework.cloud.client.loadbalancer.LoadBalanced;
-import org.springframework.context.annotation.Bean;
-import org.springframework.context.annotation.Configuration;
-import org.springframework.context.annotation.Primary;
-import org.springframework.http.client.ClientHttpRequestFactory;
-import org.springframework.validation.annotation.Validated;
-import org.springframework.web.client.RestTemplate;
-import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
-import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
-import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter;
-
-import javax.validation.constraints.NotNull;
-
-/**
- * 描述 : Config
- *
- * @author Administrator
- */
-@Configuration
-@ConfigurationProperties(prefix = "org.itkk.rms.config")
-@Validated
-@Data
-public class RmsConfig {
-
- /**
- * 描述 : rms扫描路径
- */
- @NotNull
- private String rmsPathPatterns;
-
- /**
- * 描述 : restTemplate
- *
- * @param requestFactory requestFactory
- * @return restTemplate
- */
- @Bean
- @LoadBalanced
- @Primary
- public RestTemplate restTemplate(ClientHttpRequestFactory requestFactory) {
- RestTemplate restTemplate = new RestTemplate(requestFactory);
- restTemplate.setErrorHandler(new RmsResponseErrorHandler());
- return restTemplate;
- }
-
- /**
- * 描述 : rmsAuthConfigurer
- *
- * @return WebMvcConfigurer
- */
- @Bean
- public WebMvcConfigurer rmsAuthConfigurer() { //NOSONAR
- return new WebMvcConfigurerAdapter() {
- @Override
- public void addInterceptors(InterceptorRegistry registry) {
- String[] rmsPathPatternsArray = rmsPathPatterns.split(",");
- registry.addInterceptor(rmsAuthHandlerInterceptor()).addPathPatterns(rmsPathPatternsArray);
- super.addInterceptors(registry);
- }
- };
- }
-
- /**
- * 描述 : RmsAuthHandlerInterceptor
- *
- * @return rmsAuthHandlerInterceptor
- */
- @Bean
- public RmsAuthHandlerInterceptor rmsAuthHandlerInterceptor() {
- return new RmsAuthHandlerInterceptor();
- }
-
-}
+/**
+ * Config.java
+ * Created at 2016-11-19
+ * Created by Administrator
+ * Copyright (C) 2016 itkk.org, All rights reserved.
+ */
+package org.itkk.udf.rms;
+
+import lombok.Data;
+import org.itkk.udf.core.exception.handle.RmsResponseErrorHandler;
+import org.springframework.boot.context.properties.ConfigurationProperties;
+import org.springframework.cloud.client.loadbalancer.LoadBalanced;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+import org.springframework.context.annotation.Primary;
+import org.springframework.http.client.ClientHttpRequestFactory;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.web.client.RestTemplate;
+import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
+import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
+import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter;
+
+import javax.validation.constraints.NotNull;
+
+/**
+ * 描述 : Config
+ *
+ * @author Administrator
+ */
+@Configuration
+@ConfigurationProperties(prefix = "org.itkk.rms.config")
+@Validated
+@Data
+public class RmsConfig {
+
+ /**
+ * 描述 : rms扫描路径
+ */
+ @NotNull
+ private String rmsPathPatterns;
+
+ /**
+ * 描述 : restTemplate
+ *
+ * @param requestFactory requestFactory
+ * @return restTemplate
+ */
+ @Bean
+ @LoadBalanced
+ @Primary
+ public RestTemplate restTemplate(ClientHttpRequestFactory requestFactory) {
+ RestTemplate restTemplate = new RestTemplate(requestFactory);
+ restTemplate.setErrorHandler(new RmsResponseErrorHandler());
+ return restTemplate;
+ }
+
+ /**
+ * 描述 : rmsAuthConfigurer
+ *
+ * @return WebMvcConfigurer
+ */
+ @Bean
+ public WebMvcConfigurer rmsAuthConfigurer() { //NOSONAR
+ return new WebMvcConfigurerAdapter() {
+ @Override
+ public void addInterceptors(InterceptorRegistry registry) {
+ String[] rmsPathPatternsArray = rmsPathPatterns.split(",");
+ registry.addInterceptor(rmsAuthHandlerInterceptor()).addPathPatterns(rmsPathPatternsArray);
+ super.addInterceptors(registry);
+ }
+ };
+ }
+
+ /**
+ * 描述 : RmsAuthHandlerInterceptor
+ *
+ * @return rmsAuthHandlerInterceptor
+ */
+ @Bean
+ public RmsAuthHandlerInterceptor rmsAuthHandlerInterceptor() {
+ return new RmsAuthHandlerInterceptor();
+ }
+
+}
diff --git a/udf-starter-rms/src/main/java/org/itkk/udf/rms/RmsProperties.java b/udf-stater/udf-starter-rms/src/main/java/org/itkk/udf/rms/RmsProperties.java
similarity index 95%
rename from udf-starter-rms/src/main/java/org/itkk/udf/rms/RmsProperties.java
rename to udf-stater/udf-starter-rms/src/main/java/org/itkk/udf/rms/RmsProperties.java
index 85bd402..f1620bc 100644
--- a/udf-starter-rms/src/main/java/org/itkk/udf/rms/RmsProperties.java
+++ b/udf-stater/udf-starter-rms/src/main/java/org/itkk/udf/rms/RmsProperties.java
@@ -1,43 +1,43 @@
-/**
- * Config.java
- * Created at 2016-11-19
- * Created by Administrator
- * Copyright (C) 2016 itkk.org, All rights reserved.
- */
-package org.itkk.udf.rms;
-
-import lombok.Data;
-import org.itkk.udf.rms.meta.ApplicationMeta;
-import org.itkk.udf.rms.meta.ServiceMeta;
-import org.springframework.boot.context.properties.ConfigurationProperties;
-import org.springframework.stereotype.Component;
-
-import java.io.Serializable;
-import java.util.Map;
-
-/**
- * 描述 : Config
- *
- * @author Administrator
- */
-@Component
-@ConfigurationProperties(prefix = "org.itkk.rms.properties")
-@Data
-public class RmsProperties implements Serializable {
-
- /**
- * 描述 : ID
- */
- private static final long serialVersionUID = 1L;
-
- /**
- * 描述 : 应用清单(应用名称 : 应用地址)
- */
- private Map application;
-
- /**
- * 描述 : 服务路径(服务编号 : 服务元数据)
- */
- private Map service;
-
-}
+/**
+ * Config.java
+ * Created at 2016-11-19
+ * Created by Administrator
+ * Copyright (C) 2016 itkk.org, All rights reserved.
+ */
+package org.itkk.udf.rms;
+
+import lombok.Data;
+import org.itkk.udf.rms.meta.ApplicationMeta;
+import org.itkk.udf.rms.meta.ServiceMeta;
+import org.springframework.boot.context.properties.ConfigurationProperties;
+import org.springframework.stereotype.Component;
+
+import java.io.Serializable;
+import java.util.Map;
+
+/**
+ * 描述 : Config
+ *
+ * @author Administrator
+ */
+@Component
+@ConfigurationProperties(prefix = "org.itkk.rms.properties")
+@Data
+public class RmsProperties implements Serializable {
+
+ /**
+ * 描述 : ID
+ */
+ private static final long serialVersionUID = 1L;
+
+ /**
+ * 描述 : 应用清单(应用名称 : 应用地址)
+ */
+ private Map application;
+
+ /**
+ * 描述 : 服务路径(服务编号 : 服务元数据)
+ */
+ private Map service;
+
+}
diff --git a/udf-starter-rms/src/main/java/org/itkk/udf/rms/meta/ApplicationMeta.java b/udf-stater/udf-starter-rms/src/main/java/org/itkk/udf/rms/meta/ApplicationMeta.java
similarity index 94%
rename from udf-starter-rms/src/main/java/org/itkk/udf/rms/meta/ApplicationMeta.java
rename to udf-stater/udf-starter-rms/src/main/java/org/itkk/udf/rms/meta/ApplicationMeta.java
index 6b1ece1..871dc1a 100644
--- a/udf-starter-rms/src/main/java/org/itkk/udf/rms/meta/ApplicationMeta.java
+++ b/udf-stater/udf-starter-rms/src/main/java/org/itkk/udf/rms/meta/ApplicationMeta.java
@@ -1,56 +1,56 @@
-/**
- * ApplicationMeta.java
- * Created at 2016-12-22
- * Created by Administrator
- * Copyright (C) 2016 itkk.org, All rights reserved.
- */
-package org.itkk.udf.rms.meta;
-
-import lombok.Data;
-
-import java.io.Serializable;
-
-/**
- * 描述 : ApplicationMeta
- *
- * @author Administrator
- */
-@Data
-public class ApplicationMeta implements Serializable {
-
- /**
- * 描述 : ID
- */
- private static final long serialVersionUID = 1L;
-
- /**
- * 描述 : 服务ID
- */
- private String serviceId;
-
- /**
- * 描述 : 私钥
- */
- private String secret;
-
- /**
- * 描述 : 权限
- */
- private String purview;
-
- /**
- * 描述 : 所有服务的调用权限(优先判定)
- */
- private Boolean all = false;
-
- /**
- * 描述 : 禁止服务调用
- */
- private Boolean disabled = false;
-
- /**
- * 描述 : 描述
- */
- private String description;
-
-}
+/**
+ * ApplicationMeta.java
+ * Created at 2016-12-22
+ * Created by Administrator
+ * Copyright (C) 2016 itkk.org, All rights reserved.
+ */
+package org.itkk.udf.rms.meta;
+
+import lombok.Data;
+
+import java.io.Serializable;
+
+/**
+ * 描述 : ApplicationMeta
+ *
+ * @author Administrator
+ */
+@Data
+public class ApplicationMeta implements Serializable {
+
+ /**
+ * 描述 : ID
+ */
+ private static final long serialVersionUID = 1L;
+
+ /**
+ * 描述 : 服务ID
+ */
+ private String serviceId;
+
+ /**
+ * 描述 : 私钥
+ */
+ private String secret;
+
+ /**
+ * 描述 : 权限
+ */
+ private String purview;
+
+ /**
+ * 描述 : 所有服务的调用权限(优先判定)
+ */
+ private Boolean all = false;
+
+ /**
+ * 描述 : 禁止服务调用
+ */
+ private Boolean disabled = false;
+
+ /**
+ * 描述 : 描述
+ */
+ private String description;
+
+}
diff --git a/udf-starter-rms/src/main/java/org/itkk/udf/rms/meta/ServiceMeta.java b/udf-stater/udf-starter-rms/src/main/java/org/itkk/udf/rms/meta/ServiceMeta.java
similarity index 93%
rename from udf-starter-rms/src/main/java/org/itkk/udf/rms/meta/ServiceMeta.java
rename to udf-stater/udf-starter-rms/src/main/java/org/itkk/udf/rms/meta/ServiceMeta.java
index 756c949..0ed4d46 100644
--- a/udf-starter-rms/src/main/java/org/itkk/udf/rms/meta/ServiceMeta.java
+++ b/udf-stater/udf-starter-rms/src/main/java/org/itkk/udf/rms/meta/ServiceMeta.java
@@ -1,51 +1,51 @@
-/**
- * ServiceMeta.java
- * Created at 2016-12-22
- * Created by Administrator
- * Copyright (C) 2016 itkk.org, All rights reserved.
- */
-package org.itkk.udf.rms.meta;
-
-import lombok.Data;
-
-import java.io.Serializable;
-
-/**
- * 描述 : ServiceMeta
- *
- * @author Administrator
- */
-@Data
-public class ServiceMeta implements Serializable {
-
- /**
- * 描述 : ID
- */
- private static final long serialVersionUID = 1L;
-
- /**
- * 描述 : 应用名称
- */
- private String owner;
-
- /**
- * 描述 : 地址
- */
- private String uri;
-
- /**
- * 描述 : 服务方法
- */
- private String method;
-
- /**
- * 描述 : 是否HTTPS
- */
- private Boolean isHttps = false;
-
- /**
- * 描述 : 描述
- */
- private String description;
-
-}
+/**
+ * ServiceMeta.java
+ * Created at 2016-12-22
+ * Created by Administrator
+ * Copyright (C) 2016 itkk.org, All rights reserved.
+ */
+package org.itkk.udf.rms.meta;
+
+import lombok.Data;
+
+import java.io.Serializable;
+
+/**
+ * 描述 : ServiceMeta
+ *
+ * @author Administrator
+ */
+@Data
+public class ServiceMeta implements Serializable {
+
+ /**
+ * 描述 : ID
+ */
+ private static final long serialVersionUID = 1L;
+
+ /**
+ * 描述 : 应用名称
+ */
+ private String owner;
+
+ /**
+ * 描述 : 地址
+ */
+ private String uri;
+
+ /**
+ * 描述 : 服务方法
+ */
+ private String method;
+
+ /**
+ * 描述 : 是否HTTPS
+ */
+ private Boolean isHttps = false;
+
+ /**
+ * 描述 : 描述
+ */
+ private String description;
+
+}
diff --git a/udf-starter-rms/src/main/java/org/itkk/udf/rms/web/RmsController.java b/udf-stater/udf-starter-rms/src/main/java/org/itkk/udf/rms/web/RmsController.java
similarity index 96%
rename from udf-starter-rms/src/main/java/org/itkk/udf/rms/web/RmsController.java
rename to udf-stater/udf-starter-rms/src/main/java/org/itkk/udf/rms/web/RmsController.java
index 206f547..52073e2 100644
--- a/udf-starter-rms/src/main/java/org/itkk/udf/rms/web/RmsController.java
+++ b/udf-stater/udf-starter-rms/src/main/java/org/itkk/udf/rms/web/RmsController.java
@@ -1,63 +1,63 @@
-/**
- * RmsController.java
- * Created at 2017-05-25
- * Created by Administrator
- * Copyright (C) 2016 itkk.org, All rights reserved.
- */
-package org.itkk.udf.rms.web;
-
-import io.swagger.annotations.Api;
-import io.swagger.annotations.ApiOperation;
-import org.itkk.udf.core.RestResponse;
-import org.itkk.udf.rms.RmsConfig;
-import org.itkk.udf.rms.RmsProperties;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RequestMethod;
-import org.springframework.web.bind.annotation.RestController;
-
-/**
- * 描述 : RmsController
- *
- * @author Administrator
- */
-@Api(value = "rest服务", consumes = "application/json", produces = "application/json", protocols = "http")
-@RestController
-@RequestMapping("service/rms")
-public class RmsController {
-
- /**
- * 描述 : rmsConfig
- */
- @Autowired
- private RmsConfig rmsConfig;
-
- /**
- * 描述 : rmsProperties
- */
- @Autowired(required = false)
- private RmsProperties rmsProperties;
-
- /**
- * 描述 : 返回rms扫描路径
- *
- * @return rms扫描路径
- */
- @ApiOperation(value = "RMS_1", notes = "返回rms扫描路径")
- @RequestMapping(value = "path/pattern", method = RequestMethod.GET)
- public RestResponse getPathPatterns() {
- return new RestResponse<>(rmsConfig.getRmsPathPatterns());
- }
-
- /**
- * 描述 : 获得rms配置详情
- *
- * @return rms配置详情
- */
- @ApiOperation(value = "RMS_2", notes = "获得rms配置详情")
- @RequestMapping(value = "properties", method = RequestMethod.GET)
- public RestResponse getProperties() {
- return new RestResponse<>(rmsProperties);
- }
-
-}
+/**
+ * RmsController.java
+ * Created at 2017-05-25
+ * Created by Administrator
+ * Copyright (C) 2016 itkk.org, All rights reserved.
+ */
+package org.itkk.udf.rms.web;
+
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.itkk.udf.core.RestResponse;
+import org.itkk.udf.rms.RmsConfig;
+import org.itkk.udf.rms.RmsProperties;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestMethod;
+import org.springframework.web.bind.annotation.RestController;
+
+/**
+ * 描述 : RmsController
+ *
+ * @author Administrator
+ */
+@Api(value = "rest服务", consumes = "application/json", produces = "application/json", protocols = "http")
+@RestController
+@RequestMapping("service/rms")
+public class RmsController {
+
+ /**
+ * 描述 : rmsConfig
+ */
+ @Autowired
+ private RmsConfig rmsConfig;
+
+ /**
+ * 描述 : rmsProperties
+ */
+ @Autowired(required = false)
+ private RmsProperties rmsProperties;
+
+ /**
+ * 描述 : 返回rms扫描路径
+ *
+ * @return rms扫描路径
+ */
+ @ApiOperation(value = "RMS_1", notes = "返回rms扫描路径")
+ @RequestMapping(value = "path/pattern", method = RequestMethod.GET)
+ public RestResponse getPathPatterns() {
+ return new RestResponse<>(rmsConfig.getRmsPathPatterns());
+ }
+
+ /**
+ * 描述 : 获得rms配置详情
+ *
+ * @return rms配置详情
+ */
+ @ApiOperation(value = "RMS_2", notes = "获得rms配置详情")
+ @RequestMapping(value = "properties", method = RequestMethod.GET)
+ public RestResponse getProperties() {
+ return new RestResponse<>(rmsProperties);
+ }
+
+}
diff --git a/udf-starter-scheduler-client/pom.xml b/udf-stater/udf-starter-scheduler-client/pom.xml
similarity index 100%
rename from udf-starter-scheduler-client/pom.xml
rename to udf-stater/udf-starter-scheduler-client/pom.xml
diff --git a/udf-starter-scheduler-client/src/main/java/org/itkk/udf/scheduler/client/RmsJobStats.java b/udf-stater/udf-starter-scheduler-client/src/main/java/org/itkk/udf/scheduler/client/RmsJobStats.java
similarity index 93%
rename from udf-starter-scheduler-client/src/main/java/org/itkk/udf/scheduler/client/RmsJobStats.java
rename to udf-stater/udf-starter-scheduler-client/src/main/java/org/itkk/udf/scheduler/client/RmsJobStats.java
index 3dc5d8f..b739697 100644
--- a/udf-starter-scheduler-client/src/main/java/org/itkk/udf/scheduler/client/RmsJobStats.java
+++ b/udf-stater/udf-starter-scheduler-client/src/main/java/org/itkk/udf/scheduler/client/RmsJobStats.java
@@ -1,60 +1,60 @@
-/**
- * RmsJobStats.java
- * Created at 2016-09-27
- * Created by wangkang
- * Copyright (C) 2016 itkk.org, All rights reserved.
- */
-package org.itkk.udf.scheduler.client;
-
-/**
- * 描述 : RmsJobStats
- *
- * @author wangkang
- */
-public enum RmsJobStats {
- /**
- * 描述 : 正在执行
- */
- EXECUTING(1),
- /**
- * 描述 : 完成
- */
- COMPLETE(2),
- /**
- * 描述 : 错误
- */
- ERROR(-1),
- /**
- * 描述 : 跳过
- */
- SKIP(-2);
-
- /**
- *
- * Field value: 参数值
- *
- */
- private Integer value;
-
- /**
- *
- * Description: 构造函数
- *
- *
- * @param value 构造函数
- */
- RmsJobStats(Integer value) {
- this.value = value;
- }
-
- /**
- *
- * Description: 放回int值
- *
- *
- * @return value 放回int值
- */
- public Integer value() {
- return this.value;
- }
-}
+/**
+ * RmsJobStats.java
+ * Created at 2016-09-27
+ * Created by wangkang
+ * Copyright (C) 2016 itkk.org, All rights reserved.
+ */
+package org.itkk.udf.scheduler.client;
+
+/**
+ * 描述 : RmsJobStats
+ *
+ * @author wangkang
+ */
+public enum RmsJobStats {
+ /**
+ * 描述 : 正在执行
+ */
+ EXECUTING(1),
+ /**
+ * 描述 : 完成
+ */
+ COMPLETE(2),
+ /**
+ * 描述 : 错误
+ */
+ ERROR(-1),
+ /**
+ * 描述 : 跳过
+ */
+ SKIP(-2);
+
+ /**
+ *
+ * Field value: 参数值
+ *
+ */
+ private Integer value;
+
+ /**
+ *
+ * Description: 构造函数
+ *
+ *
+ * @param value 构造函数
+ */
+ RmsJobStats(Integer value) {
+ this.value = value;
+ }
+
+ /**
+ *
+ * Description: 放回int值
+ *
+ *
+ * @return value 放回int值
+ */
+ public Integer value() {
+ return this.value;
+ }
+}
diff --git a/udf-starter-scheduler-client/src/main/java/org/itkk/udf/scheduler/client/SchClientHandle.java b/udf-stater/udf-starter-scheduler-client/src/main/java/org/itkk/udf/scheduler/client/SchClientHandle.java
similarity index 96%
rename from udf-starter-scheduler-client/src/main/java/org/itkk/udf/scheduler/client/SchClientHandle.java
rename to udf-stater/udf-starter-scheduler-client/src/main/java/org/itkk/udf/scheduler/client/SchClientHandle.java
index 3445978..ab8e08e 100644
--- a/udf-starter-scheduler-client/src/main/java/org/itkk/udf/scheduler/client/SchClientHandle.java
+++ b/udf-stater/udf-starter-scheduler-client/src/main/java/org/itkk/udf/scheduler/client/SchClientHandle.java
@@ -1,119 +1,119 @@
-/**
- * SchClientService.java
- * Created at 2017-06-12
- * Created by Administrator
- * Copyright (C) 2016 itkk.org, All rights reserved.
- */
-package org.itkk.udf.scheduler.client;
-
-import lombok.extern.slf4j.Slf4j;
-import org.apache.commons.lang3.exception.ExceptionUtils;
-import org.itkk.udf.core.RestResponse;
-import org.itkk.udf.core.exception.SystemRuntimeException;
-import org.itkk.udf.rms.Rms;
-import org.itkk.udf.scheduler.client.domain.RmsJobParam;
-import org.itkk.udf.scheduler.client.domain.RmsJobResult;
-import org.itkk.udf.scheduler.client.executor.AbstractExecutor;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.context.ApplicationContext;
-import org.springframework.context.ApplicationContextAware;
-import org.springframework.core.ParameterizedTypeReference;
-import org.springframework.retry.annotation.Recover;
-import org.springframework.retry.annotation.Retryable;
-import org.springframework.scheduling.annotation.Async;
-import org.springframework.stereotype.Component;
-
-import java.util.Date;
-
-/**
- * 描述 : SchClientService
- *
- * @author Administrator
- */
-@Component
-@Slf4j
-public class SchClientHandle implements ApplicationContextAware {
-
- /**
- * 描述 : spring上下文
- */
- private ApplicationContext applicationContext;
-
- /**
- * 描述 : rms
- */
- @Autowired
- private Rms rms;
-
- /**
- * 描述 : 异步执行
- *
- * @param param 参数
- * @param result 结果
- */
- @Async
- public void asyncHandle(RmsJobParam param, RmsJobResult result) {
- try {
- //执行
- this.handle(param);
- result.setClientEndExecuteTime(new Date());
- result.setStats(RmsJobStats.COMPLETE.value());
- //回调
- this.callback(result);
- } catch (Exception e) {
- result.setClientEndExecuteTime(new Date());
- result.setStats(RmsJobStats.ERROR.value());
- result.setErrorMsg(ExceptionUtils.getStackTrace(e));
- //回调
- this.callback(result);
- //抛出异常
- throw new SchException(e);
- }
-
- }
-
- /**
- * 描述 : 同步执行
- *
- * @param param 参数
- */
- public void handle(RmsJobParam param) {
- //判断bean是否存在
- if (!applicationContext.containsBean(param.getBeanName())) {
- throw new SchException(param.getBeanName() + " not definition");
- }
- //获得bean
- AbstractExecutor bean = applicationContext.getBean(param.getBeanName(), AbstractExecutor.class);
- //执行
- bean.handle(param);
- }
-
- /**
- * 描述 : 回调(重处理)
- *
- * @param result result
- */
- @Retryable(maxAttempts = 3, value = Exception.class)
- private void callback(RmsJobResult result) {
- log.info("try to callback");
- final String serviceCode = "SCH_CLIENT_CALLBACK_1";
- rms.call(serviceCode, result, null, new ParameterizedTypeReference>() {
- }, null);
- }
-
- /**
- * 描述 : 重试失败后执行的方法
- *
- * @param e e
- */
- @Recover
- public void recover(Exception e) {
- throw new SystemRuntimeException(e);
- }
-
- @Override
- public void setApplicationContext(ApplicationContext arg0) {
- applicationContext = arg0;
- }
-
-}
+/**
+ * SchClientService.java
+ * Created at 2017-06-12
+ * Created by Administrator
+ * Copyright (C) 2016 itkk.org, All rights reserved.
+ */
+package org.itkk.udf.scheduler.client;
+
+import lombok.extern.slf4j.Slf4j;
+import org.apache.commons.lang3.exception.ExceptionUtils;
+import org.itkk.udf.core.RestResponse;
+import org.itkk.udf.core.exception.SystemRuntimeException;
+import org.itkk.udf.rms.Rms;
+import org.itkk.udf.scheduler.client.domain.RmsJobParam;
+import org.itkk.udf.scheduler.client.domain.RmsJobResult;
+import org.itkk.udf.scheduler.client.executor.AbstractExecutor;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.context.ApplicationContext;
+import org.springframework.context.ApplicationContextAware;
+import org.springframework.core.ParameterizedTypeReference;
+import org.springframework.retry.annotation.Recover;
+import org.springframework.retry.annotation.Retryable;
+import org.springframework.scheduling.annotation.Async;
+import org.springframework.stereotype.Component;
+
+import java.util.Date;
+
+/**
+ * 描述 : SchClientService
+ *
+ * @author Administrator
+ */
+@Component
+@Slf4j
+public class SchClientHandle implements ApplicationContextAware {
+
+ /**
+ * 描述 : spring上下文
+ */
+ private ApplicationContext applicationContext;
+
+ /**
+ * 描述 : rms
+ */
+ @Autowired
+ private Rms rms;
+
+ /**
+ * 描述 : 异步执行
+ *
+ * @param param 参数
+ * @param result 结果
+ */
+ @Async
+ public void asyncHandle(RmsJobParam param, RmsJobResult result) {
+ try {
+ //执行
+ this.handle(param);
+ result.setClientEndExecuteTime(new Date());
+ result.setStats(RmsJobStats.COMPLETE.value());
+ //回调
+ this.callback(result);
+ } catch (Exception e) {
+ result.setClientEndExecuteTime(new Date());
+ result.setStats(RmsJobStats.ERROR.value());
+ result.setErrorMsg(ExceptionUtils.getStackTrace(e));
+ //回调
+ this.callback(result);
+ //抛出异常
+ throw new SchException(e);
+ }
+
+ }
+
+ /**
+ * 描述 : 同步执行
+ *
+ * @param param 参数
+ */
+ public void handle(RmsJobParam param) {
+ //判断bean是否存在
+ if (!applicationContext.containsBean(param.getBeanName())) {
+ throw new SchException(param.getBeanName() + " not definition");
+ }
+ //获得bean
+ AbstractExecutor bean = applicationContext.getBean(param.getBeanName(), AbstractExecutor.class);
+ //执行
+ bean.handle(param);
+ }
+
+ /**
+ * 描述 : 回调(重处理)
+ *
+ * @param result result
+ */
+ @Retryable(maxAttempts = 3, value = Exception.class)
+ private void callback(RmsJobResult result) {
+ log.info("try to callback");
+ final String serviceCode = "SCH_CLIENT_CALLBACK_1";
+ rms.call(serviceCode, result, null, new ParameterizedTypeReference>() {
+ }, null);
+ }
+
+ /**
+ * 描述 : 重试失败后执行的方法
+ *
+ * @param e e
+ */
+ @Recover
+ public void recover(Exception e) {
+ throw new SystemRuntimeException(e);
+ }
+
+ @Override
+ public void setApplicationContext(ApplicationContext arg0) {
+ applicationContext = arg0;
+ }
+
+}
diff --git a/udf-starter-scheduler-client/src/main/java/org/itkk/udf/scheduler/client/SchException.java b/udf-stater/udf-starter-scheduler-client/src/main/java/org/itkk/udf/scheduler/client/SchException.java
similarity index 94%
rename from udf-starter-scheduler-client/src/main/java/org/itkk/udf/scheduler/client/SchException.java
rename to udf-stater/udf-starter-scheduler-client/src/main/java/org/itkk/udf/scheduler/client/SchException.java
index d7d7f02..73648ad 100644
--- a/udf-starter-scheduler-client/src/main/java/org/itkk/udf/scheduler/client/SchException.java
+++ b/udf-stater/udf-starter-scheduler-client/src/main/java/org/itkk/udf/scheduler/client/SchException.java
@@ -1,66 +1,66 @@
-/**
- * SchedulerException.java
- * Created at 2016-03-01
- * Created by wangkang
- * Copyright (C) 2016 itkk.org, All rights reserved.
- */
-package org.itkk.udf.scheduler.client;
-
-/**
- *
- * ClassName: SchedulerException
- *
- *
- * Description: 调度异常
- *
- *
- * Author: wangkang
- *
- *
- * Date: 2016年3月23日
- *
- */
-public class SchException extends RuntimeException {
-
- /**
- *
- * Field serialVersionUID: 序列号
- *
- */
- private static final long serialVersionUID = 1L;
-
- /**
- *
- * Description: 构造函数
- *
- *
- * @param message 异常信息
- */
- public SchException(String message) {
- super(message);
- }
-
- /**
- *
- * Description: 构造函数
- *
- *
- * @param cause 堆栈
- */
- public SchException(Throwable cause) {
- super(cause);
- }
-
- /**
- *
- * Description: 构造函数
- *
- *
- * @param message 异常信息
- * @param cause 堆栈
- */
- public SchException(String message, Throwable cause) {
- super(message, cause);
- }
-
-}
+/**
+ * SchedulerException.java
+ * Created at 2016-03-01
+ * Created by wangkang
+ * Copyright (C) 2016 itkk.org, All rights reserved.
+ */
+package org.itkk.udf.scheduler.client;
+
+/**
+ *
+ * ClassName: SchedulerException
+ *
+ *
+ * Description: 调度异常
+ *
+ *
+ * Author: wangkang
+ *
+ *
+ * Date: 2016年3月23日
+ *
+ */
+public class SchException extends RuntimeException {
+
+ /**
+ *
+ * Field serialVersionUID: 序列号
+ *
+ */
+ private static final long serialVersionUID = 1L;
+
+ /**
+ *
+ * Description: 构造函数
+ *
+ *
+ * @param message 异常信息
+ */
+ public SchException(String message) {
+ super(message);
+ }
+
+ /**
+ *
+ * Description: 构造函数
+ *
+ *
+ * @param cause 堆栈
+ */
+ public SchException(Throwable cause) {
+ super(cause);
+ }
+
+ /**
+ *
+ * Description: 构造函数
+ *
+ *
+ * @param message 异常信息
+ * @param cause 堆栈
+ */
+ public SchException(String message, Throwable cause) {
+ super(message, cause);
+ }
+
+}
diff --git a/udf-starter-scheduler-client/src/main/java/org/itkk/udf/scheduler/client/TriggerDataMapKey.java b/udf-stater/udf-starter-scheduler-client/src/main/java/org/itkk/udf/scheduler/client/TriggerDataMapKey.java
similarity index 94%
rename from udf-starter-scheduler-client/src/main/java/org/itkk/udf/scheduler/client/TriggerDataMapKey.java
rename to udf-stater/udf-starter-scheduler-client/src/main/java/org/itkk/udf/scheduler/client/TriggerDataMapKey.java
index c02f75f..6316d3a 100644
--- a/udf-starter-scheduler-client/src/main/java/org/itkk/udf/scheduler/client/TriggerDataMapKey.java
+++ b/udf-stater/udf-starter-scheduler-client/src/main/java/org/itkk/udf/scheduler/client/TriggerDataMapKey.java
@@ -1,68 +1,68 @@
-/**
- * TriggerDataMapKey.java
- * Created at 2016-09-27
- * Created by wangkang
- * Copyright (C) 2016 itkk.org, All rights reserved.
- */
-package org.itkk.udf.scheduler.client;
-
-/**
- * 描述 : TriggerDataMapKey
- *
- * @author wangkang
- */
-public enum TriggerDataMapKey {
- /**
- * 描述 : 父触发ID
- */
- PARENT_TRIGGER_ID("parentTriggerId"),
- /**
- * 描述 : 触发ID
- */
- TRIGGER_ID("triggerId"),
- /**
- * 描述 : 触发类型
- */
- TRIGGER_TYPE("triggerType"),
- /**
- * 描述 : 服务代码
- */
- SERVICE_CODE("serviceCode"),
- /**
- * 描述 : bean名称
- */
- BEAN_NAME("beanName"),
- /**
- * 描述 : 是否异步
- */
- ASYNC("async");
-
- /**
- *
- * Field value: 参数值
- *
- */
- private String value;
-
- /**
- *
- * Description: 构造函数
- *
- *
- * @param value 构造函数
- */
- TriggerDataMapKey(String value) {
- this.value = value;
- }
-
- /**
- *
- * Description: 放回int值
- *
- *
- * @return value 放回int值
- */
- public String value() {
- return this.value;
- }
-}
+/**
+ * TriggerDataMapKey.java
+ * Created at 2016-09-27
+ * Created by wangkang
+ * Copyright (C) 2016 itkk.org, All rights reserved.
+ */
+package org.itkk.udf.scheduler.client;
+
+/**
+ * 描述 : TriggerDataMapKey
+ *
+ * @author wangkang
+ */
+public enum TriggerDataMapKey {
+ /**
+ * 描述 : 父触发ID
+ */
+ PARENT_TRIGGER_ID("parentTriggerId"),
+ /**
+ * 描述 : 触发ID
+ */
+ TRIGGER_ID("triggerId"),
+ /**
+ * 描述 : 触发类型
+ */
+ TRIGGER_TYPE("triggerType"),
+ /**
+ * 描述 : 服务代码
+ */
+ SERVICE_CODE("serviceCode"),
+ /**
+ * 描述 : bean名称
+ */
+ BEAN_NAME("beanName"),
+ /**
+ * 描述 : 是否异步
+ */
+ ASYNC("async");
+
+ /**
+ *
+ * Field value: 参数值
+ *
+ */
+ private String value;
+
+ /**
+ *
+ * Description: 构造函数
+ *
+ *
+ * @param value 构造函数
+ */
+ TriggerDataMapKey(String value) {
+ this.value = value;
+ }
+
+ /**
+ *
+ * Description: 放回int值
+ *
+ *
+ * @return value 放回int值
+ */
+ public String value() {
+ return this.value;
+ }
+}
diff --git a/udf-starter-scheduler-client/src/main/java/org/itkk/udf/scheduler/client/TriggerType.java b/udf-stater/udf-starter-scheduler-client/src/main/java/org/itkk/udf/scheduler/client/TriggerType.java
similarity index 94%
rename from udf-starter-scheduler-client/src/main/java/org/itkk/udf/scheduler/client/TriggerType.java
rename to udf-stater/udf-starter-scheduler-client/src/main/java/org/itkk/udf/scheduler/client/TriggerType.java
index 76d7306..2f42bcf 100644
--- a/udf-starter-scheduler-client/src/main/java/org/itkk/udf/scheduler/client/TriggerType.java
+++ b/udf-stater/udf-starter-scheduler-client/src/main/java/org/itkk/udf/scheduler/client/TriggerType.java
@@ -1,56 +1,56 @@
-/**
- * TriggerType.java
- * Created at 2016-09-27
- * Created by wangkang
- * Copyright (C) 2016 itkk.org, All rights reserved.
- */
-package org.itkk.udf.scheduler.client;
-
-/**
- * 描述 : TriggerType
- *
- * @author wangkang
- */
-public enum TriggerType {
- /**
- * 描述 : 手动触发
- */
- MANUAL("manual"),
- /**
- * 描述 : 触发器触发
- */
- TRIGGER("trigger"),
- /**
- * 描述 : 触发链
- */
- CALL_CHAIN("callChain");
-
- /**
- *
- * Field value: 参数值
- *
- */
- private String value;
-
- /**
- *
- * Description: 构造函数
- *
- *
- * @param value 构造函数
- */
- TriggerType(String value) {
- this.value = value;
- }
-
- /**
- *
- * Description: 放回int值
- *
- *
- * @return value 放回int值
- */
- public String value() {
- return this.value;
- }
-}
+/**
+ * TriggerType.java
+ * Created at 2016-09-27
+ * Created by wangkang
+ * Copyright (C) 2016 itkk.org, All rights reserved.
+ */
+package org.itkk.udf.scheduler.client;
+
+/**
+ * 描述 : TriggerType
+ *
+ * @author wangkang
+ */
+public enum TriggerType {
+ /**
+ * 描述 : 手动触发
+ */
+ MANUAL("manual"),
+ /**
+ * 描述 : 触发器触发
+ */
+ TRIGGER("trigger"),
+ /**
+ * 描述 : 触发链
+ */
+ CALL_CHAIN("callChain");
+
+ /**
+ *
+ * Field value: 参数值
+ *
+ */
+ private String value;
+
+ /**
+ *
+ * Description: 构造函数
+ *
+ *
+ * @param value 构造函数
+ */
+ TriggerType(String value) {
+ this.value = value;
+ }
+
+ /**
+ *
+ * Description: 放回int值
+ *
+ *
+ * @return value 放回int值
+ */
+ public String value() {
+ return this.value;
+ }
+}
diff --git a/udf-starter-scheduler-client/src/main/java/org/itkk/udf/scheduler/client/domain/RmsJobParam.java b/udf-stater/udf-starter-scheduler-client/src/main/java/org/itkk/udf/scheduler/client/domain/RmsJobParam.java
similarity index 95%
rename from udf-starter-scheduler-client/src/main/java/org/itkk/udf/scheduler/client/domain/RmsJobParam.java
rename to udf-stater/udf-starter-scheduler-client/src/main/java/org/itkk/udf/scheduler/client/domain/RmsJobParam.java
index 3123a80..664f88f 100644
--- a/udf-starter-scheduler-client/src/main/java/org/itkk/udf/scheduler/client/domain/RmsJobParam.java
+++ b/udf-stater/udf-starter-scheduler-client/src/main/java/org/itkk/udf/scheduler/client/domain/RmsJobParam.java
@@ -1,80 +1,80 @@
-/**
- * RmsJobParam.java
- * Created at 2017-06-04
- * Created by Administrator
- * Copyright (C) 2016 itkk.org, All rights reserved.
- */
-package org.itkk.udf.scheduler.client.domain;
-
-import io.swagger.annotations.ApiModel;
-import io.swagger.annotations.ApiModelProperty;
-import lombok.Data;
-import lombok.ToString;
-
-import java.io.Serializable;
-import java.util.Map;
-
-/**
- * 描述 : RmsJobParam
- *
- * @author Administrator
- */
-@ApiModel(description = "通用job参数")
-@Data
-@ToString
-public class RmsJobParam implements Serializable {
-
- /**
- * 描述 : ID
- */
- private static final long serialVersionUID = 1L;
-
- /**
- * 描述 : 主键ID
- */
- @ApiModelProperty(value = "主键ID", required = true, dataType = "string")
- private String id;
-
- /**
- * 父ID
- */
- @ApiModelProperty(value = "父ID", required = false, dataType = "string")
- private String parentId;
-
- /**
- * 描述 : 触发实例ID
- */
- @ApiModelProperty(value = "触发实例ID", required = true, dataType = "string")
- private String fireInstanceId;
-
- /**
- * 描述 : 触发方式
- */
- @ApiModelProperty(value = "触发方式", required = true, dataType = "string")
- private String triggerType;
-
- /**
- * 描述 : 服务代码
- */
- @ApiModelProperty(value = "服务代码", required = true, dataType = "string")
- private String serviceCode;
-
- /**
- * 描述 : bean名称
- */
- @ApiModelProperty(value = "bean名称", required = true, dataType = "string")
- private String beanName;
-
- /**
- * 描述 : 是否异步
- */
- @ApiModelProperty(value = "是否异步", required = true, dataType = "boolean")
- private Boolean async;
-
- /**
- * 描述 : 作业参数
- */
- @ApiModelProperty(value = "作业参数", required = true, dataType = "object")
- private Map jobDataMap; //NOSONAR
-
-}
+/**
+ * RmsJobParam.java
+ * Created at 2017-06-04
+ * Created by Administrator
+ * Copyright (C) 2016 itkk.org, All rights reserved.
+ */
+package org.itkk.udf.scheduler.client.domain;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.ToString;
+
+import java.io.Serializable;
+import java.util.Map;
+
+/**
+ * 描述 : RmsJobParam
+ *
+ * @author Administrator
+ */
+@ApiModel(description = "通用job参数")
+@Data
+@ToString
+public class RmsJobParam implements Serializable {
+
+ /**
+ * 描述 : ID
+ */
+ private static final long serialVersionUID = 1L;
+
+ /**
+ * 描述 : 主键ID
+ */
+ @ApiModelProperty(value = "主键ID", required = true, dataType = "string")
+ private String id;
+
+ /**
+ * 父ID
+ */
+ @ApiModelProperty(value = "父ID", required = false, dataType = "string")
+ private String parentId;
+
+ /**
+ * 描述 : 触发实例ID
+ */
+ @ApiModelProperty(value = "触发实例ID", required = true, dataType = "string")
+ private String fireInstanceId;
+
+ /**
+ * 描述 : 触发方式
+ */
+ @ApiModelProperty(value = "触发方式", required = true, dataType = "string")
+ private String triggerType;
+
+ /**
+ * 描述 : 服务代码
+ */
+ @ApiModelProperty(value = "服务代码", required = true, dataType = "string")
+ private String serviceCode;
+
+ /**
+ * 描述 : bean名称
+ */
+ @ApiModelProperty(value = "bean名称", required = true, dataType = "string")
+ private String beanName;
+
+ /**
+ * 描述 : 是否异步
+ */
+ @ApiModelProperty(value = "是否异步", required = true, dataType = "boolean")
+ private Boolean async;
+
+ /**
+ * 描述 : 作业参数
+ */
+ @ApiModelProperty(value = "作业参数", required = true, dataType = "object")
+ private Map jobDataMap; //NOSONAR
+
+}
diff --git a/udf-starter-scheduler-client/src/main/java/org/itkk/udf/scheduler/client/domain/RmsJobResult.java b/udf-stater/udf-starter-scheduler-client/src/main/java/org/itkk/udf/scheduler/client/domain/RmsJobResult.java
similarity index 96%
rename from udf-starter-scheduler-client/src/main/java/org/itkk/udf/scheduler/client/domain/RmsJobResult.java
rename to udf-stater/udf-starter-scheduler-client/src/main/java/org/itkk/udf/scheduler/client/domain/RmsJobResult.java
index 919bf9a..7de5215 100644
--- a/udf-starter-scheduler-client/src/main/java/org/itkk/udf/scheduler/client/domain/RmsJobResult.java
+++ b/udf-stater/udf-starter-scheduler-client/src/main/java/org/itkk/udf/scheduler/client/domain/RmsJobResult.java
@@ -1,74 +1,74 @@
-/**
- * RmsJobResult.java
- * Created at 2017-06-04
- * Created by Administrator
- * Copyright (C) 2016 itkk.org, All rights reserved.
- */
-package org.itkk.udf.scheduler.client.domain;
-
-import io.swagger.annotations.ApiModel;
-import io.swagger.annotations.ApiModelProperty;
-import lombok.Data;
-import lombok.ToString;
-
-import java.io.Serializable;
-import java.util.Date;
-
-/**
- * 描述 : RmsJobResult
- *
- * @author Administrator
- */
-@ApiModel(description = "通用job返回值")
-@Data
-@ToString
-public class RmsJobResult implements Serializable {
-
- /**
- * 描述 : ID
- */
- private static final long serialVersionUID = 1L;
-
- /**
- * 描述 : 主键ID
- */
- @ApiModelProperty(value = "主键ID", required = true, dataType = "string")
- private String id;
-
- /**
- * 描述 : 客户端接收时间
- */
- @ApiModelProperty(value = "客户端接收时间", required = true, dataType = "long")
- private Date clientReceiveTime;
-
- /**
- * 描述 : 客户端开始时间
- */
- @ApiModelProperty(value = "客户端开始时间", required = true, dataType = "long")
- private Date clientStartExecuteTime;
-
- /**
- * 描述 : 客户端结束时间
- */
- @ApiModelProperty(value = "客户端结束时间", required = false, dataType = "long")
- private Date clientEndExecuteTime;
-
- /**
- * 描述 : 状态
- */
- @ApiModelProperty(value = "状态", required = true, dataType = "int")
- private Integer stats;
-
- /**
- * 描述 : 错误信息
- */
- @ApiModelProperty(value = "错误信息", required = true, dataType = "string")
- private String errorMsg;
-
- /**
- * 描述 : param
- */
- @ApiModelProperty(value = "参数", required = true, dataType = "string")
- private RmsJobParam param;
-
-}
+/**
+ * RmsJobResult.java
+ * Created at 2017-06-04
+ * Created by Administrator
+ * Copyright (C) 2016 itkk.org, All rights reserved.
+ */
+package org.itkk.udf.scheduler.client.domain;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.ToString;
+
+import java.io.Serializable;
+import java.util.Date;
+
+/**
+ * 描述 : RmsJobResult
+ *
+ * @author Administrator
+ */
+@ApiModel(description = "通用job返回值")
+@Data
+@ToString
+public class RmsJobResult implements Serializable {
+
+ /**
+ * 描述 : ID
+ */
+ private static final long serialVersionUID = 1L;
+
+ /**
+ * 描述 : 主键ID
+ */
+ @ApiModelProperty(value = "主键ID", required = true, dataType = "string")
+ private String id;
+
+ /**
+ * 描述 : 客户端接收时间
+ */
+ @ApiModelProperty(value = "客户端接收时间", required = true, dataType = "long")
+ private Date clientReceiveTime;
+
+ /**
+ * 描述 : 客户端开始时间
+ */
+ @ApiModelProperty(value = "客户端开始时间", required = true, dataType = "long")
+ private Date clientStartExecuteTime;
+
+ /**
+ * 描述 : 客户端结束时间
+ */
+ @ApiModelProperty(value = "客户端结束时间", required = false, dataType = "long")
+ private Date clientEndExecuteTime;
+
+ /**
+ * 描述 : 状态
+ */
+ @ApiModelProperty(value = "状态", required = true, dataType = "int")
+ private Integer stats;
+
+ /**
+ * 描述 : 错误信息
+ */
+ @ApiModelProperty(value = "错误信息", required = true, dataType = "string")
+ private String errorMsg;
+
+ /**
+ * 描述 : param
+ */
+ @ApiModelProperty(value = "参数", required = true, dataType = "string")
+ private RmsJobParam param;
+
+}
diff --git a/udf-starter-scheduler-client/src/main/java/org/itkk/udf/scheduler/client/executor/AbstractExecutor.java b/udf-stater/udf-starter-scheduler-client/src/main/java/org/itkk/udf/scheduler/client/executor/AbstractExecutor.java
similarity index 96%
rename from udf-starter-scheduler-client/src/main/java/org/itkk/udf/scheduler/client/executor/AbstractExecutor.java
rename to udf-stater/udf-starter-scheduler-client/src/main/java/org/itkk/udf/scheduler/client/executor/AbstractExecutor.java
index c32330e..3418c95 100644
--- a/udf-starter-scheduler-client/src/main/java/org/itkk/udf/scheduler/client/executor/AbstractExecutor.java
+++ b/udf-stater/udf-starter-scheduler-client/src/main/java/org/itkk/udf/scheduler/client/executor/AbstractExecutor.java
@@ -1,89 +1,89 @@
-/**
- * AbstractExecutor.java
- * Created at 2017-08-09
- * Created by Administrator
- * Copyright (C) 2016 egridcloud.com, All rights reserved.
- */
-package org.itkk.udf.scheduler.client.executor;
-
-import java.util.HashMap;
-import java.util.Map;
-
-import org.itkk.udf.scheduler.client.TriggerDataMapKey;
-import org.itkk.udf.scheduler.client.TriggerType;
-import org.itkk.udf.scheduler.client.domain.RmsJobParam;
-import org.itkk.udf.scheduler.client.service.SchClientService;
-import org.springframework.beans.factory.annotation.Autowired;
-
-/**
- * 描述 : AbstractExecutor
- *
- * @author Administrator
- *
- */
-public abstract class AbstractExecutor {
-
- /**
- * schClientService
- */
- @Autowired
- private SchClientService schClientService;
-
- /**
- * 执行方法 描述 : 执行方法
- *
- * @param param param
- */
- public void handle(RmsJobParam param) {
- this.handle(param.getId(), param.getJobDataMap());
- }
-
- /**
- *
- * 描述 : 调用链 (允许并发,异步调用)
- *
- * @param parentId 父ID
- * @param serviceCode 服务代码
- * @param beanName bean名称
- * @param param 业务参数
- * @return 结果
- */
- protected String chain(String parentId, String serviceCode, String beanName, Map param) {
- return this.chain(true, parentId, serviceCode, beanName, true, param);
- }
-
- /**
- *
- * 描述 : 调用链
- *
- * @param isConcurrent 是否并发(true:允许并发,false:禁止并发)
- * @param parentId 父ID
- * @param serviceCode 服务代码
- * @param beanName bean名称
- * @param async 是否异步
- * @param param 业务参数
- * @return 结果
- */
- protected String chain(boolean isConcurrent, String parentId, String serviceCode, String beanName, boolean async, Map param) {
- //构建jobDataMap
- Map jdm = new HashMap<>();
- jdm.put(TriggerDataMapKey.PARENT_TRIGGER_ID.value(), parentId);
- jdm.put(TriggerDataMapKey.TRIGGER_TYPE.value(), TriggerType.CALL_CHAIN.value());
- jdm.put(TriggerDataMapKey.SERVICE_CODE.value(), serviceCode);
- jdm.put(TriggerDataMapKey.BEAN_NAME.value(), beanName);
- jdm.put(TriggerDataMapKey.ASYNC.value(), Boolean.toString(async));
- jdm.putAll(param);
- // 调用 & 返回
- String jobCode = isConcurrent ? "rmsJob" : "rmsJobDisallowConcurrent";
- return this.schClientService.trigger(jobCode, jdm);
- }
-
- /**
- * 描述 : 执行方法
- *
- * @param id id
- * @param jobDataMap jobDataMap
- */
- protected abstract void handle(String id, Map jobDataMap);
-
-}
+/**
+ * AbstractExecutor.java
+ * Created at 2017-08-09
+ * Created by Administrator
+ * Copyright (C) 2016 egridcloud.com, All rights reserved.
+ */
+package org.itkk.udf.scheduler.client.executor;
+
+import java.util.HashMap;
+import java.util.Map;
+
+import org.itkk.udf.scheduler.client.TriggerDataMapKey;
+import org.itkk.udf.scheduler.client.TriggerType;
+import org.itkk.udf.scheduler.client.domain.RmsJobParam;
+import org.itkk.udf.scheduler.client.service.SchClientService;
+import org.springframework.beans.factory.annotation.Autowired;
+
+/**
+ * 描述 : AbstractExecutor
+ *
+ * @author Administrator
+ *
+ */
+public abstract class AbstractExecutor {
+
+ /**
+ * schClientService
+ */
+ @Autowired
+ private SchClientService schClientService;
+
+ /**
+ * 执行方法 描述 : 执行方法
+ *
+ * @param param param
+ */
+ public void handle(RmsJobParam param) {
+ this.handle(param.getId(), param.getJobDataMap());
+ }
+
+ /**
+ *
+ * 描述 : 调用链 (允许并发,异步调用)
+ *
+ * @param parentId 父ID
+ * @param serviceCode 服务代码
+ * @param beanName bean名称
+ * @param param 业务参数
+ * @return 结果
+ */
+ protected String chain(String parentId, String serviceCode, String beanName, Map param) {
+ return this.chain(true, parentId, serviceCode, beanName, true, param);
+ }
+
+ /**
+ *
+ * 描述 : 调用链
+ *
+ * @param isConcurrent 是否并发(true:允许并发,false:禁止并发)
+ * @param parentId 父ID
+ * @param serviceCode 服务代码
+ * @param beanName bean名称
+ * @param async 是否异步
+ * @param param 业务参数
+ * @return 结果
+ */
+ protected String chain(boolean isConcurrent, String parentId, String serviceCode, String beanName, boolean async, Map param) {
+ //构建jobDataMap
+ Map jdm = new HashMap<>();
+ jdm.put(TriggerDataMapKey.PARENT_TRIGGER_ID.value(), parentId);
+ jdm.put(TriggerDataMapKey.TRIGGER_TYPE.value(), TriggerType.CALL_CHAIN.value());
+ jdm.put(TriggerDataMapKey.SERVICE_CODE.value(), serviceCode);
+ jdm.put(TriggerDataMapKey.BEAN_NAME.value(), beanName);
+ jdm.put(TriggerDataMapKey.ASYNC.value(), Boolean.toString(async));
+ jdm.putAll(param);
+ // 调用 & 返回
+ String jobCode = isConcurrent ? "rmsJob" : "rmsJobDisallowConcurrent";
+ return this.schClientService.trigger(jobCode, jdm);
+ }
+
+ /**
+ * 描述 : 执行方法
+ *
+ * @param id id
+ * @param jobDataMap jobDataMap
+ */
+ protected abstract void handle(String id, Map jobDataMap);
+
+}
diff --git a/udf-starter-scheduler-client/src/main/java/org/itkk/udf/scheduler/client/service/SchClientService.java b/udf-stater/udf-starter-scheduler-client/src/main/java/org/itkk/udf/scheduler/client/service/SchClientService.java
similarity index 96%
rename from udf-starter-scheduler-client/src/main/java/org/itkk/udf/scheduler/client/service/SchClientService.java
rename to udf-stater/udf-starter-scheduler-client/src/main/java/org/itkk/udf/scheduler/client/service/SchClientService.java
index 101ce80..61719c9 100644
--- a/udf-starter-scheduler-client/src/main/java/org/itkk/udf/scheduler/client/service/SchClientService.java
+++ b/udf-stater/udf-starter-scheduler-client/src/main/java/org/itkk/udf/scheduler/client/service/SchClientService.java
@@ -1,53 +1,53 @@
-/**
- * SchClientService.java
- * Created at 2017-06-12
- * Created by Administrator
- * Copyright (C) 2016 itkk.org, All rights reserved.
- */
-package org.itkk.udf.scheduler.client.service;
-
-import org.itkk.udf.core.RestResponse;
-import org.itkk.udf.rms.Rms;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.core.ParameterizedTypeReference;
-import org.springframework.http.ResponseEntity;
-import org.springframework.stereotype.Service;
-
-import java.util.HashMap;
-import java.util.Map;
-
-/**
- * 描述 : SchClientService
- *
- * @author Administrator
- */
-@Service
-public class SchClientService {
-
- /**
- * 描述 : rms
- */
- @Autowired
- private Rms rms;
-
- /**
- * 描述 : 触发作业
- *
- * @param jobCode 作业代码
- * @param param 参数
- * @return id
- */
- public String trigger(String jobCode, Map param) {
- //接口编号
- final String serviceCode = "SCHEDULER_JOB_4";
- //rest参数
- Map uriVariables = new HashMap<>();
- uriVariables.put("jobCode", jobCode);
- //请求
- ResponseEntity> result = rms.call(serviceCode, param, null, new ParameterizedTypeReference>() {
- }, uriVariables);
- //返回
- return result.getBody().getResult();
- }
-
-}
+/**
+ * SchClientService.java
+ * Created at 2017-06-12
+ * Created by Administrator
+ * Copyright (C) 2016 itkk.org, All rights reserved.
+ */
+package org.itkk.udf.scheduler.client.service;
+
+import org.itkk.udf.core.RestResponse;
+import org.itkk.udf.rms.Rms;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.core.ParameterizedTypeReference;
+import org.springframework.http.ResponseEntity;
+import org.springframework.stereotype.Service;
+
+import java.util.HashMap;
+import java.util.Map;
+
+/**
+ * 描述 : SchClientService
+ *
+ * @author Administrator
+ */
+@Service
+public class SchClientService {
+
+ /**
+ * 描述 : rms
+ */
+ @Autowired
+ private Rms rms;
+
+ /**
+ * 描述 : 触发作业
+ *
+ * @param jobCode 作业代码
+ * @param param 参数
+ * @return id
+ */
+ public String trigger(String jobCode, Map param) {
+ //接口编号
+ final String serviceCode = "SCHEDULER_JOB_4";
+ //rest参数
+ Map uriVariables = new HashMap<>();
+ uriVariables.put("jobCode", jobCode);
+ //请求
+ ResponseEntity> result = rms.call(serviceCode, param, null, new ParameterizedTypeReference>() {
+ }, uriVariables);
+ //返回
+ return result.getBody().getResult();
+ }
+
+}
diff --git a/udf-starter-scheduler-client/src/main/java/org/itkk/udf/scheduler/client/web/ISchClientController.java b/udf-stater/udf-starter-scheduler-client/src/main/java/org/itkk/udf/scheduler/client/web/ISchClientController.java
similarity index 97%
rename from udf-starter-scheduler-client/src/main/java/org/itkk/udf/scheduler/client/web/ISchClientController.java
rename to udf-stater/udf-starter-scheduler-client/src/main/java/org/itkk/udf/scheduler/client/web/ISchClientController.java
index 59b7813..705cd05 100644
--- a/udf-starter-scheduler-client/src/main/java/org/itkk/udf/scheduler/client/web/ISchClientController.java
+++ b/udf-stater/udf-starter-scheduler-client/src/main/java/org/itkk/udf/scheduler/client/web/ISchClientController.java
@@ -1,47 +1,47 @@
-/**
- * ISchClientController.java
- * Created at 2017-05-26
- * Created by Administrator
- * Copyright (C) 2016 itkk.org, All rights reserved.
- */
-package org.itkk.udf.scheduler.client.web;
-
-import io.swagger.annotations.Api;
-import io.swagger.annotations.ApiImplicitParam;
-import io.swagger.annotations.ApiImplicitParams;
-import io.swagger.annotations.ApiOperation;
-import org.itkk.udf.core.RestResponse;
-import org.itkk.udf.scheduler.client.domain.RmsJobParam;
-import org.itkk.udf.scheduler.client.domain.RmsJobResult;
-import org.springframework.web.bind.annotation.RequestBody;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RequestMethod;
-
-/**
- * 描述 : ISchClientController
- *
- * @author Administrator
- */
-@Api(value = "计划任务客户端", consumes = "application/json", produces = "application/json",
- protocols = "http")
-@RequestMapping(value = "/service/scheduler/client")
-public interface ISchClientController { //NOSONAR
-
- /**
- * 描述 : 执行计划任务
- *
- * @param param param
- * @return 执行计划任务
- */
- @ApiOperation(value = "接口编号自定义", notes = "执行计划任务")
- @ApiImplicitParams({
- @ApiImplicitParam(paramType = "header", name = "rmsApplicationName", value = "rms应用名称",
- required = true, dataType = "string"),
- @ApiImplicitParam(paramType = "header", name = "rmsSign", value = "rms认证秘钥", required = true,
- dataType = "string"),
- @ApiImplicitParam(paramType = "header", name = "rmsServiceCode", value = "rms接口编号",
- required = true, dataType = "string")})
- @RequestMapping(method = RequestMethod.POST)
- RestResponse execute(@RequestBody RmsJobParam param);
-
-}
+/**
+ * ISchClientController.java
+ * Created at 2017-05-26
+ * Created by Administrator
+ * Copyright (C) 2016 itkk.org, All rights reserved.
+ */
+package org.itkk.udf.scheduler.client.web;
+
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiImplicitParam;
+import io.swagger.annotations.ApiImplicitParams;
+import io.swagger.annotations.ApiOperation;
+import org.itkk.udf.core.RestResponse;
+import org.itkk.udf.scheduler.client.domain.RmsJobParam;
+import org.itkk.udf.scheduler.client.domain.RmsJobResult;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestMethod;
+
+/**
+ * 描述 : ISchClientController
+ *
+ * @author Administrator
+ */
+@Api(value = "计划任务客户端", consumes = "application/json", produces = "application/json",
+ protocols = "http")
+@RequestMapping(value = "/service/scheduler/client")
+public interface ISchClientController { //NOSONAR
+
+ /**
+ * 描述 : 执行计划任务
+ *
+ * @param param param
+ * @return 执行计划任务
+ */
+ @ApiOperation(value = "接口编号自定义", notes = "执行计划任务")
+ @ApiImplicitParams({
+ @ApiImplicitParam(paramType = "header", name = "rmsApplicationName", value = "rms应用名称",
+ required = true, dataType = "string"),
+ @ApiImplicitParam(paramType = "header", name = "rmsSign", value = "rms认证秘钥", required = true,
+ dataType = "string"),
+ @ApiImplicitParam(paramType = "header", name = "rmsServiceCode", value = "rms接口编号",
+ required = true, dataType = "string")})
+ @RequestMapping(method = RequestMethod.POST)
+ RestResponse execute(@RequestBody RmsJobParam param);
+
+}
diff --git a/udf-starter-scheduler-client/src/main/java/org/itkk/udf/scheduler/client/web/SchClientController.java b/udf-stater/udf-starter-scheduler-client/src/main/java/org/itkk/udf/scheduler/client/web/SchClientController.java
similarity index 96%
rename from udf-starter-scheduler-client/src/main/java/org/itkk/udf/scheduler/client/web/SchClientController.java
rename to udf-stater/udf-starter-scheduler-client/src/main/java/org/itkk/udf/scheduler/client/web/SchClientController.java
index 6a5d426..421adf6 100644
--- a/udf-starter-scheduler-client/src/main/java/org/itkk/udf/scheduler/client/web/SchClientController.java
+++ b/udf-stater/udf-starter-scheduler-client/src/main/java/org/itkk/udf/scheduler/client/web/SchClientController.java
@@ -1,57 +1,57 @@
-/**
- * SchClientController.java
- * Created at 2017-05-26
- * Created by Administrator
- * Copyright (C) 2016 itkk.org, All rights reserved.
- */
-package org.itkk.udf.scheduler.client.web;
-
-import org.itkk.udf.core.RestResponse;
-import org.itkk.udf.scheduler.client.RmsJobStats;
-import org.itkk.udf.scheduler.client.SchClientHandle;
-import org.itkk.udf.scheduler.client.domain.RmsJobParam;
-import org.itkk.udf.scheduler.client.domain.RmsJobResult;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.web.bind.annotation.RequestBody;
-import org.springframework.web.bind.annotation.RestController;
-
-import java.util.Date;
-
-/**
- * 描述 : SchClientController
- *
- * @author Administrator
- */
-@RestController
-public class SchClientController implements ISchClientController {
-
- /**
- * 描述 : schClientHandle
- */
- @Autowired
- private SchClientHandle schClientHandle;
-
- @Override
- public RestResponse execute(@RequestBody RmsJobParam param) {
- //记录来接收时间
- Date receiveTime = new Date();
- //定义返回值
- RmsJobResult result = new RmsJobResult();
- result.setClientReceiveTime(receiveTime);
- result.setId(param.getId());
- result.setClientStartExecuteTime(new Date());
- result.setParam(param);
- //执行(区分同步跟异步)
- if (param.getAsync()) {
- schClientHandle.asyncHandle(param, result);
- result.setStats(RmsJobStats.EXECUTING.value());
- } else {
- schClientHandle.handle(param);
- result.setClientEndExecuteTime(new Date());
- result.setStats(RmsJobStats.COMPLETE.value());
- }
- //返回
- return new RestResponse<>(result);
- }
-
-}
+/**
+ * SchClientController.java
+ * Created at 2017-05-26
+ * Created by Administrator
+ * Copyright (C) 2016 itkk.org, All rights reserved.
+ */
+package org.itkk.udf.scheduler.client.web;
+
+import org.itkk.udf.core.RestResponse;
+import org.itkk.udf.scheduler.client.RmsJobStats;
+import org.itkk.udf.scheduler.client.SchClientHandle;
+import org.itkk.udf.scheduler.client.domain.RmsJobParam;
+import org.itkk.udf.scheduler.client.domain.RmsJobResult;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RestController;
+
+import java.util.Date;
+
+/**
+ * 描述 : SchClientController
+ *
+ * @author Administrator
+ */
+@RestController
+public class SchClientController implements ISchClientController {
+
+ /**
+ * 描述 : schClientHandle
+ */
+ @Autowired
+ private SchClientHandle schClientHandle;
+
+ @Override
+ public RestResponse execute(@RequestBody RmsJobParam param) {
+ //记录来接收时间
+ Date receiveTime = new Date();
+ //定义返回值
+ RmsJobResult result = new RmsJobResult();
+ result.setClientReceiveTime(receiveTime);
+ result.setId(param.getId());
+ result.setClientStartExecuteTime(new Date());
+ result.setParam(param);
+ //执行(区分同步跟异步)
+ if (param.getAsync()) {
+ schClientHandle.asyncHandle(param, result);
+ result.setStats(RmsJobStats.EXECUTING.value());
+ } else {
+ schClientHandle.handle(param);
+ result.setClientEndExecuteTime(new Date());
+ result.setStats(RmsJobStats.COMPLETE.value());
+ }
+ //返回
+ return new RestResponse<>(result);
+ }
+
+}
diff --git a/udf-starter-scheduler/dbTables/tables_cloudscape.sql b/udf-stater/udf-starter-scheduler/dbTables/tables_cloudscape.sql
similarity index 100%
rename from udf-starter-scheduler/dbTables/tables_cloudscape.sql
rename to udf-stater/udf-starter-scheduler/dbTables/tables_cloudscape.sql
diff --git a/udf-starter-scheduler/dbTables/tables_cubrid.sql b/udf-stater/udf-starter-scheduler/dbTables/tables_cubrid.sql
similarity index 100%
rename from udf-starter-scheduler/dbTables/tables_cubrid.sql
rename to udf-stater/udf-starter-scheduler/dbTables/tables_cubrid.sql
diff --git a/udf-starter-scheduler/dbTables/tables_db2.sql b/udf-stater/udf-starter-scheduler/dbTables/tables_db2.sql
similarity index 100%
rename from udf-starter-scheduler/dbTables/tables_db2.sql
rename to udf-stater/udf-starter-scheduler/dbTables/tables_db2.sql
diff --git a/udf-starter-scheduler/dbTables/tables_db2_v72.sql b/udf-stater/udf-starter-scheduler/dbTables/tables_db2_v72.sql
similarity index 100%
rename from udf-starter-scheduler/dbTables/tables_db2_v72.sql
rename to udf-stater/udf-starter-scheduler/dbTables/tables_db2_v72.sql
diff --git a/udf-starter-scheduler/dbTables/tables_db2_v8.sql b/udf-stater/udf-starter-scheduler/dbTables/tables_db2_v8.sql
similarity index 100%
rename from udf-starter-scheduler/dbTables/tables_db2_v8.sql
rename to udf-stater/udf-starter-scheduler/dbTables/tables_db2_v8.sql
diff --git a/udf-starter-scheduler/dbTables/tables_db2_v95.sql b/udf-stater/udf-starter-scheduler/dbTables/tables_db2_v95.sql
similarity index 100%
rename from udf-starter-scheduler/dbTables/tables_db2_v95.sql
rename to udf-stater/udf-starter-scheduler/dbTables/tables_db2_v95.sql
diff --git a/udf-starter-scheduler/dbTables/tables_derby.sql b/udf-stater/udf-starter-scheduler/dbTables/tables_derby.sql
similarity index 100%
rename from udf-starter-scheduler/dbTables/tables_derby.sql
rename to udf-stater/udf-starter-scheduler/dbTables/tables_derby.sql
diff --git a/udf-starter-scheduler/dbTables/tables_derby_previous.sql b/udf-stater/udf-starter-scheduler/dbTables/tables_derby_previous.sql
similarity index 100%
rename from udf-starter-scheduler/dbTables/tables_derby_previous.sql
rename to udf-stater/udf-starter-scheduler/dbTables/tables_derby_previous.sql
diff --git a/udf-starter-scheduler/dbTables/tables_firebird.sql b/udf-stater/udf-starter-scheduler/dbTables/tables_firebird.sql
similarity index 100%
rename from udf-starter-scheduler/dbTables/tables_firebird.sql
rename to udf-stater/udf-starter-scheduler/dbTables/tables_firebird.sql
diff --git a/udf-starter-scheduler/dbTables/tables_h2.sql b/udf-stater/udf-starter-scheduler/dbTables/tables_h2.sql
similarity index 100%
rename from udf-starter-scheduler/dbTables/tables_h2.sql
rename to udf-stater/udf-starter-scheduler/dbTables/tables_h2.sql
diff --git a/udf-starter-scheduler/dbTables/tables_hsqldb.sql b/udf-stater/udf-starter-scheduler/dbTables/tables_hsqldb.sql
similarity index 100%
rename from udf-starter-scheduler/dbTables/tables_hsqldb.sql
rename to udf-stater/udf-starter-scheduler/dbTables/tables_hsqldb.sql
diff --git a/udf-starter-scheduler/dbTables/tables_hsqldb_old.sql b/udf-stater/udf-starter-scheduler/dbTables/tables_hsqldb_old.sql
similarity index 100%
rename from udf-starter-scheduler/dbTables/tables_hsqldb_old.sql
rename to udf-stater/udf-starter-scheduler/dbTables/tables_hsqldb_old.sql
diff --git a/udf-starter-scheduler/dbTables/tables_informix.sql b/udf-stater/udf-starter-scheduler/dbTables/tables_informix.sql
similarity index 100%
rename from udf-starter-scheduler/dbTables/tables_informix.sql
rename to udf-stater/udf-starter-scheduler/dbTables/tables_informix.sql
diff --git a/udf-starter-scheduler/dbTables/tables_mysql.sql b/udf-stater/udf-starter-scheduler/dbTables/tables_mysql.sql
similarity index 100%
rename from udf-starter-scheduler/dbTables/tables_mysql.sql
rename to udf-stater/udf-starter-scheduler/dbTables/tables_mysql.sql
diff --git a/udf-starter-scheduler/dbTables/tables_mysql_innodb.sql b/udf-stater/udf-starter-scheduler/dbTables/tables_mysql_innodb.sql
similarity index 100%
rename from udf-starter-scheduler/dbTables/tables_mysql_innodb.sql
rename to udf-stater/udf-starter-scheduler/dbTables/tables_mysql_innodb.sql
diff --git a/udf-starter-scheduler/dbTables/tables_oracle.sql b/udf-stater/udf-starter-scheduler/dbTables/tables_oracle.sql
similarity index 100%
rename from udf-starter-scheduler/dbTables/tables_oracle.sql
rename to udf-stater/udf-starter-scheduler/dbTables/tables_oracle.sql
diff --git a/udf-starter-scheduler/dbTables/tables_pointbase.sql b/udf-stater/udf-starter-scheduler/dbTables/tables_pointbase.sql
similarity index 100%
rename from udf-starter-scheduler/dbTables/tables_pointbase.sql
rename to udf-stater/udf-starter-scheduler/dbTables/tables_pointbase.sql
diff --git a/udf-starter-scheduler/dbTables/tables_postgres.sql b/udf-stater/udf-starter-scheduler/dbTables/tables_postgres.sql
similarity index 100%
rename from udf-starter-scheduler/dbTables/tables_postgres.sql
rename to udf-stater/udf-starter-scheduler/dbTables/tables_postgres.sql
diff --git a/udf-starter-scheduler/dbTables/tables_sapdb.sql b/udf-stater/udf-starter-scheduler/dbTables/tables_sapdb.sql
similarity index 100%
rename from udf-starter-scheduler/dbTables/tables_sapdb.sql
rename to udf-stater/udf-starter-scheduler/dbTables/tables_sapdb.sql
diff --git a/udf-starter-scheduler/dbTables/tables_solid.sql b/udf-stater/udf-starter-scheduler/dbTables/tables_solid.sql
similarity index 100%
rename from udf-starter-scheduler/dbTables/tables_solid.sql
rename to udf-stater/udf-starter-scheduler/dbTables/tables_solid.sql
diff --git a/udf-starter-scheduler/dbTables/tables_sqlServer.sql b/udf-stater/udf-starter-scheduler/dbTables/tables_sqlServer.sql
similarity index 100%
rename from udf-starter-scheduler/dbTables/tables_sqlServer.sql
rename to udf-stater/udf-starter-scheduler/dbTables/tables_sqlServer.sql
diff --git a/udf-starter-scheduler/dbTables/tables_sybase.sql b/udf-stater/udf-starter-scheduler/dbTables/tables_sybase.sql
similarity index 100%
rename from udf-starter-scheduler/dbTables/tables_sybase.sql
rename to udf-stater/udf-starter-scheduler/dbTables/tables_sybase.sql
diff --git a/udf-starter-scheduler/pom.xml b/udf-stater/udf-starter-scheduler/pom.xml
similarity index 100%
rename from udf-starter-scheduler/pom.xml
rename to udf-stater/udf-starter-scheduler/pom.xml
diff --git a/udf-starter-scheduler/src/main/java/org/itkk/udf/scheduler/AutoInitCommandLineRunner.java b/udf-stater/udf-starter-scheduler/src/main/java/org/itkk/udf/scheduler/AutoInitCommandLineRunner.java
similarity index 97%
rename from udf-starter-scheduler/src/main/java/org/itkk/udf/scheduler/AutoInitCommandLineRunner.java
rename to udf-stater/udf-starter-scheduler/src/main/java/org/itkk/udf/scheduler/AutoInitCommandLineRunner.java
index d41be0d..2b3f57a 100644
--- a/udf-starter-scheduler/src/main/java/org/itkk/udf/scheduler/AutoInitCommandLineRunner.java
+++ b/udf-stater/udf-starter-scheduler/src/main/java/org/itkk/udf/scheduler/AutoInitCommandLineRunner.java
@@ -1,89 +1,89 @@
-/**
- * AutoInitCommandLineRunner.java
- * Created at 2017-08-09
- * Created by Administrator
- * Copyright (C) 2016 egridcloud.com, All rights reserved.
- */
-package org.itkk.udf.scheduler;
-
-import org.apache.commons.collections4.MapUtils;
-import org.itkk.udf.scheduler.meta.CronTriggerMeta;
-import org.itkk.udf.scheduler.meta.JobDetailMeta;
-import org.itkk.udf.scheduler.meta.SimpleTriggerMeta;
-import org.itkk.udf.scheduler.service.JobService;
-import org.itkk.udf.scheduler.service.TriggerService;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.boot.CommandLineRunner;
-import org.springframework.stereotype.Component;
-
-import java.util.Iterator;
-import java.util.Map;
-
-/**
- * 描述 : AutoInitCommandLineRunner
- *
- * @author Administrator
- */
-@Component
-public class AutoInitCommandLineRunner implements CommandLineRunner {
-
- /**
- * 描述 : schedulerProperties
- */
- @Autowired
- private SchedulerProperties schedulerProperties;
-
- /**
- * jobService
- */
- @Autowired
- private JobService jobService;
-
- /**
- * triggerService
- */
- @Autowired
- private TriggerService triggerService;
-
- @Override
- public void run(String... arg0) throws Exception { //NOSONAR
- //自动实例化jobDetail
- Map jobDetailMap = schedulerProperties.getJobDetail();
- if (MapUtils.isNotEmpty(jobDetailMap)) {
- Iterator jobDetailKeys = jobDetailMap.keySet().iterator();
- while (jobDetailKeys.hasNext()) {
- String key = jobDetailKeys.next();
- JobDetailMeta jobDetailMeta = jobDetailMap.get(key);
- if (jobDetailMeta.getAutoInit()) {
- jobService.save(key, true);
- }
- }
- }
- //自动实例化SimpleTrigger
- Map simpleTriggerMetaMap =
- schedulerProperties.getSimpleTrigger();
- if (MapUtils.isNotEmpty(simpleTriggerMetaMap)) {
- Iterator simpleTriggerMetaKeys = simpleTriggerMetaMap.keySet().iterator();
- while (simpleTriggerMetaKeys.hasNext()) {
- String key = simpleTriggerMetaKeys.next();
- SimpleTriggerMeta simpleTriggerMeta = simpleTriggerMetaMap.get(key);
- if (simpleTriggerMeta.getAutoInit()) {
- triggerService.saveSimpleTirgger(key, true);
- }
- }
- }
- //自动实例化cronTrigger
- Map sronTriggerMap = schedulerProperties.getCronTrigger();
- if (MapUtils.isNotEmpty(sronTriggerMap)) {
- Iterator sronTriggerMapKeys = sronTriggerMap.keySet().iterator();
- while (sronTriggerMapKeys.hasNext()) {
- String key = sronTriggerMapKeys.next();
- CronTriggerMeta cronTriggerMeta = sronTriggerMap.get(key);
- if (cronTriggerMeta.getAutoInit()) {
- triggerService.saveCronTrigger(key, true);
- }
- }
- }
- }
-
-}
+/**
+ * AutoInitCommandLineRunner.java
+ * Created at 2017-08-09
+ * Created by Administrator
+ * Copyright (C) 2016 egridcloud.com, All rights reserved.
+ */
+package org.itkk.udf.scheduler;
+
+import org.apache.commons.collections4.MapUtils;
+import org.itkk.udf.scheduler.meta.CronTriggerMeta;
+import org.itkk.udf.scheduler.meta.JobDetailMeta;
+import org.itkk.udf.scheduler.meta.SimpleTriggerMeta;
+import org.itkk.udf.scheduler.service.JobService;
+import org.itkk.udf.scheduler.service.TriggerService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.boot.CommandLineRunner;
+import org.springframework.stereotype.Component;
+
+import java.util.Iterator;
+import java.util.Map;
+
+/**
+ * 描述 : AutoInitCommandLineRunner
+ *
+ * @author Administrator
+ */
+@Component
+public class AutoInitCommandLineRunner implements CommandLineRunner {
+
+ /**
+ * 描述 : schedulerProperties
+ */
+ @Autowired
+ private SchedulerProperties schedulerProperties;
+
+ /**
+ * jobService
+ */
+ @Autowired
+ private JobService jobService;
+
+ /**
+ * triggerService
+ */
+ @Autowired
+ private TriggerService triggerService;
+
+ @Override
+ public void run(String... arg0) throws Exception { //NOSONAR
+ //自动实例化jobDetail
+ Map jobDetailMap = schedulerProperties.getJobDetail();
+ if (MapUtils.isNotEmpty(jobDetailMap)) {
+ Iterator jobDetailKeys = jobDetailMap.keySet().iterator();
+ while (jobDetailKeys.hasNext()) {
+ String key = jobDetailKeys.next();
+ JobDetailMeta jobDetailMeta = jobDetailMap.get(key);
+ if (jobDetailMeta.getAutoInit()) {
+ jobService.save(key, true);
+ }
+ }
+ }
+ //自动实例化SimpleTrigger
+ Map simpleTriggerMetaMap =
+ schedulerProperties.getSimpleTrigger();
+ if (MapUtils.isNotEmpty(simpleTriggerMetaMap)) {
+ Iterator simpleTriggerMetaKeys = simpleTriggerMetaMap.keySet().iterator();
+ while (simpleTriggerMetaKeys.hasNext()) {
+ String key = simpleTriggerMetaKeys.next();
+ SimpleTriggerMeta simpleTriggerMeta = simpleTriggerMetaMap.get(key);
+ if (simpleTriggerMeta.getAutoInit()) {
+ triggerService.saveSimpleTirgger(key, true);
+ }
+ }
+ }
+ //自动实例化cronTrigger
+ Map sronTriggerMap = schedulerProperties.getCronTrigger();
+ if (MapUtils.isNotEmpty(sronTriggerMap)) {
+ Iterator sronTriggerMapKeys = sronTriggerMap.keySet().iterator();
+ while (sronTriggerMapKeys.hasNext()) {
+ String key = sronTriggerMapKeys.next();
+ CronTriggerMeta cronTriggerMeta = sronTriggerMap.get(key);
+ if (cronTriggerMeta.getAutoInit()) {
+ triggerService.saveCronTrigger(key, true);
+ }
+ }
+ }
+ }
+
+}
diff --git a/udf-starter-scheduler/src/main/java/org/itkk/udf/scheduler/AutowiringSpringBeanJobFactory.java b/udf-stater/udf-starter-scheduler/src/main/java/org/itkk/udf/scheduler/AutowiringSpringBeanJobFactory.java
similarity index 100%
rename from udf-starter-scheduler/src/main/java/org/itkk/udf/scheduler/AutowiringSpringBeanJobFactory.java
rename to udf-stater/udf-starter-scheduler/src/main/java/org/itkk/udf/scheduler/AutowiringSpringBeanJobFactory.java
diff --git a/udf-starter-scheduler/src/main/java/org/itkk/udf/scheduler/IListenerEvent.java b/udf-stater/udf-starter-scheduler/src/main/java/org/itkk/udf/scheduler/IListenerEvent.java
similarity index 100%
rename from udf-starter-scheduler/src/main/java/org/itkk/udf/scheduler/IListenerEvent.java
rename to udf-stater/udf-starter-scheduler/src/main/java/org/itkk/udf/scheduler/IListenerEvent.java
diff --git a/udf-starter-scheduler/src/main/java/org/itkk/udf/scheduler/IRmsJobEvent.java b/udf-stater/udf-starter-scheduler/src/main/java/org/itkk/udf/scheduler/IRmsJobEvent.java
similarity index 100%
rename from udf-starter-scheduler/src/main/java/org/itkk/udf/scheduler/IRmsJobEvent.java
rename to udf-stater/udf-starter-scheduler/src/main/java/org/itkk/udf/scheduler/IRmsJobEvent.java
diff --git a/udf-starter-scheduler/src/main/java/org/itkk/udf/scheduler/SchedulerConfig.java b/udf-stater/udf-starter-scheduler/src/main/java/org/itkk/udf/scheduler/SchedulerConfig.java
similarity index 97%
rename from udf-starter-scheduler/src/main/java/org/itkk/udf/scheduler/SchedulerConfig.java
rename to udf-stater/udf-starter-scheduler/src/main/java/org/itkk/udf/scheduler/SchedulerConfig.java
index c713361..8c481d3 100644
--- a/udf-starter-scheduler/src/main/java/org/itkk/udf/scheduler/SchedulerConfig.java
+++ b/udf-stater/udf-starter-scheduler/src/main/java/org/itkk/udf/scheduler/SchedulerConfig.java
@@ -1,289 +1,289 @@
-/**
- * SchedulerConfig.java
- * Created at 2017-06-01
- * Created by Administrator
- * Copyright (C) 2016 itkk.org, All rights reserved.
- */
-package org.itkk.udf.scheduler;
-
-import lombok.Data;
-import org.itkk.udf.scheduler.impl.DefListenerEvent;
-import org.itkk.udf.scheduler.impl.DefRmsJobEvent;
-import org.itkk.udf.scheduler.job.ClearScheduledLog;
-import org.itkk.udf.scheduler.job.ClearScheduledTriggerLog;
-import org.itkk.udf.scheduler.listener.JobDetailListener;
-import org.itkk.udf.scheduler.listener.SchListener;
-import org.itkk.udf.scheduler.listener.TriggerDetailListener;
-import org.quartz.*;
-import org.quartz.spi.JobFactory;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.beans.factory.annotation.Qualifier;
-import org.springframework.beans.factory.config.PropertiesFactoryBean;
-import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
-import org.springframework.boot.autoconfigure.condition.SearchStrategy;
-import org.springframework.boot.context.properties.ConfigurationProperties;
-import org.springframework.context.ApplicationContext;
-import org.springframework.context.annotation.Bean;
-import org.springframework.context.annotation.Configuration;
-import org.springframework.core.io.ClassPathResource;
-import org.springframework.scheduling.quartz.CronTriggerFactoryBean;
-import org.springframework.scheduling.quartz.JobDetailFactoryBean;
-import org.springframework.scheduling.quartz.SchedulerFactoryBean;
-import org.springframework.validation.annotation.Validated;
-
-import javax.sql.DataSource;
-import javax.validation.constraints.NotNull;
-import java.io.IOException;
-import java.util.Properties;
-
-/**
- * 描述 : SchedulerConfig
- *
- * @author Administrator
- */
-@Configuration
-@ConfigurationProperties(prefix = "org.itkk.scheduler.config")
-@Validated
-@Data
-public class SchedulerConfig {
-
- /**
- * 描述 : DEF_GROUP_NAME
- */
- private static final String DEF_GROUP_NAME = "SystemAutoRun";
-
- /**
- * 描述 : 是否记录日志
- */
- @NotNull
- private Boolean logFlag = true;
-
- /**
- * 描述 : 是否记录详细日志
- */
- @NotNull
- private Boolean logDetailFlag = false;
-
- /**
- * 描述 : 是否自动启动
- */
- @NotNull
- private Boolean autoStartup = true;
-
- /**
- * 描述 : 是否覆盖已经存在的jobs
- */
- @NotNull
- private Boolean overwriteExistingJobs = true;
-
- /**
- * 描述 : 延迟启动秒数
- */
- @NotNull
- private Integer startupDelay = 0;
-
- /**
- * 描述 : Job接受applicationContext的成员变量名
- */
- @NotNull
- private String applicationContextSchedulerContextKey = "applicationContext";
-
- /**
- * 描述 : quartz配置文件地址
- */
- @NotNull
- private String quartzPropertiesPath = "def_quartz.properties";
-
- /**
- * 描述 : schedulerProperties
- */
- @Autowired
- private SchedulerProperties schedulerProperties;
-
- /**
- * 描述 : jobFactory
- *
- * @param applicationContext applicationContext
- * @return JobFactory
- */
- @Bean
- public JobFactory jobFactory(ApplicationContext applicationContext) {
- AutowiringSpringBeanJobFactory jobFactory = new AutowiringSpringBeanJobFactory();
- jobFactory.setApplicationContext(applicationContext);
- return jobFactory;
- }
-
- /**
- * 描述 : schedulerFactoryBean
- *
- * @param dataSource dataSource
- * @param jobFactory jobFactory
- * @param quartzProperties quartzProperties
- * @param schListener schListener
- * @param jobDetailListener jobDetailListener
- * @param triggerDetailListener triggerDetailListener
- * @param clearScheduledLogTrigger clearScheduledLogTrigger
- * @param clearScheduledTriggerLogTrigger clearScheduledTriggerLogTrigger
- * @return SchedulerFactoryBean
- */
- @Bean("clusterQuartzScheduler")
- public SchedulerFactoryBean schedulerFactoryBean(DataSource dataSource, JobFactory jobFactory, //NOSONAR
- Properties quartzProperties, SchedulerListener schListener, JobListener jobDetailListener,
- TriggerListener triggerDetailListener,
- @Qualifier("clearScheduledLogTrigger") Trigger clearScheduledLogTrigger,
- @Qualifier("clearScheduledTriggerLogTrigger") Trigger clearScheduledTriggerLogTrigger) { //NOSONAR
- //实例化
- SchedulerFactoryBean factory = new SchedulerFactoryBean();
- factory.setDataSource(dataSource);
- factory.setJobFactory(jobFactory);
- //属性设置
- factory.setQuartzProperties(quartzProperties);
- factory.setOverwriteExistingJobs(getOverwriteExistingJobs());
- factory.setAutoStartup(getAutoStartup());
- factory.setStartupDelay(getStartupDelay());
- factory.setApplicationContextSchedulerContextKey(getApplicationContextSchedulerContextKey());
- //添加监听器
- factory.setSchedulerListeners(schListener);
- factory.setGlobalJobListeners(jobDetailListener);
- factory.setGlobalTriggerListeners(triggerDetailListener);
- //添加默认的job
- factory.setTriggers(clearScheduledLogTrigger, clearScheduledTriggerLogTrigger);
- //返回
- return factory;
- }
-
- /**
- * 描述 : quartzProperties
- *
- * @return Properties
- * @throws IOException IOException
- */
- @Bean
- public Properties quartzProperties() throws IOException {
- PropertiesFactoryBean propertiesFactoryBean = new PropertiesFactoryBean();
- propertiesFactoryBean.setLocation(new ClassPathResource(getQuartzPropertiesPath()));
- propertiesFactoryBean.afterPropertiesSet();
- return propertiesFactoryBean.getObject();
- }
-
- /**
- * 描述 : schListener
- *
- * @return SchedulerListener
- */
- @Bean(name = "schListener")
- public SchedulerListener schListener() {
- return new SchListener();
- }
-
- /**
- * 描述 : jobDetailListener
- *
- * @return JobListener
- */
- @Bean(name = "jobDetailListener")
- public JobListener jobDetailListener() {
- return new JobDetailListener();
- }
-
- /**
- * 描述 : triggerDetailListener
- *
- * @return TriggerListener
- */
- @Bean(name = "triggerDetailListener")
- public TriggerListener triggerDetailListener() {
- return new TriggerDetailListener();
- }
-
- /**
- * 描述 : clearScheduledLogTrigger
- *
- * @param jobDetail jobDetail
- * @return CronTriggerFactoryBean
- */
- @Bean(name = "clearScheduledLogTrigger")
- public CronTriggerFactoryBean clearScheduledLogTrigger(
- @Qualifier("clearScheduledLogJobDetail") JobDetail jobDetail) {
- CronTriggerFactoryBean factoryBean = new CronTriggerFactoryBean();
- factoryBean.setDescription("清理计划任务日志");
- factoryBean.setName("clearScheduledLogTrigger");
- factoryBean.setGroup(DEF_GROUP_NAME);
- factoryBean.setJobDetail(jobDetail);
- factoryBean.setCronExpression("0 0 1 * * ? ");
- return factoryBean;
- }
-
- /**
- * 描述 : clearScheduledLogJobDetail
- *
- * @return JobDetailFactoryBean
- */
- @Bean("clearScheduledLogJobDetail")
- public JobDetailFactoryBean clearScheduledLogJobDetail() {
- JobDetailFactoryBean factoryBean = new JobDetailFactoryBean();
- factoryBean.setDescription("清理计划任务日志");
- factoryBean.setName("clearScheduledLogJobDetail");
- factoryBean.setGroup(DEF_GROUP_NAME);
- factoryBean.setJobClass(ClearScheduledLog.class);
- factoryBean.setDurability(true);
- return factoryBean;
- }
-
- /**
- * 描述 : clearScheduledTriggerLogTrigger
- *
- * @param jobDetail jobDetail
- * @return CronTriggerFactoryBean
- */
- @Bean(name = "clearScheduledTriggerLogTrigger")
- public CronTriggerFactoryBean clearScheduledTriggerLogTrigger(
- @Qualifier("clearScheduledTriggerLogJobDetail") JobDetail jobDetail) {
- CronTriggerFactoryBean factoryBean = new CronTriggerFactoryBean();
- factoryBean.setDescription("清理计划任务执行日志");
- factoryBean.setName("clearScheduledTriggerLogTrigger");
- factoryBean.setGroup(DEF_GROUP_NAME);
- factoryBean.setJobDetail(jobDetail);
- factoryBean.setCronExpression("0 0 2 * * ? ");
- return factoryBean;
- }
-
- /**
- * 描述 : clearScheduledTriggerLogJobDetail
- *
- * @return JobDetailFactoryBean
- */
- @Bean("clearScheduledTriggerLogJobDetail")
- public JobDetailFactoryBean clearScheduledTriggerLogJobDetail() {
- JobDetailFactoryBean factoryBean = new JobDetailFactoryBean();
- factoryBean.setDescription("清理计划任务执行日志");
- factoryBean.setName("clearScheduledTriggerLogJobDetail");
- factoryBean.setGroup(DEF_GROUP_NAME);
- factoryBean.setJobClass(ClearScheduledTriggerLog.class);
- factoryBean.setDurability(true);
- return factoryBean;
- }
-
- /**
- * rmsJobEvent
- *
- * @return IRmsJobEvent
- */
- @Bean
- @ConditionalOnMissingBean(value = IRmsJobEvent.class, search = SearchStrategy.CURRENT)
- public IRmsJobEvent rmsJobEvent() {
- return new DefRmsJobEvent();
- }
-
- /**
- * listenerEvent
- *
- * @return IListenerEvent
- */
- @Bean
- @ConditionalOnMissingBean(value = IListenerEvent.class, search = SearchStrategy.CURRENT)
- public IListenerEvent listenerEvent() {
- return new DefListenerEvent();
- }
-
-}
+/**
+ * SchedulerConfig.java
+ * Created at 2017-06-01
+ * Created by Administrator
+ * Copyright (C) 2016 itkk.org, All rights reserved.
+ */
+package org.itkk.udf.scheduler;
+
+import lombok.Data;
+import org.itkk.udf.scheduler.impl.DefListenerEvent;
+import org.itkk.udf.scheduler.impl.DefRmsJobEvent;
+import org.itkk.udf.scheduler.job.ClearScheduledLog;
+import org.itkk.udf.scheduler.job.ClearScheduledTriggerLog;
+import org.itkk.udf.scheduler.listener.JobDetailListener;
+import org.itkk.udf.scheduler.listener.SchListener;
+import org.itkk.udf.scheduler.listener.TriggerDetailListener;
+import org.quartz.*;
+import org.quartz.spi.JobFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Qualifier;
+import org.springframework.beans.factory.config.PropertiesFactoryBean;
+import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
+import org.springframework.boot.autoconfigure.condition.SearchStrategy;
+import org.springframework.boot.context.properties.ConfigurationProperties;
+import org.springframework.context.ApplicationContext;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+import org.springframework.core.io.ClassPathResource;
+import org.springframework.scheduling.quartz.CronTriggerFactoryBean;
+import org.springframework.scheduling.quartz.JobDetailFactoryBean;
+import org.springframework.scheduling.quartz.SchedulerFactoryBean;
+import org.springframework.validation.annotation.Validated;
+
+import javax.sql.DataSource;
+import javax.validation.constraints.NotNull;
+import java.io.IOException;
+import java.util.Properties;
+
+/**
+ * 描述 : SchedulerConfig
+ *
+ * @author Administrator
+ */
+@Configuration
+@ConfigurationProperties(prefix = "org.itkk.scheduler.config")
+@Validated
+@Data
+public class SchedulerConfig {
+
+ /**
+ * 描述 : DEF_GROUP_NAME
+ */
+ private static final String DEF_GROUP_NAME = "SystemAutoRun";
+
+ /**
+ * 描述 : 是否记录日志
+ */
+ @NotNull
+ private Boolean logFlag = true;
+
+ /**
+ * 描述 : 是否记录详细日志
+ */
+ @NotNull
+ private Boolean logDetailFlag = false;
+
+ /**
+ * 描述 : 是否自动启动
+ */
+ @NotNull
+ private Boolean autoStartup = true;
+
+ /**
+ * 描述 : 是否覆盖已经存在的jobs
+ */
+ @NotNull
+ private Boolean overwriteExistingJobs = true;
+
+ /**
+ * 描述 : 延迟启动秒数
+ */
+ @NotNull
+ private Integer startupDelay = 0;
+
+ /**
+ * 描述 : Job接受applicationContext的成员变量名
+ */
+ @NotNull
+ private String applicationContextSchedulerContextKey = "applicationContext";
+
+ /**
+ * 描述 : quartz配置文件地址
+ */
+ @NotNull
+ private String quartzPropertiesPath = "def_quartz.properties";
+
+ /**
+ * 描述 : schedulerProperties
+ */
+ @Autowired
+ private SchedulerProperties schedulerProperties;
+
+ /**
+ * 描述 : jobFactory
+ *
+ * @param applicationContext applicationContext
+ * @return JobFactory
+ */
+ @Bean
+ public JobFactory jobFactory(ApplicationContext applicationContext) {
+ AutowiringSpringBeanJobFactory jobFactory = new AutowiringSpringBeanJobFactory();
+ jobFactory.setApplicationContext(applicationContext);
+ return jobFactory;
+ }
+
+ /**
+ * 描述 : schedulerFactoryBean
+ *
+ * @param dataSource dataSource
+ * @param jobFactory jobFactory
+ * @param quartzProperties quartzProperties
+ * @param schListener schListener
+ * @param jobDetailListener jobDetailListener
+ * @param triggerDetailListener triggerDetailListener
+ * @param clearScheduledLogTrigger clearScheduledLogTrigger
+ * @param clearScheduledTriggerLogTrigger clearScheduledTriggerLogTrigger
+ * @return SchedulerFactoryBean
+ */
+ @Bean("clusterQuartzScheduler")
+ public SchedulerFactoryBean schedulerFactoryBean(DataSource dataSource, JobFactory jobFactory, //NOSONAR
+ Properties quartzProperties, SchedulerListener schListener, JobListener jobDetailListener,
+ TriggerListener triggerDetailListener,
+ @Qualifier("clearScheduledLogTrigger") Trigger clearScheduledLogTrigger,
+ @Qualifier("clearScheduledTriggerLogTrigger") Trigger clearScheduledTriggerLogTrigger) { //NOSONAR
+ //实例化
+ SchedulerFactoryBean factory = new SchedulerFactoryBean();
+ factory.setDataSource(dataSource);
+ factory.setJobFactory(jobFactory);
+ //属性设置
+ factory.setQuartzProperties(quartzProperties);
+ factory.setOverwriteExistingJobs(getOverwriteExistingJobs());
+ factory.setAutoStartup(getAutoStartup());
+ factory.setStartupDelay(getStartupDelay());
+ factory.setApplicationContextSchedulerContextKey(getApplicationContextSchedulerContextKey());
+ //添加监听器
+ factory.setSchedulerListeners(schListener);
+ factory.setGlobalJobListeners(jobDetailListener);
+ factory.setGlobalTriggerListeners(triggerDetailListener);
+ //添加默认的job
+ factory.setTriggers(clearScheduledLogTrigger, clearScheduledTriggerLogTrigger);
+ //返回
+ return factory;
+ }
+
+ /**
+ * 描述 : quartzProperties
+ *
+ * @return Properties
+ * @throws IOException IOException
+ */
+ @Bean
+ public Properties quartzProperties() throws IOException {
+ PropertiesFactoryBean propertiesFactoryBean = new PropertiesFactoryBean();
+ propertiesFactoryBean.setLocation(new ClassPathResource(getQuartzPropertiesPath()));
+ propertiesFactoryBean.afterPropertiesSet();
+ return propertiesFactoryBean.getObject();
+ }
+
+ /**
+ * 描述 : schListener
+ *
+ * @return SchedulerListener
+ */
+ @Bean(name = "schListener")
+ public SchedulerListener schListener() {
+ return new SchListener();
+ }
+
+ /**
+ * 描述 : jobDetailListener
+ *
+ * @return JobListener
+ */
+ @Bean(name = "jobDetailListener")
+ public JobListener jobDetailListener() {
+ return new JobDetailListener();
+ }
+
+ /**
+ * 描述 : triggerDetailListener
+ *
+ * @return TriggerListener
+ */
+ @Bean(name = "triggerDetailListener")
+ public TriggerListener triggerDetailListener() {
+ return new TriggerDetailListener();
+ }
+
+ /**
+ * 描述 : clearScheduledLogTrigger
+ *
+ * @param jobDetail jobDetail
+ * @return CronTriggerFactoryBean
+ */
+ @Bean(name = "clearScheduledLogTrigger")
+ public CronTriggerFactoryBean clearScheduledLogTrigger(
+ @Qualifier("clearScheduledLogJobDetail") JobDetail jobDetail) {
+ CronTriggerFactoryBean factoryBean = new CronTriggerFactoryBean();
+ factoryBean.setDescription("清理计划任务日志");
+ factoryBean.setName("clearScheduledLogTrigger");
+ factoryBean.setGroup(DEF_GROUP_NAME);
+ factoryBean.setJobDetail(jobDetail);
+ factoryBean.setCronExpression("0 0 1 * * ? ");
+ return factoryBean;
+ }
+
+ /**
+ * 描述 : clearScheduledLogJobDetail
+ *
+ * @return JobDetailFactoryBean
+ */
+ @Bean("clearScheduledLogJobDetail")
+ public JobDetailFactoryBean clearScheduledLogJobDetail() {
+ JobDetailFactoryBean factoryBean = new JobDetailFactoryBean();
+ factoryBean.setDescription("清理计划任务日志");
+ factoryBean.setName("clearScheduledLogJobDetail");
+ factoryBean.setGroup(DEF_GROUP_NAME);
+ factoryBean.setJobClass(ClearScheduledLog.class);
+ factoryBean.setDurability(true);
+ return factoryBean;
+ }
+
+ /**
+ * 描述 : clearScheduledTriggerLogTrigger
+ *
+ * @param jobDetail jobDetail
+ * @return CronTriggerFactoryBean
+ */
+ @Bean(name = "clearScheduledTriggerLogTrigger")
+ public CronTriggerFactoryBean clearScheduledTriggerLogTrigger(
+ @Qualifier("clearScheduledTriggerLogJobDetail") JobDetail jobDetail) {
+ CronTriggerFactoryBean factoryBean = new CronTriggerFactoryBean();
+ factoryBean.setDescription("清理计划任务执行日志");
+ factoryBean.setName("clearScheduledTriggerLogTrigger");
+ factoryBean.setGroup(DEF_GROUP_NAME);
+ factoryBean.setJobDetail(jobDetail);
+ factoryBean.setCronExpression("0 0 2 * * ? ");
+ return factoryBean;
+ }
+
+ /**
+ * 描述 : clearScheduledTriggerLogJobDetail
+ *
+ * @return JobDetailFactoryBean
+ */
+ @Bean("clearScheduledTriggerLogJobDetail")
+ public JobDetailFactoryBean clearScheduledTriggerLogJobDetail() {
+ JobDetailFactoryBean factoryBean = new JobDetailFactoryBean();
+ factoryBean.setDescription("清理计划任务执行日志");
+ factoryBean.setName("clearScheduledTriggerLogJobDetail");
+ factoryBean.setGroup(DEF_GROUP_NAME);
+ factoryBean.setJobClass(ClearScheduledTriggerLog.class);
+ factoryBean.setDurability(true);
+ return factoryBean;
+ }
+
+ /**
+ * rmsJobEvent
+ *
+ * @return IRmsJobEvent
+ */
+ @Bean
+ @ConditionalOnMissingBean(value = IRmsJobEvent.class, search = SearchStrategy.CURRENT)
+ public IRmsJobEvent rmsJobEvent() {
+ return new DefRmsJobEvent();
+ }
+
+ /**
+ * listenerEvent
+ *
+ * @return IListenerEvent
+ */
+ @Bean
+ @ConditionalOnMissingBean(value = IListenerEvent.class, search = SearchStrategy.CURRENT)
+ public IListenerEvent listenerEvent() {
+ return new DefListenerEvent();
+ }
+
+}
diff --git a/udf-starter-scheduler/src/main/java/org/itkk/udf/scheduler/SchedulerProperties.java b/udf-stater/udf-starter-scheduler/src/main/java/org/itkk/udf/scheduler/SchedulerProperties.java
similarity index 96%
rename from udf-starter-scheduler/src/main/java/org/itkk/udf/scheduler/SchedulerProperties.java
rename to udf-stater/udf-starter-scheduler/src/main/java/org/itkk/udf/scheduler/SchedulerProperties.java
index 6660873..ebf32ce 100644
--- a/udf-starter-scheduler/src/main/java/org/itkk/udf/scheduler/SchedulerProperties.java
+++ b/udf-stater/udf-starter-scheduler/src/main/java/org/itkk/udf/scheduler/SchedulerProperties.java
@@ -1,53 +1,53 @@
-/**
- * SchedulerProperties.java
- * Created at 2017-06-01
- * Created by Administrator
- * Copyright (C) 2016 itkk.org, All rights reserved.
- */
-package org.itkk.udf.scheduler;
-
-import lombok.Data;
-import org.itkk.udf.scheduler.meta.CronTriggerMeta;
-import org.itkk.udf.scheduler.meta.JobDetailMeta;
-import org.itkk.udf.scheduler.meta.SimpleTriggerMeta;
-import org.springframework.boot.context.properties.ConfigurationProperties;
-import org.springframework.stereotype.Component;
-
-import java.util.Map;
-
-/**
- * 描述 : SchedulerProperties
- *
- * @author Administrator
- */
-@Component
-@ConfigurationProperties(prefix = "org.itkk.scheduler.properties")
-@Data
-public class SchedulerProperties {
-
- /**
- * 描述 : 作业组别 ( key : 组别代码 , value : 组别描述 )
- */
- private Map jobGroup;
-
- /**
- * 描述 : 触发器组别 ( key : 组别代码 , value : 组别描述 )
- */
- private Map triggerGroup;
-
- /**
- * 描述 : 作业 ( kety : 作业代码[jobCode] )
- */
- private Map jobDetail;
-
- /**
- * 描述 : 简单触发器 ( key: 触发器代码[simpleTriggerCode] )
- */
- private Map simpleTrigger;
-
- /**
- * 描述 : cron触发器 (key : 触发器代码[cronTriggerCode])
- */
- private Map cronTrigger;
-
-}
+/**
+ * SchedulerProperties.java
+ * Created at 2017-06-01
+ * Created by Administrator
+ * Copyright (C) 2016 itkk.org, All rights reserved.
+ */
+package org.itkk.udf.scheduler;
+
+import lombok.Data;
+import org.itkk.udf.scheduler.meta.CronTriggerMeta;
+import org.itkk.udf.scheduler.meta.JobDetailMeta;
+import org.itkk.udf.scheduler.meta.SimpleTriggerMeta;
+import org.springframework.boot.context.properties.ConfigurationProperties;
+import org.springframework.stereotype.Component;
+
+import java.util.Map;
+
+/**
+ * 描述 : SchedulerProperties
+ *
+ * @author Administrator
+ */
+@Component
+@ConfigurationProperties(prefix = "org.itkk.scheduler.properties")
+@Data
+public class SchedulerProperties {
+
+ /**
+ * 描述 : 作业组别 ( key : 组别代码 , value : 组别描述 )
+ */
+ private Map jobGroup;
+
+ /**
+ * 描述 : 触发器组别 ( key : 组别代码 , value : 组别描述 )
+ */
+ private Map triggerGroup;
+
+ /**
+ * 描述 : 作业 ( kety : 作业代码[jobCode] )
+ */
+ private Map jobDetail;
+
+ /**
+ * 描述 : 简单触发器 ( key: 触发器代码[simpleTriggerCode] )
+ */
+ private Map simpleTrigger;
+
+ /**
+ * 描述 : cron触发器 (key : 触发器代码[cronTriggerCode])
+ */
+ private Map cronTrigger;
+
+}
diff --git a/udf-starter-scheduler/src/main/java/org/itkk/udf/scheduler/domain/ScheduledTriggerLog.java b/udf-stater/udf-starter-scheduler/src/main/java/org/itkk/udf/scheduler/domain/ScheduledTriggerLog.java
similarity index 96%
rename from udf-starter-scheduler/src/main/java/org/itkk/udf/scheduler/domain/ScheduledTriggerLog.java
rename to udf-stater/udf-starter-scheduler/src/main/java/org/itkk/udf/scheduler/domain/ScheduledTriggerLog.java
index 331b27b..c4745fb 100644
--- a/udf-starter-scheduler/src/main/java/org/itkk/udf/scheduler/domain/ScheduledTriggerLog.java
+++ b/udf-stater/udf-starter-scheduler/src/main/java/org/itkk/udf/scheduler/domain/ScheduledTriggerLog.java
@@ -1,149 +1,149 @@
-/**
- * TriggerDetailListener.java
- * Created at 2017-06-01
- * Created by Administrator
- * Copyright (C) 2016 itkk.org, All rights reserved.
- */
-package org.itkk.udf.scheduler.domain;
-
-import io.swagger.annotations.ApiModel;
-import io.swagger.annotations.ApiModelProperty;
-import lombok.Data;
-import lombok.ToString;
-
-import java.io.Serializable;
-import java.util.Date;
-
-/**
- * 描述 : ScheduledTriggerLog
- *
- * @author Administrator
- */
-@ApiModel(description = "计划任务触发日志")
-@Data
-@ToString
-public class ScheduledTriggerLog implements Serializable {
-
- private static final long serialVersionUID = 1L;
-
- /**
- * 描述 : 日志ID
- */
- @ApiModelProperty(value = "日志ID", required = true, dataType = "string")
- private String logid;
-
- /**
- * 描述 : 计划执行时间
- */
- @ApiModelProperty(value = "计划执行时间", required = true, dataType = "date")
- private Date scheduledFireTime;
-
- /**
- * 描述 : 实际执行时间
- */
- @ApiModelProperty(value = "实际执行时间", required = true, dataType = "date")
- private Date fireTime;
-
- /**
- * 描述 : 实际结束时间
- */
- @ApiModelProperty(value = "实际结束时间", required = true, dataType = "date")
- private Date endTime;
-
- /**
- * 描述 : 执行时长
- */
- @ApiModelProperty(value = "执行时长", required = true, dataType = "long")
- private Long jobRunTime;
-
- /**
- * 描述 : 状态
- */
- @ApiModelProperty(value = "状态", required = true, dataType = "String")
- private String status;
-
- /**
- * 描述 : 结果
- */
- @ApiModelProperty(value = "结果", required = true, dataType = "String")
- private String result;
-
- /**
- * 描述 : 错误信息
- */
- @ApiModelProperty(value = "错误信息", required = true, dataType = "String")
- private String errorMsg;
-
- /**
- * 描述 : 触发器名称
- */
- @ApiModelProperty(value = "触发器名称", required = true, dataType = "String")
- private String triggerName;
-
- /**
- * 描述 : 触发器组别
- */
- @ApiModelProperty(value = "触发器组别", required = true, dataType = "String")
- private String triggerGroup;
-
- /**
- * 描述 : 作业名称
- */
- @ApiModelProperty(value = "作业名称", required = true, dataType = "String")
- private String jobName;
-
- /**
- * 描述 : 作业组别
- */
- @ApiModelProperty(value = "作业组别", required = true, dataType = "String")
- private String jobGroup;
-
- /**
- * 描述 : 作业类型
- */
- @ApiModelProperty(value = "作业类型", required = true, dataType = "String")
- private String jobClass;
-
- /**
- * 描述 : 线程组名称
- */
- @ApiModelProperty(value = "线程组名称", required = true, dataType = "String")
- private String threadGroupName;
-
- /**
- * 描述 : 线程ID
- */
- @ApiModelProperty(value = "线程ID", required = true, dataType = "String")
- private String threadId;
-
- /**
- * 描述 : 线程名称
- */
- @ApiModelProperty(value = "线程名称", required = true, dataType = "String")
- private String threadName;
-
- /**
- * 描述 : 线程优先级
- */
- @ApiModelProperty(value = "线程优先级", required = true, dataType = "String")
- private String threadPriority;
-
- /**
- * 描述 : 计划任务ID
- */
- @ApiModelProperty(value = "计划任务ID", required = true, dataType = "String")
- private String scheduledId;
-
- /**
- * 描述 : 计划任务名称
- */
- @ApiModelProperty(value = "计划任务名称", required = true, dataType = "String")
- private String scheduledName;
-
- /**
- * 描述 : 创建时间
- */
- @ApiModelProperty(value = "创建时间", required = true, dataType = "date")
- private Date createDate;
-
-}
+/**
+ * TriggerDetailListener.java
+ * Created at 2017-06-01
+ * Created by Administrator
+ * Copyright (C) 2016 itkk.org, All rights reserved.
+ */
+package org.itkk.udf.scheduler.domain;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.ToString;
+
+import java.io.Serializable;
+import java.util.Date;
+
+/**
+ * 描述 : ScheduledTriggerLog
+ *
+ * @author Administrator
+ */
+@ApiModel(description = "计划任务触发日志")
+@Data
+@ToString
+public class ScheduledTriggerLog implements Serializable {
+
+ private static final long serialVersionUID = 1L;
+
+ /**
+ * 描述 : 日志ID
+ */
+ @ApiModelProperty(value = "日志ID", required = true, dataType = "string")
+ private String logid;
+
+ /**
+ * 描述 : 计划执行时间
+ */
+ @ApiModelProperty(value = "计划执行时间", required = true, dataType = "date")
+ private Date scheduledFireTime;
+
+ /**
+ * 描述 : 实际执行时间
+ */
+ @ApiModelProperty(value = "实际执行时间", required = true, dataType = "date")
+ private Date fireTime;
+
+ /**
+ * 描述 : 实际结束时间
+ */
+ @ApiModelProperty(value = "实际结束时间", required = true, dataType = "date")
+ private Date endTime;
+
+ /**
+ * 描述 : 执行时长
+ */
+ @ApiModelProperty(value = "执行时长", required = true, dataType = "long")
+ private Long jobRunTime;
+
+ /**
+ * 描述 : 状态
+ */
+ @ApiModelProperty(value = "状态", required = true, dataType = "String")
+ private String status;
+
+ /**
+ * 描述 : 结果
+ */
+ @ApiModelProperty(value = "结果", required = true, dataType = "String")
+ private String result;
+
+ /**
+ * 描述 : 错误信息
+ */
+ @ApiModelProperty(value = "错误信息", required = true, dataType = "String")
+ private String errorMsg;
+
+ /**
+ * 描述 : 触发器名称
+ */
+ @ApiModelProperty(value = "触发器名称", required = true, dataType = "String")
+ private String triggerName;
+
+ /**
+ * 描述 : 触发器组别
+ */
+ @ApiModelProperty(value = "触发器组别", required = true, dataType = "String")
+ private String triggerGroup;
+
+ /**
+ * 描述 : 作业名称
+ */
+ @ApiModelProperty(value = "作业名称", required = true, dataType = "String")
+ private String jobName;
+
+ /**
+ * 描述 : 作业组别
+ */
+ @ApiModelProperty(value = "作业组别", required = true, dataType = "String")
+ private String jobGroup;
+
+ /**
+ * 描述 : 作业类型
+ */
+ @ApiModelProperty(value = "作业类型", required = true, dataType = "String")
+ private String jobClass;
+
+ /**
+ * 描述 : 线程组名称
+ */
+ @ApiModelProperty(value = "线程组名称", required = true, dataType = "String")
+ private String threadGroupName;
+
+ /**
+ * 描述 : 线程ID
+ */
+ @ApiModelProperty(value = "线程ID", required = true, dataType = "String")
+ private String threadId;
+
+ /**
+ * 描述 : 线程名称
+ */
+ @ApiModelProperty(value = "线程名称", required = true, dataType = "String")
+ private String threadName;
+
+ /**
+ * 描述 : 线程优先级
+ */
+ @ApiModelProperty(value = "线程优先级", required = true, dataType = "String")
+ private String threadPriority;
+
+ /**
+ * 描述 : 计划任务ID
+ */
+ @ApiModelProperty(value = "计划任务ID", required = true, dataType = "String")
+ private String scheduledId;
+
+ /**
+ * 描述 : 计划任务名称
+ */
+ @ApiModelProperty(value = "计划任务名称", required = true, dataType = "String")
+ private String scheduledName;
+
+ /**
+ * 描述 : 创建时间
+ */
+ @ApiModelProperty(value = "创建时间", required = true, dataType = "date")
+ private Date createDate;
+
+}
diff --git a/udf-starter-scheduler/src/main/java/org/itkk/udf/scheduler/impl/DefListenerEvent.java b/udf-stater/udf-starter-scheduler/src/main/java/org/itkk/udf/scheduler/impl/DefListenerEvent.java
similarity index 100%
rename from udf-starter-scheduler/src/main/java/org/itkk/udf/scheduler/impl/DefListenerEvent.java
rename to udf-stater/udf-starter-scheduler/src/main/java/org/itkk/udf/scheduler/impl/DefListenerEvent.java
diff --git a/udf-starter-scheduler/src/main/java/org/itkk/udf/scheduler/impl/DefRmsJobEvent.java b/udf-stater/udf-starter-scheduler/src/main/java/org/itkk/udf/scheduler/impl/DefRmsJobEvent.java
similarity index 100%
rename from udf-starter-scheduler/src/main/java/org/itkk/udf/scheduler/impl/DefRmsJobEvent.java
rename to udf-stater/udf-starter-scheduler/src/main/java/org/itkk/udf/scheduler/impl/DefRmsJobEvent.java
diff --git a/udf-starter-scheduler/src/main/java/org/itkk/udf/scheduler/job/AbstractBaseJob.java b/udf-stater/udf-starter-scheduler/src/main/java/org/itkk/udf/scheduler/job/AbstractBaseJob.java
similarity index 96%
rename from udf-starter-scheduler/src/main/java/org/itkk/udf/scheduler/job/AbstractBaseJob.java
rename to udf-stater/udf-starter-scheduler/src/main/java/org/itkk/udf/scheduler/job/AbstractBaseJob.java
index 9d1852b..c509426 100644
--- a/udf-starter-scheduler/src/main/java/org/itkk/udf/scheduler/job/AbstractBaseJob.java
+++ b/udf-stater/udf-starter-scheduler/src/main/java/org/itkk/udf/scheduler/job/AbstractBaseJob.java
@@ -1,38 +1,38 @@
-/**
- * AbstractBaseJob.java
- * Created at 2017-06-01
- * Created by Administrator
- * Copyright (C) 2016 itkk.org, All rights reserved.
- */
-package org.itkk.udf.scheduler.job;
-
-import org.quartz.JobExecutionContext;
-import org.quartz.JobExecutionException;
-import org.springframework.context.ApplicationContext;
-import org.springframework.scheduling.quartz.QuartzJobBean;
-
-/**
- * 描述 : AbstractBaseJob
- *
- * @author Administrator
- */
-public abstract class AbstractBaseJob extends QuartzJobBean {
-
- /**
- * 描述 : spring上下文
- */
- private ApplicationContext applicationContext;
-
- @Override
- protected abstract void executeInternal(JobExecutionContext jobExecutionContext)
- throws JobExecutionException;
-
- public ApplicationContext getApplicationContext() {
- return this.applicationContext;
- }
-
- public void setApplicationContext(ApplicationContext applicationContext) {
- this.applicationContext = applicationContext;
- }
-
-}
+/**
+ * AbstractBaseJob.java
+ * Created at 2017-06-01
+ * Created by Administrator
+ * Copyright (C) 2016 itkk.org, All rights reserved.
+ */
+package org.itkk.udf.scheduler.job;
+
+import org.quartz.JobExecutionContext;
+import org.quartz.JobExecutionException;
+import org.springframework.context.ApplicationContext;
+import org.springframework.scheduling.quartz.QuartzJobBean;
+
+/**
+ * 描述 : AbstractBaseJob
+ *
+ * @author Administrator
+ */
+public abstract class AbstractBaseJob extends QuartzJobBean {
+
+ /**
+ * 描述 : spring上下文
+ */
+ private ApplicationContext applicationContext;
+
+ @Override
+ protected abstract void executeInternal(JobExecutionContext jobExecutionContext)
+ throws JobExecutionException;
+
+ public ApplicationContext getApplicationContext() {
+ return this.applicationContext;
+ }
+
+ public void setApplicationContext(ApplicationContext applicationContext) {
+ this.applicationContext = applicationContext;
+ }
+
+}
diff --git a/udf-starter-scheduler/src/main/java/org/itkk/udf/scheduler/job/AbstractBaseRmsJob.java b/udf-stater/udf-starter-scheduler/src/main/java/org/itkk/udf/scheduler/job/AbstractBaseRmsJob.java
similarity index 100%
rename from udf-starter-scheduler/src/main/java/org/itkk/udf/scheduler/job/AbstractBaseRmsJob.java
rename to udf-stater/udf-starter-scheduler/src/main/java/org/itkk/udf/scheduler/job/AbstractBaseRmsJob.java
diff --git a/udf-starter-scheduler/src/main/java/org/itkk/udf/scheduler/job/ClearScheduledLog.java b/udf-stater/udf-starter-scheduler/src/main/java/org/itkk/udf/scheduler/job/ClearScheduledLog.java
similarity index 95%
rename from udf-starter-scheduler/src/main/java/org/itkk/udf/scheduler/job/ClearScheduledLog.java
rename to udf-stater/udf-starter-scheduler/src/main/java/org/itkk/udf/scheduler/job/ClearScheduledLog.java
index 4870bc6..3c177af 100644
--- a/udf-starter-scheduler/src/main/java/org/itkk/udf/scheduler/job/ClearScheduledLog.java
+++ b/udf-stater/udf-starter-scheduler/src/main/java/org/itkk/udf/scheduler/job/ClearScheduledLog.java
@@ -1,38 +1,38 @@
-/**
- * ClearScheduledLog.java
- * Created at 2017-06-01
- * Created by Administrator
- * Copyright (C) 2016 itkk.org, All rights reserved.
- */
-package org.itkk.udf.scheduler.job;
-
-import org.itkk.udf.scheduler.IListenerEvent;
-import org.quartz.DisallowConcurrentExecution;
-import org.quartz.JobExecutionContext;
-
-/**
- *
- * ClassName: ClearScheduledLog
- *
- *
- * Description: 清理计划任务日志
- *
- *
- * Author: wangkang
- *
- *
- * Date: 2014年3月7日
- *
- */
-@DisallowConcurrentExecution
-public class ClearScheduledLog extends AbstractBaseJob {
-
- @Override
- protected void executeInternal(JobExecutionContext jobExecutionContext) {
- IListenerEvent listenerLog = this.getApplicationContext().getBean(IListenerEvent.class);
- if (listenerLog != null) {
- listenerLog.clearScheduledLog();
- }
- }
-
-}
+/**
+ * ClearScheduledLog.java
+ * Created at 2017-06-01
+ * Created by Administrator
+ * Copyright (C) 2016 itkk.org, All rights reserved.
+ */
+package org.itkk.udf.scheduler.job;
+
+import org.itkk.udf.scheduler.IListenerEvent;
+import org.quartz.DisallowConcurrentExecution;
+import org.quartz.JobExecutionContext;
+
+/**
+ *
+ * ClassName: ClearScheduledLog
+ *
+ *
+ * Description: 清理计划任务日志
+ *
+ *
+ * Author: wangkang
+ *
+ *
+ * Date: 2014年3月7日
+ *
+ */
+@DisallowConcurrentExecution
+public class ClearScheduledLog extends AbstractBaseJob {
+
+ @Override
+ protected void executeInternal(JobExecutionContext jobExecutionContext) {
+ IListenerEvent listenerLog = this.getApplicationContext().getBean(IListenerEvent.class);
+ if (listenerLog != null) {
+ listenerLog.clearScheduledLog();
+ }
+ }
+
+}
diff --git a/udf-starter-scheduler/src/main/java/org/itkk/udf/scheduler/job/ClearScheduledTriggerLog.java b/udf-stater/udf-starter-scheduler/src/main/java/org/itkk/udf/scheduler/job/ClearScheduledTriggerLog.java
similarity index 95%
rename from udf-starter-scheduler/src/main/java/org/itkk/udf/scheduler/job/ClearScheduledTriggerLog.java
rename to udf-stater/udf-starter-scheduler/src/main/java/org/itkk/udf/scheduler/job/ClearScheduledTriggerLog.java
index 34c1625..3e49124 100644
--- a/udf-starter-scheduler/src/main/java/org/itkk/udf/scheduler/job/ClearScheduledTriggerLog.java
+++ b/udf-stater/udf-starter-scheduler/src/main/java/org/itkk/udf/scheduler/job/ClearScheduledTriggerLog.java
@@ -1,38 +1,38 @@
-/**
- * ClearScheduledTriggerLog.java
- * Created at 2017-06-01
- * Created by Administrator
- * Copyright (C) 2016 itkk.org, All rights reserved.
- */
-package org.itkk.udf.scheduler.job;
-
-import org.itkk.udf.scheduler.IListenerEvent;
-import org.quartz.DisallowConcurrentExecution;
-import org.quartz.JobExecutionContext;
-
-/**
- *
- * ClassName: ClearScheduledTriggerLog
- *
- *
- * Description: 清理计划任务执行日志
- *
- *
- * Author: wangkang
- *
- *
- * Date: 2014年3月7日
- *
- */
-@DisallowConcurrentExecution
-public class ClearScheduledTriggerLog extends AbstractBaseJob {
-
- @Override
- protected void executeInternal(JobExecutionContext jobExecutionContext) {
- IListenerEvent triggerLog = this.getApplicationContext().getBean(IListenerEvent.class);
- if (triggerLog != null) {
- triggerLog.clearScheduledTriggerLog();
- }
- }
-
-}
+/**
+ * ClearScheduledTriggerLog.java
+ * Created at 2017-06-01
+ * Created by Administrator
+ * Copyright (C) 2016 itkk.org, All rights reserved.
+ */
+package org.itkk.udf.scheduler.job;
+
+import org.itkk.udf.scheduler.IListenerEvent;
+import org.quartz.DisallowConcurrentExecution;
+import org.quartz.JobExecutionContext;
+
+/**
+ *
+ * ClassName: ClearScheduledTriggerLog
+ *
+ *
+ * Description: 清理计划任务执行日志
+ *
+ *
+ * Author: wangkang
+ *
+ *
+ * Date: 2014年3月7日
+ *
+ */
+@DisallowConcurrentExecution
+public class ClearScheduledTriggerLog extends AbstractBaseJob {
+
+ @Override
+ protected void executeInternal(JobExecutionContext jobExecutionContext) {
+ IListenerEvent triggerLog = this.getApplicationContext().getBean(IListenerEvent.class);
+ if (triggerLog != null) {
+ triggerLog.clearScheduledTriggerLog();
+ }
+ }
+
+}
diff --git a/udf-starter-scheduler/src/main/java/org/itkk/udf/scheduler/job/RmsJob.java b/udf-stater/udf-starter-scheduler/src/main/java/org/itkk/udf/scheduler/job/RmsJob.java
similarity index 95%
rename from udf-starter-scheduler/src/main/java/org/itkk/udf/scheduler/job/RmsJob.java
rename to udf-stater/udf-starter-scheduler/src/main/java/org/itkk/udf/scheduler/job/RmsJob.java
index bba1255..d460d52 100644
--- a/udf-starter-scheduler/src/main/java/org/itkk/udf/scheduler/job/RmsJob.java
+++ b/udf-stater/udf-starter-scheduler/src/main/java/org/itkk/udf/scheduler/job/RmsJob.java
@@ -1,26 +1,26 @@
-/**
- * RmsJob.java
- * Created at 2017-06-04
- * Created by Administrator
- * Copyright (C) 2016 itkk.org, All rights reserved.
- */
-package org.itkk.udf.scheduler.job;
-
-import lombok.extern.slf4j.Slf4j;
-import org.quartz.JobExecutionContext;
-import org.quartz.JobExecutionException;
-
-/**
- * 描述 : RmsJob
- *
- * @author Administrator
- */
-@Slf4j
-public class RmsJob extends AbstractBaseRmsJob {
-
- @Override
- protected void executeInternal(JobExecutionContext jobExecutionContext) throws JobExecutionException { //NOSONAR
- this.execute(this.getRmsJobParam(jobExecutionContext));
- }
-
-}
+/**
+ * RmsJob.java
+ * Created at 2017-06-04
+ * Created by Administrator
+ * Copyright (C) 2016 itkk.org, All rights reserved.
+ */
+package org.itkk.udf.scheduler.job;
+
+import lombok.extern.slf4j.Slf4j;
+import org.quartz.JobExecutionContext;
+import org.quartz.JobExecutionException;
+
+/**
+ * 描述 : RmsJob
+ *
+ * @author Administrator
+ */
+@Slf4j
+public class RmsJob extends AbstractBaseRmsJob {
+
+ @Override
+ protected void executeInternal(JobExecutionContext jobExecutionContext) throws JobExecutionException { //NOSONAR
+ this.execute(this.getRmsJobParam(jobExecutionContext));
+ }
+
+}
diff --git a/udf-starter-scheduler/src/main/java/org/itkk/udf/scheduler/job/RmsJobDisallowConcurrent.java b/udf-stater/udf-starter-scheduler/src/main/java/org/itkk/udf/scheduler/job/RmsJobDisallowConcurrent.java
similarity index 96%
rename from udf-starter-scheduler/src/main/java/org/itkk/udf/scheduler/job/RmsJobDisallowConcurrent.java
rename to udf-stater/udf-starter-scheduler/src/main/java/org/itkk/udf/scheduler/job/RmsJobDisallowConcurrent.java
index b84fadc..fc3d6d1 100644
--- a/udf-starter-scheduler/src/main/java/org/itkk/udf/scheduler/job/RmsJobDisallowConcurrent.java
+++ b/udf-stater/udf-starter-scheduler/src/main/java/org/itkk/udf/scheduler/job/RmsJobDisallowConcurrent.java
@@ -1,24 +1,24 @@
-/**
- * RmsJobDisallowConcurrent.java
- * Created at 2017-06-04
- * Created by Administrator
- * Copyright (C) 2016 itkk.org, All rights reserved.
- */
-package org.itkk.udf.scheduler.job;
-
-import org.quartz.JobExecutionContext;
-import org.quartz.JobExecutionException;
-
-/**
- * 描述 : RmsJobDisallowConcurrent
- *
- * @author Administrator
- */
-public class RmsJobDisallowConcurrent extends AbstractBaseRmsJob {
-
- @Override
- protected void executeInternal(JobExecutionContext jobExecutionContext) throws JobExecutionException { //NOSONAR
- this.disallowConcurrentExecute(this.getRmsJobParam(jobExecutionContext));
- }
-
-}
+/**
+ * RmsJobDisallowConcurrent.java
+ * Created at 2017-06-04
+ * Created by Administrator
+ * Copyright (C) 2016 itkk.org, All rights reserved.
+ */
+package org.itkk.udf.scheduler.job;
+
+import org.quartz.JobExecutionContext;
+import org.quartz.JobExecutionException;
+
+/**
+ * 描述 : RmsJobDisallowConcurrent
+ *
+ * @author Administrator
+ */
+public class RmsJobDisallowConcurrent extends AbstractBaseRmsJob {
+
+ @Override
+ protected void executeInternal(JobExecutionContext jobExecutionContext) throws JobExecutionException { //NOSONAR
+ this.disallowConcurrentExecute(this.getRmsJobParam(jobExecutionContext));
+ }
+
+}
diff --git a/udf-starter-scheduler/src/main/java/org/itkk/udf/scheduler/listener/JobDetailListener.java b/udf-stater/udf-starter-scheduler/src/main/java/org/itkk/udf/scheduler/listener/JobDetailListener.java
similarity index 96%
rename from udf-starter-scheduler/src/main/java/org/itkk/udf/scheduler/listener/JobDetailListener.java
rename to udf-stater/udf-starter-scheduler/src/main/java/org/itkk/udf/scheduler/listener/JobDetailListener.java
index e9fccfa..2a5f906 100644
--- a/udf-starter-scheduler/src/main/java/org/itkk/udf/scheduler/listener/JobDetailListener.java
+++ b/udf-stater/udf-starter-scheduler/src/main/java/org/itkk/udf/scheduler/listener/JobDetailListener.java
@@ -1,72 +1,72 @@
-/**
- * JobDetailListener.java
- * Created at 2017-06-01
- * Created by Administrator
- * Copyright (C) 2016 itkk.org, All rights reserved.
- */
-package org.itkk.udf.scheduler.listener;
-
-import lombok.extern.slf4j.Slf4j;
-import org.itkk.udf.scheduler.service.ListenerService;
-import org.quartz.JobExecutionContext;
-import org.quartz.JobExecutionException;
-import org.quartz.JobListener;
-import org.quartz.SchedulerException;
-import org.springframework.beans.factory.annotation.Autowired;
-
-/**
- *
- * ClassName: JobListener
- *
- *
- * Description: 作业监听器
- *
- *
- * Author: wangkang
- *
- *
- * Date: 2014年2月8日
- *
- */
-@Slf4j
-public class JobDetailListener implements JobListener {
-
- /**
- * 描述 : listenerService
- */
- @Autowired
- private ListenerService listenerService;
-
- @Override
- public String getName() {
- return "JobDetailListener";
- }
-
- @Override
- public void jobToBeExecuted(JobExecutionContext context) { // 4
- try {
- this.listenerService.saveJobToBeExecuted(context);
- } catch (SchedulerException e) {
- log.warn("jobToBeExecuted:", e);
- }
- }
-
- @Override
- public void jobExecutionVetoed(JobExecutionContext context) { // 5
- try {
- this.listenerService.saveJobExecutionVetoed(context);
- } catch (SchedulerException e) {
- log.warn("jobExecutionVetoed:", e);
- }
- }
-
- @Override
- public void jobWasExecuted(JobExecutionContext context, JobExecutionException jobException) { // 6
- try {
- this.listenerService.saveJobWasExecuted(context, jobException);
- } catch (SchedulerException e) {
- log.warn("jobWasExecuted:", e);
- }
- }
-
-}
+/**
+ * JobDetailListener.java
+ * Created at 2017-06-01
+ * Created by Administrator
+ * Copyright (C) 2016 itkk.org, All rights reserved.
+ */
+package org.itkk.udf.scheduler.listener;
+
+import lombok.extern.slf4j.Slf4j;
+import org.itkk.udf.scheduler.service.ListenerService;
+import org.quartz.JobExecutionContext;
+import org.quartz.JobExecutionException;
+import org.quartz.JobListener;
+import org.quartz.SchedulerException;
+import org.springframework.beans.factory.annotation.Autowired;
+
+/**
+ *
+ * ClassName: JobListener
+ *
+ *
+ * Description: 作业监听器
+ *
+ *
+ * Author: wangkang
+ *
+ *
+ * Date: 2014年2月8日
+ *
+ */
+@Slf4j
+public class JobDetailListener implements JobListener {
+
+ /**
+ * 描述 : listenerService
+ */
+ @Autowired
+ private ListenerService listenerService;
+
+ @Override
+ public String getName() {
+ return "JobDetailListener";
+ }
+
+ @Override
+ public void jobToBeExecuted(JobExecutionContext context) { // 4
+ try {
+ this.listenerService.saveJobToBeExecuted(context);
+ } catch (SchedulerException e) {
+ log.warn("jobToBeExecuted:", e);
+ }
+ }
+
+ @Override
+ public void jobExecutionVetoed(JobExecutionContext context) { // 5
+ try {
+ this.listenerService.saveJobExecutionVetoed(context);
+ } catch (SchedulerException e) {
+ log.warn("jobExecutionVetoed:", e);
+ }
+ }
+
+ @Override
+ public void jobWasExecuted(JobExecutionContext context, JobExecutionException jobException) { // 6
+ try {
+ this.listenerService.saveJobWasExecuted(context, jobException);
+ } catch (SchedulerException e) {
+ log.warn("jobWasExecuted:", e);
+ }
+ }
+
+}
diff --git a/udf-starter-scheduler/src/main/java/org/itkk/udf/scheduler/listener/SchListener.java b/udf-stater/udf-starter-scheduler/src/main/java/org/itkk/udf/scheduler/listener/SchListener.java
similarity index 96%
rename from udf-starter-scheduler/src/main/java/org/itkk/udf/scheduler/listener/SchListener.java
rename to udf-stater/udf-starter-scheduler/src/main/java/org/itkk/udf/scheduler/listener/SchListener.java
index 76d2a39..a52333f 100644
--- a/udf-starter-scheduler/src/main/java/org/itkk/udf/scheduler/listener/SchListener.java
+++ b/udf-stater/udf-starter-scheduler/src/main/java/org/itkk/udf/scheduler/listener/SchListener.java
@@ -1,241 +1,241 @@
-package org.itkk.udf.scheduler.listener;
-
-import org.apache.commons.lang3.StringUtils;
-import org.apache.commons.lang3.exception.ExceptionUtils;
-import org.itkk.udf.scheduler.IListenerEvent;
-import org.quartz.*;
-import org.springframework.beans.factory.annotation.Autowired;
-
-/**
- *
- * ClassName: SchListener
- *
- *
- * Description: 计划任务监听器
- *
- *
- * Author: wangkang
- *
- *
- * Date: 2014年1月24日
- *
- */
-public class SchListener implements SchedulerListener {
-
- /**
- *
- * Field CHAR_1: 斜杠
- *
- */
- private static final String CHAR_1 = "/";
-
- /**
- *
- * Field ZHUOYE: 作业
- *
- */
- private static final String ZHUOYE = "作业";
-
- /**
- * 描述 : listenerLog
- */
- @Autowired(required = false)
- private IListenerEvent listenerLog;
-
- @Override
- public void triggerPaused(TriggerKey triggerKey) {
- String logMsg = "(triggerPaused)" + triggerKey.getName() + "/" + triggerKey.getGroup() + "被暂停了";
- if (listenerLog != null) {
- listenerLog.save(logMsg);
- }
- }
-
- @Override
- public void triggerResumed(TriggerKey triggerKey) {
- String logMsg =
- "(triggerResumed)" + triggerKey.getName() + CHAR_1 + triggerKey.getGroup() + "被恢复了";
- if (listenerLog != null) {
- listenerLog.save(logMsg);
- }
- }
-
- @Override
- public void jobScheduled(Trigger trigger) {
- String logMsg = "(jobScheduled)" + ZHUOYE + trigger.getJobKey().getName() + CHAR_1
- + trigger.getJobKey().getGroup() + "被触发器" + trigger.getKey().getName() + CHAR_1
- + trigger.getKey().getGroup() + "触发了";
- if (listenerLog != null) {
- listenerLog.save(logMsg);
- }
- }
-
- @Override
- public void jobUnscheduled(TriggerKey triggerKey) {
- String logMsg = "(jobUnscheduled)" + triggerKey.getName() + CHAR_1 + triggerKey.getGroup() + "被移除了";
- if (listenerLog != null) {
- listenerLog.save(logMsg);
- }
- }
-
- @Override
- public void triggerFinalized(Trigger trigger) {
- String logMsg = "(triggerFinalized)" + ZHUOYE + trigger.getJobKey().getName() + CHAR_1
- + trigger.getJobKey().getGroup() + ",触发器" + trigger.getKey().getName() + CHAR_1
- + trigger.getKey().getGroup() + "已经执行完成,后续将不会继续触发";
- if (listenerLog != null) {
- listenerLog.save(logMsg);
- }
- }
-
- @Override
- public void triggersPaused(String triggerGroup) {
- if (StringUtils.isEmpty(triggerGroup)) {
- String logMsg = "(triggersPaused)" + "触发器组全部被暂停了";
- if (listenerLog != null) {
- listenerLog.save(logMsg);
- }
- } else {
- String logMsg = "(triggersPaused)" + "触发器组" + triggerGroup + "被暂停了";
- if (listenerLog != null) {
- listenerLog.save(logMsg);
- }
- }
-
- }
-
- @Override
- public void triggersResumed(String triggerGroup) {
- if (StringUtils.isEmpty(triggerGroup)) {
- String logMsg = "(triggersResumed)" + "触发器组全部被恢复了";
- if (listenerLog != null) {
- listenerLog.save(logMsg);
- }
- } else {
- String logMsg = "(triggersResumed)" + "触发器组" + triggerGroup + "被恢复了";
- if (listenerLog != null) {
- listenerLog.save(logMsg);
- }
- }
- }
-
- @Override
- public void jobAdded(JobDetail jobDetail) {
- String logMsg = "(jobAdded)" + ZHUOYE + jobDetail.getKey().getName() + CHAR_1 + jobDetail.getKey().getGroup() + "被添加了";
- if (listenerLog != null) {
- listenerLog.save(logMsg);
- }
- }
-
- @Override
- public void jobDeleted(JobKey jobKey) {
- String logMsg = "(jobDeleted)" + ZHUOYE + jobKey.getName() + CHAR_1 + jobKey.getGroup() + "被删除了";
- if (listenerLog != null) {
- listenerLog.save(logMsg);
- }
- }
-
- @Override
- public void jobPaused(JobKey jobKey) {
- String logMsg = "(jobPaused)" + ZHUOYE + jobKey.getName() + CHAR_1 + jobKey.getGroup() + "被暂停了";
- if (listenerLog != null) {
- listenerLog.save(logMsg);
- }
- }
-
- @Override
- public void jobsPaused(String jobGroup) {
- if (StringUtils.isEmpty(jobGroup)) {
- String logMsg = "(jobsPaused)" + "作业全部被暂停了";
- if (listenerLog != null) {
- listenerLog.save(logMsg);
- }
- } else {
- String logMsg = "(jobsPaused)" + "作业组" + jobGroup + "被暂停了";
- if (listenerLog != null) {
- listenerLog.save(logMsg);
- }
- }
-
- }
-
- @Override
- public void jobResumed(JobKey jobKey) {
- String logMsg = "(jobResumed)" + ZHUOYE + jobKey.getName() + CHAR_1 + jobKey.getGroup() + "被恢复了";
- if (listenerLog != null) {
- listenerLog.save(logMsg);
- }
- }
-
- @Override
- public void jobsResumed(String jobGroup) {
- if (StringUtils.isEmpty(jobGroup)) {
- String logMsg = "(jobsResumed)" + "作业全部被恢复了";
- if (listenerLog != null) {
- listenerLog.save(logMsg);
- }
- } else {
- String logMsg = "(jobsResumed)" + "作业组" + jobGroup + "被恢复了";
- if (listenerLog != null) {
- listenerLog.save(logMsg);
- }
- }
- }
-
- @Override
- public void schedulerError(String msg, SchedulerException cause) {
- // 获得异常详细信息
- String exceptionDetail = ExceptionUtils.getStackTrace(cause);
- String logMsg = "(schedulerError)" + "计划任务出错:" + msg + "\n" + exceptionDetail;
- if (listenerLog != null) {
- listenerLog.save(logMsg);
- }
- }
-
- @Override
- public void schedulerInStandbyMode() {
- String logMsg = "(schedulerInStandbyMode)" + "计划任务为待机状态";
- if (listenerLog != null) {
- listenerLog.save(logMsg);
- }
- }
-
- @Override
- public void schedulerStarted() {
- String logMsg = "(schedulerStarted)" + "计划任务已经启动";
- if (listenerLog != null) {
- listenerLog.save(logMsg);
- }
- }
-
- @Override
- public void schedulerStarting() {
- String logMsg = "(schedulerStarting)" + "计划任务正在启动中";
- if (listenerLog != null) {
- listenerLog.save(logMsg);
- }
- }
-
- @Override
- public void schedulerShutdown() {
- String logMsg = "(schedulerShutdown)" + "计划任务已关闭";
- if (listenerLog != null) {
- listenerLog.save(logMsg);
- }
- }
-
- @Override
- public void schedulerShuttingdown() {
- String logMsg = "(schedulerShuttingdown)" + "计划任务正在关闭中";
- if (listenerLog != null) {
- listenerLog.save(logMsg);
- }
- }
-
- @Override
- public void schedulingDataCleared() {
- String logMsg = "(schedulingDataCleared)" + "计划任务数据被清除";
- if (listenerLog != null) {
- listenerLog.save(logMsg);
- }
- }
-}
+package org.itkk.udf.scheduler.listener;
+
+import org.apache.commons.lang3.StringUtils;
+import org.apache.commons.lang3.exception.ExceptionUtils;
+import org.itkk.udf.scheduler.IListenerEvent;
+import org.quartz.*;
+import org.springframework.beans.factory.annotation.Autowired;
+
+/**
+ *
+ * ClassName: SchListener
+ *
+ *
+ * Description: 计划任务监听器
+ *
+ *
+ * Author: wangkang
+ *
+ *
+ * Date: 2014年1月24日
+ *
+ */
+public class SchListener implements SchedulerListener {
+
+ /**
+ *
+ * Field CHAR_1: 斜杠
+ *
+ */
+ private static final String CHAR_1 = "/";
+
+ /**
+ *
+ * Field ZHUOYE: 作业
+ *
+ */
+ private static final String ZHUOYE = "作业";
+
+ /**
+ * 描述 : listenerLog
+ */
+ @Autowired(required = false)
+ private IListenerEvent listenerLog;
+
+ @Override
+ public void triggerPaused(TriggerKey triggerKey) {
+ String logMsg = "(triggerPaused)" + triggerKey.getName() + "/" + triggerKey.getGroup() + "被暂停了";
+ if (listenerLog != null) {
+ listenerLog.save(logMsg);
+ }
+ }
+
+ @Override
+ public void triggerResumed(TriggerKey triggerKey) {
+ String logMsg =
+ "(triggerResumed)" + triggerKey.getName() + CHAR_1 + triggerKey.getGroup() + "被恢复了";
+ if (listenerLog != null) {
+ listenerLog.save(logMsg);
+ }
+ }
+
+ @Override
+ public void jobScheduled(Trigger trigger) {
+ String logMsg = "(jobScheduled)" + ZHUOYE + trigger.getJobKey().getName() + CHAR_1
+ + trigger.getJobKey().getGroup() + "被触发器" + trigger.getKey().getName() + CHAR_1
+ + trigger.getKey().getGroup() + "触发了";
+ if (listenerLog != null) {
+ listenerLog.save(logMsg);
+ }
+ }
+
+ @Override
+ public void jobUnscheduled(TriggerKey triggerKey) {
+ String logMsg = "(jobUnscheduled)" + triggerKey.getName() + CHAR_1 + triggerKey.getGroup() + "被移除了";
+ if (listenerLog != null) {
+ listenerLog.save(logMsg);
+ }
+ }
+
+ @Override
+ public void triggerFinalized(Trigger trigger) {
+ String logMsg = "(triggerFinalized)" + ZHUOYE + trigger.getJobKey().getName() + CHAR_1
+ + trigger.getJobKey().getGroup() + ",触发器" + trigger.getKey().getName() + CHAR_1
+ + trigger.getKey().getGroup() + "已经执行完成,后续将不会继续触发";
+ if (listenerLog != null) {
+ listenerLog.save(logMsg);
+ }
+ }
+
+ @Override
+ public void triggersPaused(String triggerGroup) {
+ if (StringUtils.isEmpty(triggerGroup)) {
+ String logMsg = "(triggersPaused)" + "触发器组全部被暂停了";
+ if (listenerLog != null) {
+ listenerLog.save(logMsg);
+ }
+ } else {
+ String logMsg = "(triggersPaused)" + "触发器组" + triggerGroup + "被暂停了";
+ if (listenerLog != null) {
+ listenerLog.save(logMsg);
+ }
+ }
+
+ }
+
+ @Override
+ public void triggersResumed(String triggerGroup) {
+ if (StringUtils.isEmpty(triggerGroup)) {
+ String logMsg = "(triggersResumed)" + "触发器组全部被恢复了";
+ if (listenerLog != null) {
+ listenerLog.save(logMsg);
+ }
+ } else {
+ String logMsg = "(triggersResumed)" + "触发器组" + triggerGroup + "被恢复了";
+ if (listenerLog != null) {
+ listenerLog.save(logMsg);
+ }
+ }
+ }
+
+ @Override
+ public void jobAdded(JobDetail jobDetail) {
+ String logMsg = "(jobAdded)" + ZHUOYE + jobDetail.getKey().getName() + CHAR_1 + jobDetail.getKey().getGroup() + "被添加了";
+ if (listenerLog != null) {
+ listenerLog.save(logMsg);
+ }
+ }
+
+ @Override
+ public void jobDeleted(JobKey jobKey) {
+ String logMsg = "(jobDeleted)" + ZHUOYE + jobKey.getName() + CHAR_1 + jobKey.getGroup() + "被删除了";
+ if (listenerLog != null) {
+ listenerLog.save(logMsg);
+ }
+ }
+
+ @Override
+ public void jobPaused(JobKey jobKey) {
+ String logMsg = "(jobPaused)" + ZHUOYE + jobKey.getName() + CHAR_1 + jobKey.getGroup() + "被暂停了";
+ if (listenerLog != null) {
+ listenerLog.save(logMsg);
+ }
+ }
+
+ @Override
+ public void jobsPaused(String jobGroup) {
+ if (StringUtils.isEmpty(jobGroup)) {
+ String logMsg = "(jobsPaused)" + "作业全部被暂停了";
+ if (listenerLog != null) {
+ listenerLog.save(logMsg);
+ }
+ } else {
+ String logMsg = "(jobsPaused)" + "作业组" + jobGroup + "被暂停了";
+ if (listenerLog != null) {
+ listenerLog.save(logMsg);
+ }
+ }
+
+ }
+
+ @Override
+ public void jobResumed(JobKey jobKey) {
+ String logMsg = "(jobResumed)" + ZHUOYE + jobKey.getName() + CHAR_1 + jobKey.getGroup() + "被恢复了";
+ if (listenerLog != null) {
+ listenerLog.save(logMsg);
+ }
+ }
+
+ @Override
+ public void jobsResumed(String jobGroup) {
+ if (StringUtils.isEmpty(jobGroup)) {
+ String logMsg = "(jobsResumed)" + "作业全部被恢复了";
+ if (listenerLog != null) {
+ listenerLog.save(logMsg);
+ }
+ } else {
+ String logMsg = "(jobsResumed)" + "作业组" + jobGroup + "被恢复了";
+ if (listenerLog != null) {
+ listenerLog.save(logMsg);
+ }
+ }
+ }
+
+ @Override
+ public void schedulerError(String msg, SchedulerException cause) {
+ // 获得异常详细信息
+ String exceptionDetail = ExceptionUtils.getStackTrace(cause);
+ String logMsg = "(schedulerError)" + "计划任务出错:" + msg + "\n" + exceptionDetail;
+ if (listenerLog != null) {
+ listenerLog.save(logMsg);
+ }
+ }
+
+ @Override
+ public void schedulerInStandbyMode() {
+ String logMsg = "(schedulerInStandbyMode)" + "计划任务为待机状态";
+ if (listenerLog != null) {
+ listenerLog.save(logMsg);
+ }
+ }
+
+ @Override
+ public void schedulerStarted() {
+ String logMsg = "(schedulerStarted)" + "计划任务已经启动";
+ if (listenerLog != null) {
+ listenerLog.save(logMsg);
+ }
+ }
+
+ @Override
+ public void schedulerStarting() {
+ String logMsg = "(schedulerStarting)" + "计划任务正在启动中";
+ if (listenerLog != null) {
+ listenerLog.save(logMsg);
+ }
+ }
+
+ @Override
+ public void schedulerShutdown() {
+ String logMsg = "(schedulerShutdown)" + "计划任务已关闭";
+ if (listenerLog != null) {
+ listenerLog.save(logMsg);
+ }
+ }
+
+ @Override
+ public void schedulerShuttingdown() {
+ String logMsg = "(schedulerShuttingdown)" + "计划任务正在关闭中";
+ if (listenerLog != null) {
+ listenerLog.save(logMsg);
+ }
+ }
+
+ @Override
+ public void schedulingDataCleared() {
+ String logMsg = "(schedulingDataCleared)" + "计划任务数据被清除";
+ if (listenerLog != null) {
+ listenerLog.save(logMsg);
+ }
+ }
+}
diff --git a/udf-starter-scheduler/src/main/java/org/itkk/udf/scheduler/listener/TriggerDetailListener.java b/udf-stater/udf-starter-scheduler/src/main/java/org/itkk/udf/scheduler/listener/TriggerDetailListener.java
similarity index 96%
rename from udf-starter-scheduler/src/main/java/org/itkk/udf/scheduler/listener/TriggerDetailListener.java
rename to udf-stater/udf-starter-scheduler/src/main/java/org/itkk/udf/scheduler/listener/TriggerDetailListener.java
index e781ff3..78272a2 100644
--- a/udf-starter-scheduler/src/main/java/org/itkk/udf/scheduler/listener/TriggerDetailListener.java
+++ b/udf-stater/udf-starter-scheduler/src/main/java/org/itkk/udf/scheduler/listener/TriggerDetailListener.java
@@ -1,80 +1,80 @@
-/**
- * TriggerDetailListener.java
- * Created at 2017-06-01
- * Created by Administrator
- * Copyright (C) 2016 itkk.org, All rights reserved.
- */
-package org.itkk.udf.scheduler.listener;
-
-import lombok.extern.slf4j.Slf4j;
-import org.itkk.udf.scheduler.service.ListenerService;
-import org.quartz.JobExecutionContext;
-import org.quartz.SchedulerException;
-import org.quartz.Trigger;
-import org.quartz.Trigger.CompletedExecutionInstruction;
-import org.quartz.TriggerListener;
-import org.springframework.beans.factory.annotation.Autowired;
-
-/**
- *
- * ClassName: TriggerListener
- *
- *
- * Description: 全局触发器监听
- *
- *
- * Author: wangkang
- *
- *
- * Date: 2014年2月8日
- *
- */
-@Slf4j
-public class TriggerDetailListener implements TriggerListener {
-
- /**
- * 描述 : listenerService
- */
- @Autowired
- private ListenerService listenerService;
-
- @Override
- public String getName() {
- return "TriggerDetailListener";
- }
-
- @Override
- public void triggerFired(Trigger trigger, JobExecutionContext context) { // 2
- try {
- this.listenerService.saveTriggerFired(context);
- } catch (SchedulerException e) {
- log.warn("triggerFired error:", e);
- }
- }
-
- @Override
- public boolean vetoJobExecution(Trigger trigger, JobExecutionContext context) { // 3
- boolean vetoed = false;
- try {
- vetoed = this.listenerService.saveVetoJobExecution(context);
- } catch (SchedulerException e) {
- log.warn("vetoJobExecution error:", e);
- }
- return vetoed;
- }
-
- @Override
- public void triggerMisfired(Trigger trigger) { // 1
- this.listenerService.saveTriggerMisfired(trigger);
- }
-
- @Override
- public void triggerComplete(Trigger trigger, JobExecutionContext context,
- CompletedExecutionInstruction triggerInstructionCode) { // 7
- try {
- this.listenerService.saveTriggerComplete(context, triggerInstructionCode);
- } catch (SchedulerException e) {
- log.warn("triggerComplete error:", e);
- }
- }
-}
+/**
+ * TriggerDetailListener.java
+ * Created at 2017-06-01
+ * Created by Administrator
+ * Copyright (C) 2016 itkk.org, All rights reserved.
+ */
+package org.itkk.udf.scheduler.listener;
+
+import lombok.extern.slf4j.Slf4j;
+import org.itkk.udf.scheduler.service.ListenerService;
+import org.quartz.JobExecutionContext;
+import org.quartz.SchedulerException;
+import org.quartz.Trigger;
+import org.quartz.Trigger.CompletedExecutionInstruction;
+import org.quartz.TriggerListener;
+import org.springframework.beans.factory.annotation.Autowired;
+
+/**
+ *
+ * ClassName: TriggerListener
+ *
+ *
+ * Description: 全局触发器监听
+ *
+ *
+ * Author: wangkang
+ *
+ *
+ * Date: 2014年2月8日
+ *
+ */
+@Slf4j
+public class TriggerDetailListener implements TriggerListener {
+
+ /**
+ * 描述 : listenerService
+ */
+ @Autowired
+ private ListenerService listenerService;
+
+ @Override
+ public String getName() {
+ return "TriggerDetailListener";
+ }
+
+ @Override
+ public void triggerFired(Trigger trigger, JobExecutionContext context) { // 2
+ try {
+ this.listenerService.saveTriggerFired(context);
+ } catch (SchedulerException e) {
+ log.warn("triggerFired error:", e);
+ }
+ }
+
+ @Override
+ public boolean vetoJobExecution(Trigger trigger, JobExecutionContext context) { // 3
+ boolean vetoed = false;
+ try {
+ vetoed = this.listenerService.saveVetoJobExecution(context);
+ } catch (SchedulerException e) {
+ log.warn("vetoJobExecution error:", e);
+ }
+ return vetoed;
+ }
+
+ @Override
+ public void triggerMisfired(Trigger trigger) { // 1
+ this.listenerService.saveTriggerMisfired(trigger);
+ }
+
+ @Override
+ public void triggerComplete(Trigger trigger, JobExecutionContext context,
+ CompletedExecutionInstruction triggerInstructionCode) { // 7
+ try {
+ this.listenerService.saveTriggerComplete(context, triggerInstructionCode);
+ } catch (SchedulerException e) {
+ log.warn("triggerComplete error:", e);
+ }
+ }
+}
diff --git a/udf-starter-scheduler/src/main/java/org/itkk/udf/scheduler/meta/CronTriggerMeta.java b/udf-stater/udf-starter-scheduler/src/main/java/org/itkk/udf/scheduler/meta/CronTriggerMeta.java
similarity index 94%
rename from udf-starter-scheduler/src/main/java/org/itkk/udf/scheduler/meta/CronTriggerMeta.java
rename to udf-stater/udf-starter-scheduler/src/main/java/org/itkk/udf/scheduler/meta/CronTriggerMeta.java
index 124a85a..bd9f7e2 100644
--- a/udf-starter-scheduler/src/main/java/org/itkk/udf/scheduler/meta/CronTriggerMeta.java
+++ b/udf-stater/udf-starter-scheduler/src/main/java/org/itkk/udf/scheduler/meta/CronTriggerMeta.java
@@ -1,38 +1,38 @@
-/**
- * CronTriggerMeta.java
- * Created at 2017-06-02
- * Created by Administrator
- * Copyright (C) 2016 itkk.org, All rights reserved.
- */
-package org.itkk.udf.scheduler.meta;
-
-import lombok.Data;
-import lombok.EqualsAndHashCode;
-
-import java.io.Serializable;
-
-/**
- * 描述 : CronTriggerMeta.java
- *
- * @author Administrator
- */
-@Data
-@EqualsAndHashCode(callSuper = false)
-public class CronTriggerMeta extends TriggerMeta implements Serializable {
-
- /**
- * 描述 : ID
- */
- private static final long serialVersionUID = 1L;
-
- /**
- * 描述 : cron表达式
- */
- private String cron;
-
- /**
- * 描述 : 时区ID
- */
- private String timeZoneId;
-
-}
+/**
+ * CronTriggerMeta.java
+ * Created at 2017-06-02
+ * Created by Administrator
+ * Copyright (C) 2016 itkk.org, All rights reserved.
+ */
+package org.itkk.udf.scheduler.meta;
+
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+import java.io.Serializable;
+
+/**
+ * 描述 : CronTriggerMeta.java
+ *
+ * @author Administrator
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+public class CronTriggerMeta extends TriggerMeta implements Serializable {
+
+ /**
+ * 描述 : ID
+ */
+ private static final long serialVersionUID = 1L;
+
+ /**
+ * 描述 : cron表达式
+ */
+ private String cron;
+
+ /**
+ * 描述 : 时区ID
+ */
+ private String timeZoneId;
+
+}
diff --git a/udf-starter-scheduler/src/main/java/org/itkk/udf/scheduler/meta/JobDetailMeta.java b/udf-stater/udf-starter-scheduler/src/main/java/org/itkk/udf/scheduler/meta/JobDetailMeta.java
similarity index 94%
rename from udf-starter-scheduler/src/main/java/org/itkk/udf/scheduler/meta/JobDetailMeta.java
rename to udf-stater/udf-starter-scheduler/src/main/java/org/itkk/udf/scheduler/meta/JobDetailMeta.java
index 0103b1a..c2f9d5c 100644
--- a/udf-starter-scheduler/src/main/java/org/itkk/udf/scheduler/meta/JobDetailMeta.java
+++ b/udf-stater/udf-starter-scheduler/src/main/java/org/itkk/udf/scheduler/meta/JobDetailMeta.java
@@ -1,67 +1,67 @@
-/**
- * JobDetailMeta.java
- * Created at 2017-06-02
- * Created by Administrator
- * Copyright (C) 2016 itkk.org, All rights reserved.
- */
-package org.itkk.udf.scheduler.meta;
-
-import lombok.Data;
-
-import java.io.Serializable;
-import java.util.Map;
-
-/**
- * 描述 : JobDetailMeta
- *
- * @author Administrator
- */
-@Data
-public class JobDetailMeta implements Serializable {
-
- /**
- * 描述 : ID
- */
- private static final long serialVersionUID = 1L;
-
- /**
- * 描述 : 名称
- */
- private String name;
-
- /**
- * 描述 : 组别
- */
- private String group = "default";
-
- /**
- * 描述 : 类型
- */
- private String className;
-
- /**
- * 描述 : 描述
- */
- private String description = "暂无描述";
-
- /**
- * 描述 : 是否可恢复
- */
- private Boolean recovery = false;
-
- /**
- * 描述 : 是否持久化
- */
- private Boolean durability = true;
-
- /**
- * 是否自动实例化
- */
- private Boolean autoInit = false;
-
- /**
- * 描述 : 数据
- */
- private Map dataMap;
-
-}
+/**
+ * JobDetailMeta.java
+ * Created at 2017-06-02
+ * Created by Administrator
+ * Copyright (C) 2016 itkk.org, All rights reserved.
+ */
+package org.itkk.udf.scheduler.meta;
+
+import lombok.Data;
+
+import java.io.Serializable;
+import java.util.Map;
+
+/**
+ * 描述 : JobDetailMeta
+ *
+ * @author Administrator
+ */
+@Data
+public class JobDetailMeta implements Serializable {
+
+ /**
+ * 描述 : ID
+ */
+ private static final long serialVersionUID = 1L;
+
+ /**
+ * 描述 : 名称
+ */
+ private String name;
+
+ /**
+ * 描述 : 组别
+ */
+ private String group = "default";
+
+ /**
+ * 描述 : 类型
+ */
+ private String className;
+
+ /**
+ * 描述 : 描述
+ */
+ private String description = "暂无描述";
+
+ /**
+ * 描述 : 是否可恢复
+ */
+ private Boolean recovery = false;
+
+ /**
+ * 描述 : 是否持久化
+ */
+ private Boolean durability = true;
+
+ /**
+ * 是否自动实例化
+ */
+ private Boolean autoInit = false;
+
+ /**
+ * 描述 : 数据
+ */
+ private Map dataMap;
+
+}
diff --git a/udf-starter-scheduler/src/main/java/org/itkk/udf/scheduler/meta/SimpleTriggerMeta.java b/udf-stater/udf-starter-scheduler/src/main/java/org/itkk/udf/scheduler/meta/SimpleTriggerMeta.java
similarity index 95%
rename from udf-starter-scheduler/src/main/java/org/itkk/udf/scheduler/meta/SimpleTriggerMeta.java
rename to udf-stater/udf-starter-scheduler/src/main/java/org/itkk/udf/scheduler/meta/SimpleTriggerMeta.java
index c08a9da..2cf6807 100644
--- a/udf-starter-scheduler/src/main/java/org/itkk/udf/scheduler/meta/SimpleTriggerMeta.java
+++ b/udf-stater/udf-starter-scheduler/src/main/java/org/itkk/udf/scheduler/meta/SimpleTriggerMeta.java
@@ -1,39 +1,39 @@
-/**
- * SimpleTriggerMeta.java
- * Created at 2017-06-02
- * Created by Administrator
- * Copyright (C) 2016 itkk.org, All rights reserved.
- */
-package org.itkk.udf.scheduler.meta;
-
-import lombok.Data;
-import lombok.EqualsAndHashCode;
-import org.quartz.SimpleTrigger;
-
-import java.io.Serializable;
-
-/**
- * 描述 : SimpleTriggerMeta.java
- *
- * @author Administrator
- */
-@Data
-@EqualsAndHashCode(callSuper = false)
-public class SimpleTriggerMeta extends TriggerMeta implements Serializable {
-
- /**
- * 描述 : ID
- */
- private static final long serialVersionUID = 1L;
-
- /**
- * 描述 : 重复次数
- */
- private Integer repeatCount = SimpleTrigger.REPEAT_INDEFINITELY;
-
- /**
- * 描述 : 执行间隔
- */
- private Long intervalInMilliseconds;
-
-}
+/**
+ * SimpleTriggerMeta.java
+ * Created at 2017-06-02
+ * Created by Administrator
+ * Copyright (C) 2016 itkk.org, All rights reserved.
+ */
+package org.itkk.udf.scheduler.meta;
+
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import org.quartz.SimpleTrigger;
+
+import java.io.Serializable;
+
+/**
+ * 描述 : SimpleTriggerMeta.java
+ *
+ * @author Administrator
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+public class SimpleTriggerMeta extends TriggerMeta implements Serializable {
+
+ /**
+ * 描述 : ID
+ */
+ private static final long serialVersionUID = 1L;
+
+ /**
+ * 描述 : 重复次数
+ */
+ private Integer repeatCount = SimpleTrigger.REPEAT_INDEFINITELY;
+
+ /**
+ * 描述 : 执行间隔
+ */
+ private Long intervalInMilliseconds;
+
+}
diff --git a/udf-starter-scheduler/src/main/java/org/itkk/udf/scheduler/meta/TriggerMeta.java b/udf-stater/udf-starter-scheduler/src/main/java/org/itkk/udf/scheduler/meta/TriggerMeta.java
similarity index 94%
rename from udf-starter-scheduler/src/main/java/org/itkk/udf/scheduler/meta/TriggerMeta.java
rename to udf-stater/udf-starter-scheduler/src/main/java/org/itkk/udf/scheduler/meta/TriggerMeta.java
index 5803097..5f67010 100644
--- a/udf-starter-scheduler/src/main/java/org/itkk/udf/scheduler/meta/TriggerMeta.java
+++ b/udf-stater/udf-starter-scheduler/src/main/java/org/itkk/udf/scheduler/meta/TriggerMeta.java
@@ -1,84 +1,84 @@
-/**
- * TriggerMeta.java
- * Created at 2017-06-02
- * Created by Administrator
- * Copyright (C) 2016 itkk.org, All rights reserved.
- */
-package org.itkk.udf.scheduler.meta;
-
-import lombok.Data;
-import org.quartz.Trigger;
-
-import java.io.Serializable;
-import java.util.Date;
-import java.util.Map;
-
-/**
- * 描述 : TriggerMeta.java
- *
- * @author Administrator
- */
-@Data
-public class TriggerMeta implements Serializable {
-
- /**
- * 描述 : ID
- */
- private static final long serialVersionUID = 1L;
-
- /**
- * 描述 : 作业代码
- */
- private String jobCode;
-
- /**
- * 描述 : 名称
- */
- private String name;
-
- /**
- * 描述 : 组别
- */
- private String group = "default";
-
- /**
- * 描述 : 描述
- */
- private String description = "暂无描述";
-
- /**
- * 描述 : 开始时间
- */
- private Date startTime;
-
- /**
- * 描述 : 结束时间
- */
- private Date endTime;
-
- /**
- * 描述 : 优先级
- */
- private Integer priority = 0;
-
- /**
- * 描述 : 日历
- */
- private String calendar;
-
- /**
- * 描述 : 遗漏对应的策略
- */
- private Integer misfireInstruction = Trigger.MISFIRE_INSTRUCTION_SMART_POLICY;
-
- /**
- * 是否自动实例化
- */
- private Boolean autoInit = false;
-
- /**
- * 描述 : 数据
- */
- private Map dataMap;
-
-}
+/**
+ * TriggerMeta.java
+ * Created at 2017-06-02
+ * Created by Administrator
+ * Copyright (C) 2016 itkk.org, All rights reserved.
+ */
+package org.itkk.udf.scheduler.meta;
+
+import lombok.Data;
+import org.quartz.Trigger;
+
+import java.io.Serializable;
+import java.util.Date;
+import java.util.Map;
+
+/**
+ * 描述 : TriggerMeta.java
+ *
+ * @author Administrator
+ */
+@Data
+public class TriggerMeta implements Serializable {
+
+ /**
+ * 描述 : ID
+ */
+ private static final long serialVersionUID = 1L;
+
+ /**
+ * 描述 : 作业代码
+ */
+ private String jobCode;
+
+ /**
+ * 描述 : 名称
+ */
+ private String name;
+
+ /**
+ * 描述 : 组别
+ */
+ private String group = "default";
+
+ /**
+ * 描述 : 描述
+ */
+ private String description = "暂无描述";
+
+ /**
+ * 描述 : 开始时间
+ */
+ private Date startTime;
+
+ /**
+ * 描述 : 结束时间
+ */
+ private Date endTime;
+
+ /**
+ * 描述 : 优先级
+ */
+ private Integer priority = 0;
+
+ /**
+ * 描述 : 日历
+ */
+ private String calendar;
+
+ /**
+ * 描述 : 遗漏对应的策略
+ */
+ private Integer misfireInstruction = Trigger.MISFIRE_INSTRUCTION_SMART_POLICY;
+
+ /**
+ * 是否自动实例化
+ */
+ private Boolean autoInit = false;
+
+ /**
+ * 描述 : 数据
+ */
+ private Map dataMap;
+
+}
diff --git a/udf-starter-scheduler/src/main/java/org/itkk/udf/scheduler/service/JobService.java b/udf-stater/udf-starter-scheduler/src/main/java/org/itkk/udf/scheduler/service/JobService.java
similarity index 96%
rename from udf-starter-scheduler/src/main/java/org/itkk/udf/scheduler/service/JobService.java
rename to udf-stater/udf-starter-scheduler/src/main/java/org/itkk/udf/scheduler/service/JobService.java
index 322d9fa..b08ff4c 100644
--- a/udf-starter-scheduler/src/main/java/org/itkk/udf/scheduler/service/JobService.java
+++ b/udf-stater/udf-starter-scheduler/src/main/java/org/itkk/udf/scheduler/service/JobService.java
@@ -1,243 +1,243 @@
-/**
- * JobService.java
- * Created at 2017-06-02
- * Created by Administrator
- * Copyright (C) 2016 itkk.org, All rights reserved.
- */
-package org.itkk.udf.scheduler.service;
-
-import org.apache.commons.collections4.CollectionUtils;
-import org.apache.commons.collections4.MapUtils;
-import org.apache.commons.lang3.StringUtils;
-import org.itkk.udf.core.utils.ClassUtil;
-import org.itkk.udf.scheduler.SchedulerProperties;
-import org.itkk.udf.scheduler.client.SchException;
-import org.itkk.udf.scheduler.job.AbstractBaseJob;
-import org.itkk.udf.scheduler.meta.JobDetailMeta;
-import org.quartz.*;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.beans.factory.annotation.Qualifier;
-import org.springframework.scheduling.quartz.SchedulerFactoryBean;
-import org.springframework.stereotype.Service;
-
-import java.util.ArrayList;
-import java.util.List;
-import java.util.Map;
-
-/**
- * 描述 : JobService
- *
- * @author Administrator
- */
-@Service
-public class JobService {
-
- /**
- * 描述 : SchedulerFactoryBean
- */
- @Autowired
- @Qualifier("clusterQuartzScheduler")
- private SchedulerFactoryBean s;
-
- /**
- * 描述 : schedulerProperties
- */
- @Autowired
- private SchedulerProperties schedulerProperties;
-
- /**
- * 描述 : 获得作业列表
- *
- * @return 作业列表
- * @throws ClassNotFoundException ClassNotFoundException
- */
- public List jobClassNameList() throws ClassNotFoundException {
- //获得类型列表
- List> jobList =
- ClassUtil.getSubClasses(AbstractBaseJob.class, "org.itkk");
- //构造返回值
- List result = new ArrayList<>();
- if (CollectionUtils.isNotEmpty(jobList)) {
- for (Class claz : jobList) {
- result.add(claz.getName());
- }
- }
- //返回
- return result;
- }
-
- /**
- * 描述 : 作业组
- *
- * @return 作业组
- */
- public Map group() {
- return schedulerProperties.getJobGroup();
- }
-
- /**
- * 描述 : 保存
- *
- * @param jobCode 作业代码
- * @param cover 是否覆盖
- * @throws SchedulerException SchedulerException
- * @throws ClassNotFoundException ClassNotFoundException
- */
- @SuppressWarnings("unchecked")
- public void save(String jobCode, boolean cover) //NOSONAR
- throws SchedulerException, ClassNotFoundException {
- //获得作业元数据
- JobDetailMeta jobDetailMeta = getJobDetailMeta(jobCode);
- // 获得计划任务管理器
- Scheduler sch = this.s.getScheduler();
- // 设置jobkey
- JobKey jobKey = new JobKey(jobDetailMeta.getName(), jobDetailMeta.getGroup());
- //判断job是否存在
- if (sch.checkExists(jobKey) && !cover) {
- throw new SchException("job key : " + jobDetailMeta.getName() + " / group : "
- + jobDetailMeta.getGroup() + " already exist!");
- }
- // 获得jobDataMap
- JobDataMap jobDataMap = new JobDataMap();
- if (MapUtils.isNotEmpty(jobDetailMeta.getDataMap())) {
- jobDataMap = new JobDataMap(jobDetailMeta.getDataMap());
- }
- //实例化作业
- JobDetail jobDetail = JobBuilder.newJob(((Class) Class.forName(jobDetailMeta.getClassName()))) //NOSONAR
- .withIdentity(jobKey).withDescription(jobDetailMeta.getDescription())
- .requestRecovery(jobDetailMeta.getRecovery())
- .storeDurably(jobDetailMeta.getDurability()).setJobData(jobDataMap).build();
- // 添加job
- sch.addJob(jobDetail, true, !jobDetailMeta.getDurability());
- }
-
- /**
- * 描述 : 移除
- *
- * @param jobCode jobCode
- * @throws SchedulerException SchedulerException
- */
- public void remove(String jobCode) throws SchedulerException {
- //获得作业元数据
- JobDetailMeta jobDetailMeta = getJobDetailMeta(jobCode);
- // 设置jobkey
- JobKey jobKey = getJobKey(jobDetailMeta);
- // 删除
- this.s.getScheduler().deleteJob(jobKey);
- }
-
- /**
- * 描述 : 触发
- *
- * @param jobCode 作业代码
- * @param jobDataMap 作业数据
- * @throws SchedulerException SchedulerException
- */
- public void trigger(String jobCode, JobDataMap jobDataMap) throws SchedulerException {
- //获得作业元数据
- JobDetailMeta jobDetailMeta = getJobDetailMeta(jobCode);
- // 设置jobkey
- JobKey jobKey = getJobKey(jobDetailMeta);
- // 触发
- this.s.getScheduler().triggerJob(jobKey, jobDataMap);
- }
-
- /**
- * 描述 : 暂停
- *
- * @param jobCode 作业代码
- * @throws SchedulerException SchedulerException
- */
- public void puse(String jobCode) throws SchedulerException {
- //获得作业元数据
- JobDetailMeta jobDetailMeta = getJobDetailMeta(jobCode);
- // 设置jobkey
- JobKey jobKey = getJobKey(jobDetailMeta);
- // 暂停
- this.s.getScheduler().pauseJob(jobKey);
- }
-
- /**
- * 描述 : 恢复
- *
- * @param jobCode 作业代码
- * @throws SchedulerException SchedulerException
- */
- public void resume(String jobCode) throws SchedulerException {
- //获得作业元数据
- JobDetailMeta jobDetailMeta = getJobDetailMeta(jobCode);
- // 设置jobkey
- JobKey jobKey = getJobKey(jobDetailMeta);
- // 恢复
- this.s.getScheduler().resumeJob(jobKey);
- }
-
- /**
- * 描述 : 暂停所有
- *
- * @throws SchedulerException SchedulerException
- */
- public void puseAll() throws SchedulerException {
- // 暂停所有
- this.s.getScheduler().pauseAll();
- }
-
- /**
- * 描述 : 恢复所有
- *
- * @throws SchedulerException SchedulerException
- */
- public void resumeAll() throws SchedulerException {
- // 暂停所有
- this.s.getScheduler().resumeAll();
- }
-
- /**
- * 描述 : 返回jobKey
- *
- * @param jobDetailMeta 作业元数据
- * @return jobKey
- * @throws SchedulerException SchedulerException
- */
- protected JobKey getJobKey(JobDetailMeta jobDetailMeta) throws SchedulerException {
- // 获得计划任务管理器
- Scheduler sch = this.s.getScheduler();
- // 设置jobkey
- JobKey jobKey = new JobKey(jobDetailMeta.getName(), jobDetailMeta.getGroup());
- //判断job是否存在
- if (sch.checkExists(jobKey)) {
- return jobKey;
- } else {
- throw new SchException("job key : " + jobDetailMeta.getName() + " / group : "
- + jobDetailMeta.getGroup() + " not exist!");
- }
- }
-
- /**
- * 描述 : 返回作业元数据
- *
- * @param jobCode 作业代码
- * @return 作业元数据
- */
- protected JobDetailMeta getJobDetailMeta(String jobCode) {
- //判空
- if (MapUtils.isEmpty(schedulerProperties.getJobDetail())) {
- throw new SchException("JobDetail not defined!");
- }
- //获得作业定义
- JobDetailMeta jobDetailMeta = schedulerProperties.getJobDetail().get(jobCode);
- //判断作业是否存在
- if (jobDetailMeta == null) {
- throw new SchException("jobCode : " + jobCode + " not defined!");
- }
- //获得组别定义
- String groupName = schedulerProperties.getJobGroup().get(jobDetailMeta.getGroup());
- //判断组别是否存在
- if (StringUtils.isBlank(groupName)) {
- throw new SchException("group : " + jobDetailMeta.getGroup() + " not defined!");
- }
- //返回
- return jobDetailMeta;
- }
-
-}
+/**
+ * JobService.java
+ * Created at 2017-06-02
+ * Created by Administrator
+ * Copyright (C) 2016 itkk.org, All rights reserved.
+ */
+package org.itkk.udf.scheduler.service;
+
+import org.apache.commons.collections4.CollectionUtils;
+import org.apache.commons.collections4.MapUtils;
+import org.apache.commons.lang3.StringUtils;
+import org.itkk.udf.core.utils.ClassUtil;
+import org.itkk.udf.scheduler.SchedulerProperties;
+import org.itkk.udf.scheduler.client.SchException;
+import org.itkk.udf.scheduler.job.AbstractBaseJob;
+import org.itkk.udf.scheduler.meta.JobDetailMeta;
+import org.quartz.*;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Qualifier;
+import org.springframework.scheduling.quartz.SchedulerFactoryBean;
+import org.springframework.stereotype.Service;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * 描述 : JobService
+ *
+ * @author Administrator
+ */
+@Service
+public class JobService {
+
+ /**
+ * 描述 : SchedulerFactoryBean
+ */
+ @Autowired
+ @Qualifier("clusterQuartzScheduler")
+ private SchedulerFactoryBean s;
+
+ /**
+ * 描述 : schedulerProperties
+ */
+ @Autowired
+ private SchedulerProperties schedulerProperties;
+
+ /**
+ * 描述 : 获得作业列表
+ *
+ * @return 作业列表
+ * @throws ClassNotFoundException ClassNotFoundException
+ */
+ public List jobClassNameList() throws ClassNotFoundException {
+ //获得类型列表
+ List> jobList =
+ ClassUtil.getSubClasses(AbstractBaseJob.class, "org.itkk");
+ //构造返回值
+ List result = new ArrayList<>();
+ if (CollectionUtils.isNotEmpty(jobList)) {
+ for (Class claz : jobList) {
+ result.add(claz.getName());
+ }
+ }
+ //返回
+ return result;
+ }
+
+ /**
+ * 描述 : 作业组
+ *
+ * @return 作业组
+ */
+ public Map group() {
+ return schedulerProperties.getJobGroup();
+ }
+
+ /**
+ * 描述 : 保存
+ *
+ * @param jobCode 作业代码
+ * @param cover 是否覆盖
+ * @throws SchedulerException SchedulerException
+ * @throws ClassNotFoundException ClassNotFoundException
+ */
+ @SuppressWarnings("unchecked")
+ public void save(String jobCode, boolean cover) //NOSONAR
+ throws SchedulerException, ClassNotFoundException {
+ //获得作业元数据
+ JobDetailMeta jobDetailMeta = getJobDetailMeta(jobCode);
+ // 获得计划任务管理器
+ Scheduler sch = this.s.getScheduler();
+ // 设置jobkey
+ JobKey jobKey = new JobKey(jobDetailMeta.getName(), jobDetailMeta.getGroup());
+ //判断job是否存在
+ if (sch.checkExists(jobKey) && !cover) {
+ throw new SchException("job key : " + jobDetailMeta.getName() + " / group : "
+ + jobDetailMeta.getGroup() + " already exist!");
+ }
+ // 获得jobDataMap
+ JobDataMap jobDataMap = new JobDataMap();
+ if (MapUtils.isNotEmpty(jobDetailMeta.getDataMap())) {
+ jobDataMap = new JobDataMap(jobDetailMeta.getDataMap());
+ }
+ //实例化作业
+ JobDetail jobDetail = JobBuilder.newJob(((Class) Class.forName(jobDetailMeta.getClassName()))) //NOSONAR
+ .withIdentity(jobKey).withDescription(jobDetailMeta.getDescription())
+ .requestRecovery(jobDetailMeta.getRecovery())
+ .storeDurably(jobDetailMeta.getDurability()).setJobData(jobDataMap).build();
+ // 添加job
+ sch.addJob(jobDetail, true, !jobDetailMeta.getDurability());
+ }
+
+ /**
+ * 描述 : 移除
+ *
+ * @param jobCode jobCode
+ * @throws SchedulerException SchedulerException
+ */
+ public void remove(String jobCode) throws SchedulerException {
+ //获得作业元数据
+ JobDetailMeta jobDetailMeta = getJobDetailMeta(jobCode);
+ // 设置jobkey
+ JobKey jobKey = getJobKey(jobDetailMeta);
+ // 删除
+ this.s.getScheduler().deleteJob(jobKey);
+ }
+
+ /**
+ * 描述 : 触发
+ *
+ * @param jobCode 作业代码
+ * @param jobDataMap 作业数据
+ * @throws SchedulerException SchedulerException
+ */
+ public void trigger(String jobCode, JobDataMap jobDataMap) throws SchedulerException {
+ //获得作业元数据
+ JobDetailMeta jobDetailMeta = getJobDetailMeta(jobCode);
+ // 设置jobkey
+ JobKey jobKey = getJobKey(jobDetailMeta);
+ // 触发
+ this.s.getScheduler().triggerJob(jobKey, jobDataMap);
+ }
+
+ /**
+ * 描述 : 暂停
+ *
+ * @param jobCode 作业代码
+ * @throws SchedulerException SchedulerException
+ */
+ public void puse(String jobCode) throws SchedulerException {
+ //获得作业元数据
+ JobDetailMeta jobDetailMeta = getJobDetailMeta(jobCode);
+ // 设置jobkey
+ JobKey jobKey = getJobKey(jobDetailMeta);
+ // 暂停
+ this.s.getScheduler().pauseJob(jobKey);
+ }
+
+ /**
+ * 描述 : 恢复
+ *
+ * @param jobCode 作业代码
+ * @throws SchedulerException SchedulerException
+ */
+ public void resume(String jobCode) throws SchedulerException {
+ //获得作业元数据
+ JobDetailMeta jobDetailMeta = getJobDetailMeta(jobCode);
+ // 设置jobkey
+ JobKey jobKey = getJobKey(jobDetailMeta);
+ // 恢复
+ this.s.getScheduler().resumeJob(jobKey);
+ }
+
+ /**
+ * 描述 : 暂停所有
+ *
+ * @throws SchedulerException SchedulerException
+ */
+ public void puseAll() throws SchedulerException {
+ // 暂停所有
+ this.s.getScheduler().pauseAll();
+ }
+
+ /**
+ * 描述 : 恢复所有
+ *
+ * @throws SchedulerException SchedulerException
+ */
+ public void resumeAll() throws SchedulerException {
+ // 暂停所有
+ this.s.getScheduler().resumeAll();
+ }
+
+ /**
+ * 描述 : 返回jobKey
+ *
+ * @param jobDetailMeta 作业元数据
+ * @return jobKey
+ * @throws SchedulerException SchedulerException
+ */
+ protected JobKey getJobKey(JobDetailMeta jobDetailMeta) throws SchedulerException {
+ // 获得计划任务管理器
+ Scheduler sch = this.s.getScheduler();
+ // 设置jobkey
+ JobKey jobKey = new JobKey(jobDetailMeta.getName(), jobDetailMeta.getGroup());
+ //判断job是否存在
+ if (sch.checkExists(jobKey)) {
+ return jobKey;
+ } else {
+ throw new SchException("job key : " + jobDetailMeta.getName() + " / group : "
+ + jobDetailMeta.getGroup() + " not exist!");
+ }
+ }
+
+ /**
+ * 描述 : 返回作业元数据
+ *
+ * @param jobCode 作业代码
+ * @return 作业元数据
+ */
+ protected JobDetailMeta getJobDetailMeta(String jobCode) {
+ //判空
+ if (MapUtils.isEmpty(schedulerProperties.getJobDetail())) {
+ throw new SchException("JobDetail not defined!");
+ }
+ //获得作业定义
+ JobDetailMeta jobDetailMeta = schedulerProperties.getJobDetail().get(jobCode);
+ //判断作业是否存在
+ if (jobDetailMeta == null) {
+ throw new SchException("jobCode : " + jobCode + " not defined!");
+ }
+ //获得组别定义
+ String groupName = schedulerProperties.getJobGroup().get(jobDetailMeta.getGroup());
+ //判断组别是否存在
+ if (StringUtils.isBlank(groupName)) {
+ throw new SchException("group : " + jobDetailMeta.getGroup() + " not defined!");
+ }
+ //返回
+ return jobDetailMeta;
+ }
+
+}
diff --git a/udf-starter-scheduler/src/main/java/org/itkk/udf/scheduler/service/ListenerService.java b/udf-stater/udf-starter-scheduler/src/main/java/org/itkk/udf/scheduler/service/ListenerService.java
similarity index 97%
rename from udf-starter-scheduler/src/main/java/org/itkk/udf/scheduler/service/ListenerService.java
rename to udf-stater/udf-starter-scheduler/src/main/java/org/itkk/udf/scheduler/service/ListenerService.java
index 4caf2b1..8155f54 100644
--- a/udf-starter-scheduler/src/main/java/org/itkk/udf/scheduler/service/ListenerService.java
+++ b/udf-stater/udf-starter-scheduler/src/main/java/org/itkk/udf/scheduler/service/ListenerService.java
@@ -1,251 +1,251 @@
-/**
- * ListenerService.java
- * Created at 2017-06-01
- * Created by Administrator
- * Copyright (C) 2016 itkk.org, All rights reserved.
- */
-package org.itkk.udf.scheduler.service;
-
-import org.apache.commons.lang3.exception.ExceptionUtils;
-import org.itkk.udf.scheduler.IListenerEvent;
-import org.itkk.udf.scheduler.SchedulerConfig;
-import org.itkk.udf.scheduler.domain.ScheduledTriggerLog;
-import org.quartz.*;
-import org.quartz.Trigger.CompletedExecutionInstruction;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.stereotype.Service;
-
-import java.util.Date;
-import java.util.HashMap;
-import java.util.Map;
-import java.util.UUID;
-
-/**
- * 描述 : ListenerService
- *
- * @author Administrator
- */
-@Service
-public class ListenerService {
-
- /**
- * 描述 : schedulerConfig
- */
- @Autowired
- private SchedulerConfig schedulerConfig;
-
- /**
- * 描述 : listenerLog
- */
- @Autowired(required = false)
- private IListenerEvent listenerLog;
-
- /**
- *
- * Description: 保存未正常触发的记录
- *
- *
- * @param trigger 触发器
- */
- public void saveTriggerMisfired(Trigger trigger) { // 1
- ScheduledTriggerLog tstl = new ScheduledTriggerLog();
- tstl.setLogid(UUID.randomUUID().toString());
- tstl.setScheduledFireTime(null);
- tstl.setFireTime(null);
- tstl.setEndTime(null);
- tstl.setJobRunTime(null);
- tstl.setStatus("misfired");
- tstl.setResult(null);
- tstl.setErrorMsg(null);
- tstl.setTriggerName(trigger.getKey().getName());
- tstl.setTriggerGroup(trigger.getKey().getGroup());
- tstl.setJobName(trigger.getJobKey().getName());
- tstl.setJobGroup(trigger.getJobKey().getGroup());
- tstl.setJobClass(null);
- tstl.setThreadGroupName(Thread.currentThread().getThreadGroup().getName());
- tstl.setThreadId(Long.toString(Thread.currentThread().getId()));
- tstl.setThreadName(Thread.currentThread().getName());
- tstl.setThreadPriority(Long.toString(Thread.currentThread().getPriority()));
- tstl.setScheduledId(null);
- tstl.setScheduledName(null);
- tstl.setCreateDate(new Date());
- if (listenerLog != null) {
- listenerLog.save(tstl);
- }
- }
-
- /**
- *
- * Description: 准备触发
- *
- *
- * @param context 执行上下文
- * @throws SchedulerException SchedulerException
- */
- public void saveTriggerFired(JobExecutionContext context) throws SchedulerException {
- // 状态和异常信息
- String status = "triggering";
- String exceptionDetail = null;
- // 是否记录执行历史(true记录,false不记录) , 是否详细记录执行历史(true记录,false不记录)
- if (this.schedulerConfig.getLogFlag() && this.schedulerConfig.getLogDetailFlag()) {
- save(context, status, null, exceptionDetail);
- }
- }
-
- /**
- *
- * Description: 判断是否否决
- *
- *
- * @param context 执行上下文
- * @return 是否否决
- * @throws SchedulerException SchedulerException
- */
- public boolean saveVetoJobExecution(JobExecutionContext context) throws SchedulerException {
- // 是否否决
- boolean vetoed = false;
- // 状态和异常信息
- String status = "vetoed(" + vetoed + ")";
- String exceptionDetail = null;
- // 是否记录执行历史(true记录,false不记录) , 是否详细记录执行历史(true记录,false不记录)
- if (this.schedulerConfig.getLogFlag() && this.schedulerConfig.getLogDetailFlag()) {
- save(context, status, null, exceptionDetail);
- }
- return vetoed;
- }
-
- /**
- *
- * Description: 准备执行作业
- *
- *
- * @param context 上下文
- * @throws SchedulerException SchedulerException
- */
- public void saveJobToBeExecuted(JobExecutionContext context) throws SchedulerException {
- // 状态和异常信息
- String status = "toBeExecuted";
- String exceptionDetail = null;
- // 是否记录执行历史(true记录,false不记录) , 是否详细记录执行历史(true记录,false不记录)
- if (this.schedulerConfig.getLogFlag() && this.schedulerConfig.getLogDetailFlag()) {
- save(context, status, null, exceptionDetail);
- }
- }
-
- /**
- *
- * Description: 作业执行被否决
- *
- *
- * @param context 上下文
- * @throws SchedulerException SchedulerException
- */
- public void saveJobExecutionVetoed(JobExecutionContext context) throws SchedulerException {
- // 状态和异常信息
- String status = "executionVetoed";
- String exceptionDetail = null;
- // 写入新的记录
- save(context, status, null, exceptionDetail);
- }
-
- /**
- *
- * Description: 作业执行完毕
- *
- *
- * @param context 上下文
- * @param jobException 执行异常
- * @throws SchedulerException 异常信息
- */
- public void saveJobWasExecuted(JobExecutionContext context, JobExecutionException jobException)
- throws SchedulerException {
- // 状态和异常信息
- String status = "executed";
- String exceptionDetail = null;
- // 如果作业异常,则放入信息到result中
- if (null != jobException) {
- Map result = new HashMap<>();
- result.put("status", "error");
- result.put("jobException", jobException);
- context.setResult(result);
- // 获得异常信息
- exceptionDetail = ExceptionUtils.getStackTrace(jobException);
- }
- // 是否记录执行历史(true记录,false不记录) , 是否详细记录执行历史(true记录,false不记录)
- if (this.schedulerConfig.getLogFlag() && this.schedulerConfig.getLogDetailFlag()) {
- save(context, status, null, exceptionDetail);
- }
- }
-
- /**
- *
- * Description: 触发完成
- *
- *
- * @param context 上下文
- * @param triggerInstructionCode 状态
- * @throws SchedulerException SchedulerException
- */
- @SuppressWarnings("unchecked")
- public void saveTriggerComplete(JobExecutionContext context,
- CompletedExecutionInstruction triggerInstructionCode) throws SchedulerException {
- // 状态和异常信息
- String status = "complete";
- String exceptionDetail = null;
- // 获得result
- Object o = context.getResult();
- if (o instanceof Map) {
- Map result = (Map) o;
- status = result.get("status").toString();
- JobExecutionException jobException = (JobExecutionException) result.get("jobException");
- // 获得异常信息
- exceptionDetail = ExceptionUtils.getStackTrace(jobException);
- }
- // 是否记录执行历史(true记录,false不记录)
- if (this.schedulerConfig.getLogFlag()) {
- save(context, status, triggerInstructionCode.toString(), exceptionDetail);
- }
- }
-
- /**
- * 描述 : build
- *
- * @param context context
- * @param status status
- * @param result result
- * @param exceptionDetail exceptionDetail
- * @throws SchedulerException SchedulerException
- */
- private void save(JobExecutionContext context, String status, String result,
- String exceptionDetail) throws SchedulerException {
- // 获得计划任务实例
- Scheduler s = context.getScheduler();
- //构造
- ScheduledTriggerLog tstl = new ScheduledTriggerLog();
- tstl.setLogid(context.getFireInstanceId());
- tstl.setScheduledFireTime(context.getScheduledFireTime());
- tstl.setFireTime(context.getFireTime());
- tstl.setEndTime(new Date());
- tstl.setJobRunTime(context.getJobRunTime());
- tstl.setStatus(status);
- tstl.setResult(result);
- tstl.setErrorMsg(exceptionDetail);
- tstl.setTriggerName(context.getTrigger().getKey().getName());
- tstl.setTriggerGroup(context.getTrigger().getKey().getGroup());
- tstl.setJobName(context.getJobDetail().getKey().getName());
- tstl.setJobGroup(context.getJobDetail().getKey().getGroup());
- tstl.setJobClass(context.getJobDetail().getJobClass().getName());
- tstl.setThreadGroupName(Thread.currentThread().getThreadGroup().getName());
- tstl.setThreadId(Long.toString(Thread.currentThread().getId()));
- tstl.setThreadName(Thread.currentThread().getName());
- tstl.setThreadPriority(Long.toString(Thread.currentThread().getPriority()));
- tstl.setScheduledId(s.getSchedulerInstanceId());
- tstl.setScheduledName(s.getSchedulerName());
- tstl.setCreateDate(new Date());
- if (listenerLog != null) {
- listenerLog.delete(context.getFireInstanceId());
- listenerLog.save(tstl);
- }
- }
-
-}
+/**
+ * ListenerService.java
+ * Created at 2017-06-01
+ * Created by Administrator
+ * Copyright (C) 2016 itkk.org, All rights reserved.
+ */
+package org.itkk.udf.scheduler.service;
+
+import org.apache.commons.lang3.exception.ExceptionUtils;
+import org.itkk.udf.scheduler.IListenerEvent;
+import org.itkk.udf.scheduler.SchedulerConfig;
+import org.itkk.udf.scheduler.domain.ScheduledTriggerLog;
+import org.quartz.*;
+import org.quartz.Trigger.CompletedExecutionInstruction;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.util.Date;
+import java.util.HashMap;
+import java.util.Map;
+import java.util.UUID;
+
+/**
+ * 描述 : ListenerService
+ *
+ * @author Administrator
+ */
+@Service
+public class ListenerService {
+
+ /**
+ * 描述 : schedulerConfig
+ */
+ @Autowired
+ private SchedulerConfig schedulerConfig;
+
+ /**
+ * 描述 : listenerLog
+ */
+ @Autowired(required = false)
+ private IListenerEvent listenerLog;
+
+ /**
+ *
+ * Description: 保存未正常触发的记录
+ *
+ *
+ * @param trigger 触发器
+ */
+ public void saveTriggerMisfired(Trigger trigger) { // 1
+ ScheduledTriggerLog tstl = new ScheduledTriggerLog();
+ tstl.setLogid(UUID.randomUUID().toString());
+ tstl.setScheduledFireTime(null);
+ tstl.setFireTime(null);
+ tstl.setEndTime(null);
+ tstl.setJobRunTime(null);
+ tstl.setStatus("misfired");
+ tstl.setResult(null);
+ tstl.setErrorMsg(null);
+ tstl.setTriggerName(trigger.getKey().getName());
+ tstl.setTriggerGroup(trigger.getKey().getGroup());
+ tstl.setJobName(trigger.getJobKey().getName());
+ tstl.setJobGroup(trigger.getJobKey().getGroup());
+ tstl.setJobClass(null);
+ tstl.setThreadGroupName(Thread.currentThread().getThreadGroup().getName());
+ tstl.setThreadId(Long.toString(Thread.currentThread().getId()));
+ tstl.setThreadName(Thread.currentThread().getName());
+ tstl.setThreadPriority(Long.toString(Thread.currentThread().getPriority()));
+ tstl.setScheduledId(null);
+ tstl.setScheduledName(null);
+ tstl.setCreateDate(new Date());
+ if (listenerLog != null) {
+ listenerLog.save(tstl);
+ }
+ }
+
+ /**
+ *
+ * Description: 准备触发
+ *
+ *
+ * @param context 执行上下文
+ * @throws SchedulerException SchedulerException
+ */
+ public void saveTriggerFired(JobExecutionContext context) throws SchedulerException {
+ // 状态和异常信息
+ String status = "triggering";
+ String exceptionDetail = null;
+ // 是否记录执行历史(true记录,false不记录) , 是否详细记录执行历史(true记录,false不记录)
+ if (this.schedulerConfig.getLogFlag() && this.schedulerConfig.getLogDetailFlag()) {
+ save(context, status, null, exceptionDetail);
+ }
+ }
+
+ /**
+ *
+ * Description: 判断是否否决
+ *
+ *
+ * @param context 执行上下文
+ * @return 是否否决
+ * @throws SchedulerException SchedulerException
+ */
+ public boolean saveVetoJobExecution(JobExecutionContext context) throws SchedulerException {
+ // 是否否决
+ boolean vetoed = false;
+ // 状态和异常信息
+ String status = "vetoed(" + vetoed + ")";
+ String exceptionDetail = null;
+ // 是否记录执行历史(true记录,false不记录) , 是否详细记录执行历史(true记录,false不记录)
+ if (this.schedulerConfig.getLogFlag() && this.schedulerConfig.getLogDetailFlag()) {
+ save(context, status, null, exceptionDetail);
+ }
+ return vetoed;
+ }
+
+ /**
+ *
+ * Description: 准备执行作业
+ *
+ *
+ * @param context 上下文
+ * @throws SchedulerException SchedulerException
+ */
+ public void saveJobToBeExecuted(JobExecutionContext context) throws SchedulerException {
+ // 状态和异常信息
+ String status = "toBeExecuted";
+ String exceptionDetail = null;
+ // 是否记录执行历史(true记录,false不记录) , 是否详细记录执行历史(true记录,false不记录)
+ if (this.schedulerConfig.getLogFlag() && this.schedulerConfig.getLogDetailFlag()) {
+ save(context, status, null, exceptionDetail);
+ }
+ }
+
+ /**
+ *
+ * Description: 作业执行被否决
+ *
+ *
+ * @param context 上下文
+ * @throws SchedulerException SchedulerException
+ */
+ public void saveJobExecutionVetoed(JobExecutionContext context) throws SchedulerException {
+ // 状态和异常信息
+ String status = "executionVetoed";
+ String exceptionDetail = null;
+ // 写入新的记录
+ save(context, status, null, exceptionDetail);
+ }
+
+ /**
+ *
+ * Description: 作业执行完毕
+ *
+ *
+ * @param context 上下文
+ * @param jobException 执行异常
+ * @throws SchedulerException 异常信息
+ */
+ public void saveJobWasExecuted(JobExecutionContext context, JobExecutionException jobException)
+ throws SchedulerException {
+ // 状态和异常信息
+ String status = "executed";
+ String exceptionDetail = null;
+ // 如果作业异常,则放入信息到result中
+ if (null != jobException) {
+ Map result = new HashMap<>();
+ result.put("status", "error");
+ result.put("jobException", jobException);
+ context.setResult(result);
+ // 获得异常信息
+ exceptionDetail = ExceptionUtils.getStackTrace(jobException);
+ }
+ // 是否记录执行历史(true记录,false不记录) , 是否详细记录执行历史(true记录,false不记录)
+ if (this.schedulerConfig.getLogFlag() && this.schedulerConfig.getLogDetailFlag()) {
+ save(context, status, null, exceptionDetail);
+ }
+ }
+
+ /**
+ *
+ * Description: 触发完成
+ *
+ *
+ * @param context 上下文
+ * @param triggerInstructionCode 状态
+ * @throws SchedulerException SchedulerException
+ */
+ @SuppressWarnings("unchecked")
+ public void saveTriggerComplete(JobExecutionContext context,
+ CompletedExecutionInstruction triggerInstructionCode) throws SchedulerException {
+ // 状态和异常信息
+ String status = "complete";
+ String exceptionDetail = null;
+ // 获得result
+ Object o = context.getResult();
+ if (o instanceof Map) {
+ Map result = (Map) o;
+ status = result.get("status").toString();
+ JobExecutionException jobException = (JobExecutionException) result.get("jobException");
+ // 获得异常信息
+ exceptionDetail = ExceptionUtils.getStackTrace(jobException);
+ }
+ // 是否记录执行历史(true记录,false不记录)
+ if (this.schedulerConfig.getLogFlag()) {
+ save(context, status, triggerInstructionCode.toString(), exceptionDetail);
+ }
+ }
+
+ /**
+ * 描述 : build
+ *
+ * @param context context
+ * @param status status
+ * @param result result
+ * @param exceptionDetail exceptionDetail
+ * @throws SchedulerException SchedulerException
+ */
+ private void save(JobExecutionContext context, String status, String result,
+ String exceptionDetail) throws SchedulerException {
+ // 获得计划任务实例
+ Scheduler s = context.getScheduler();
+ //构造
+ ScheduledTriggerLog tstl = new ScheduledTriggerLog();
+ tstl.setLogid(context.getFireInstanceId());
+ tstl.setScheduledFireTime(context.getScheduledFireTime());
+ tstl.setFireTime(context.getFireTime());
+ tstl.setEndTime(new Date());
+ tstl.setJobRunTime(context.getJobRunTime());
+ tstl.setStatus(status);
+ tstl.setResult(result);
+ tstl.setErrorMsg(exceptionDetail);
+ tstl.setTriggerName(context.getTrigger().getKey().getName());
+ tstl.setTriggerGroup(context.getTrigger().getKey().getGroup());
+ tstl.setJobName(context.getJobDetail().getKey().getName());
+ tstl.setJobGroup(context.getJobDetail().getKey().getGroup());
+ tstl.setJobClass(context.getJobDetail().getJobClass().getName());
+ tstl.setThreadGroupName(Thread.currentThread().getThreadGroup().getName());
+ tstl.setThreadId(Long.toString(Thread.currentThread().getId()));
+ tstl.setThreadName(Thread.currentThread().getName());
+ tstl.setThreadPriority(Long.toString(Thread.currentThread().getPriority()));
+ tstl.setScheduledId(s.getSchedulerInstanceId());
+ tstl.setScheduledName(s.getSchedulerName());
+ tstl.setCreateDate(new Date());
+ if (listenerLog != null) {
+ listenerLog.delete(context.getFireInstanceId());
+ listenerLog.save(tstl);
+ }
+ }
+
+}
diff --git a/udf-starter-scheduler/src/main/java/org/itkk/udf/scheduler/service/SchedulerService.java b/udf-stater/udf-starter-scheduler/src/main/java/org/itkk/udf/scheduler/service/SchedulerService.java
similarity index 95%
rename from udf-starter-scheduler/src/main/java/org/itkk/udf/scheduler/service/SchedulerService.java
rename to udf-stater/udf-starter-scheduler/src/main/java/org/itkk/udf/scheduler/service/SchedulerService.java
index dd0cf43..8bd8757 100644
--- a/udf-starter-scheduler/src/main/java/org/itkk/udf/scheduler/service/SchedulerService.java
+++ b/udf-stater/udf-starter-scheduler/src/main/java/org/itkk/udf/scheduler/service/SchedulerService.java
@@ -1,39 +1,39 @@
-/**
- * SchedulerService.java
- * Created at 2017-06-02
- * Created by Administrator
- * Copyright (C) 2016 itkk.org, All rights reserved.
- */
-package org.itkk.udf.scheduler.service;
-
-import org.quartz.SchedulerException;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.beans.factory.annotation.Qualifier;
-import org.springframework.scheduling.quartz.SchedulerFactoryBean;
-import org.springframework.stereotype.Service;
-
-/**
- * 描述 : SchedulerService
- *
- * @author Administrator
- */
-@Service
-public class SchedulerService {
-
- /**
- * 描述 : SchedulerFactoryBean
- */
- @Autowired
- @Qualifier("clusterQuartzScheduler")
- private SchedulerFactoryBean s;
-
- /**
- * 描述 : 清理
- *
- * @throws SchedulerException SchedulerException
- */
- public void clear() throws SchedulerException {
- this.s.getScheduler().clear();
- }
-
-}
+/**
+ * SchedulerService.java
+ * Created at 2017-06-02
+ * Created by Administrator
+ * Copyright (C) 2016 itkk.org, All rights reserved.
+ */
+package org.itkk.udf.scheduler.service;
+
+import org.quartz.SchedulerException;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Qualifier;
+import org.springframework.scheduling.quartz.SchedulerFactoryBean;
+import org.springframework.stereotype.Service;
+
+/**
+ * 描述 : SchedulerService
+ *
+ * @author Administrator
+ */
+@Service
+public class SchedulerService {
+
+ /**
+ * 描述 : SchedulerFactoryBean
+ */
+ @Autowired
+ @Qualifier("clusterQuartzScheduler")
+ private SchedulerFactoryBean s;
+
+ /**
+ * 描述 : 清理
+ *
+ * @throws SchedulerException SchedulerException
+ */
+ public void clear() throws SchedulerException {
+ this.s.getScheduler().clear();
+ }
+
+}
diff --git a/udf-starter-scheduler/src/main/java/org/itkk/udf/scheduler/service/TriggerService.java b/udf-stater/udf-starter-scheduler/src/main/java/org/itkk/udf/scheduler/service/TriggerService.java
similarity index 97%
rename from udf-starter-scheduler/src/main/java/org/itkk/udf/scheduler/service/TriggerService.java
rename to udf-stater/udf-starter-scheduler/src/main/java/org/itkk/udf/scheduler/service/TriggerService.java
index 0799ab0..9c616e8 100644
--- a/udf-starter-scheduler/src/main/java/org/itkk/udf/scheduler/service/TriggerService.java
+++ b/udf-stater/udf-starter-scheduler/src/main/java/org/itkk/udf/scheduler/service/TriggerService.java
@@ -1,458 +1,458 @@
-package org.itkk.udf.scheduler.service;
-
-import org.apache.commons.collections4.CollectionUtils;
-import org.apache.commons.collections4.MapUtils;
-import org.apache.commons.lang3.StringUtils;
-import org.itkk.udf.core.utils.DateUtil;
-import org.itkk.udf.scheduler.SchedulerProperties;
-import org.itkk.udf.scheduler.client.SchException;
-import org.itkk.udf.scheduler.meta.CronTriggerMeta;
-import org.itkk.udf.scheduler.meta.JobDetailMeta;
-import org.itkk.udf.scheduler.meta.SimpleTriggerMeta;
-import org.itkk.udf.scheduler.meta.TriggerMeta;
-import org.quartz.*;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.beans.factory.annotation.Qualifier;
-import org.springframework.scheduling.quartz.SchedulerFactoryBean;
-import org.springframework.stereotype.Service;
-
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-import java.util.TimeZone;
-
-/**
- * 描述 : TriggerService
- *
- * @author Administrator
- */
-@Service
-public class TriggerService {
-
- /**
- * 描述 : SchedulerFactoryBean
- */
- @Autowired
- @Qualifier("clusterQuartzScheduler")
- private SchedulerFactoryBean s;
-
- /**
- * 描述 : jobService
- */
- @Autowired
- private JobService jobService;
-
- /**
- * 描述 : schedulerProperties
- */
- @Autowired
- private SchedulerProperties schedulerProperties;
-
- /**
- * 描述 : 触发器组
- *
- * @return 触发器组
- */
- public Map group() {
- return schedulerProperties.getTriggerGroup();
- }
-
- /**
- * 描述 : simple的MisfireInstruction
- *
- * @return simple的MisfireInstruction
- */
- public Map simpleMisfireInstruction() {
- //定义
- Map result = new HashMap<>();
- result.put(SimpleTrigger.MISFIRE_INSTRUCTION_FIRE_NOW, "Fire Now");
- result.put(SimpleTrigger.MISFIRE_INSTRUCTION_RESCHEDULE_NEXT_WITH_EXISTING_COUNT,
- "Reschedule Next With Existing Count");
- result.put(SimpleTrigger.MISFIRE_INSTRUCTION_RESCHEDULE_NEXT_WITH_REMAINING_COUNT,
- "Reschedule Next With Remaining Count");
- result.put(SimpleTrigger.MISFIRE_INSTRUCTION_RESCHEDULE_NOW_WITH_EXISTING_REPEAT_COUNT,
- "Now With Existing Repeat Count");
- result.put(SimpleTrigger.MISFIRE_INSTRUCTION_RESCHEDULE_NOW_WITH_REMAINING_REPEAT_COUNT,
- "Reschedule Now With Remaining Repeat Count");
- result.put(SimpleTrigger.MISFIRE_INSTRUCTION_IGNORE_MISFIRE_POLICY, "Ignore Misfire Policy");
- result.put(SimpleTrigger.MISFIRE_INSTRUCTION_SMART_POLICY, "Smart Policy");
- //返回
- return result;
- }
-
- /**
- * 描述 : cron的MisfireInstruction
- *
- * @return cron的MisfireInstruction
- */
- public Map cronMisfireInstruction() {
- //定义
- Map result = new HashMap<>();
- result.put(CronTrigger.MISFIRE_INSTRUCTION_DO_NOTHING, "Do Nothing");
- result.put(CronTrigger.MISFIRE_INSTRUCTION_FIRE_ONCE_NOW, "Fire Once Now");
- result.put(CronTrigger.MISFIRE_INSTRUCTION_IGNORE_MISFIRE_POLICY, "Ignore Misfire Policy");
- result.put(CronTrigger.MISFIRE_INSTRUCTION_SMART_POLICY, "Smart Policy");
- //返回
- return result;
- }
-
- /**
- * 描述 : 日历列表
- *
- * @return 日历列表
- * @throws SchedulerException SchedulerException
- */
- public List calendar() throws SchedulerException {
- return this.s.getScheduler().getCalendarNames();
- }
-
- /**
- * 描述 : 时区列表
- *
- * @return 时区列表
- */
- public Map timeZoneId() {
- Map result = new HashMap<>();
- List jgl = DateUtil.fecthAllTimeZoneIds();
- if (CollectionUtils.isNotEmpty(jgl)) {
- for (String item : jgl) {
- result.put(item, "(UTC+" + DateUtil.getUtcTimeZoneRawOffset(item) + ")" + item);
- }
- }
- return result;
- }
-
- /**
- * 描述 : 保存cron触发器
- *
- * @param cronTriggerCode cron触发器代码
- * @param cover 是否覆盖
- * @throws SchedulerException SchedulerException
- */
- public void saveCronTrigger(String cronTriggerCode, boolean cover) throws SchedulerException {
- //获得cron触发器元数据
- CronTriggerMeta triggerMeta = getCronTriggerMeta(cronTriggerCode);
- // 获得计划任务管理器
- Scheduler sch = this.s.getScheduler();
- //获得触发器键
- TriggerKey triggerKey = new TriggerKey(triggerMeta.getName(), triggerMeta.getGroup());
- //判断触发器是否存在
- if (sch.checkExists(triggerKey) && !cover) {
- throw new SchException("trigger key : " + triggerMeta.getName() + " / group : " //NOSONAR
- + triggerMeta.getGroup() + " already exist!");
- }
- //获得作业元数据
- JobDetailMeta jobDetailMeta = jobService.getJobDetailMeta(triggerMeta.getJobCode());
- // 获得jobkey
- JobKey jobKey = jobService.getJobKey(jobDetailMeta);
- // 获得jobDataMap
- JobDataMap jobDataMap = new JobDataMap();
- if (MapUtils.isNotEmpty(triggerMeta.getDataMap())) {
- jobDataMap = new JobDataMap(triggerMeta.getDataMap());
- }
- // 获得triggerBuilder
- TriggerBuilder triggerBuilder = TriggerBuilder.newTrigger();
- // 设置triggerBuilder
- triggerBuilder.withIdentity(triggerKey); // 设置触发器对象
- triggerBuilder.usingJobData(jobDataMap); // 设置jobDataMap
- triggerBuilder.withPriority(triggerMeta.getPriority()); // 设置优先级
- if (triggerMeta.getStartTime() == null) { // 设置开始时间
- triggerBuilder.startNow();
- } else {
- triggerBuilder.startAt(triggerMeta.getStartTime());
- }
- triggerBuilder.endAt(triggerMeta.getEndTime()); // 结束时间,可以为空
- triggerBuilder.forJob(jobKey); // 针对的作业
- triggerBuilder.withDescription(triggerMeta.getDescription()); // 设置描述
- if (!StringUtils.isEmpty(triggerMeta.getCalendar())) { // 设置日历
- triggerBuilder.modifiedByCalendar(triggerMeta.getCalendar());
- }
- // cron表达式
- CronScheduleBuilder cronTriggerBuilder =
- CronScheduleBuilder.cronSchedule(triggerMeta.getCron());
- // 时区
- cronTriggerBuilder.inTimeZone(TimeZone.getTimeZone(triggerMeta.getTimeZoneId()));
- // 设置触发机制 默认 SimpleTrigger.MISFIRE_INSTRUCTION_SMART_POLICY
- switch (triggerMeta.getMisfireInstruction()) {
- case CronTrigger.MISFIRE_INSTRUCTION_DO_NOTHING:
- cronTriggerBuilder.withMisfireHandlingInstructionDoNothing();
- break;
- case CronTrigger.MISFIRE_INSTRUCTION_FIRE_ONCE_NOW:
- cronTriggerBuilder.withMisfireHandlingInstructionFireAndProceed();
- break;
- case CronTrigger.MISFIRE_INSTRUCTION_IGNORE_MISFIRE_POLICY:
- cronTriggerBuilder.withMisfireHandlingInstructionIgnoreMisfires();
- break;
- default:
- break;
- }
- // 将cronTrigger设置到triggerBuilder中
- triggerBuilder.withSchedule(cronTriggerBuilder);
- // 构造Trigger
- Trigger trigger = triggerBuilder.build();
- // 处理
- this.scheduleJob(triggerKey, jobKey, trigger);
- }
-
- /**
- * 描述 : 保存simple触发器
- *
- * @param simpleTriggerCode simple触发器代码
- * @param cover 是否覆盖
- * @throws SchedulerException SchedulerException
- */
- public void saveSimpleTirgger(String simpleTriggerCode, boolean cover) throws SchedulerException { //NOSONAR
- //获得simple触发器元数据
- SimpleTriggerMeta triggerMeta = getSimpleTriggerMeta(simpleTriggerCode);
- // 获得计划任务管理器
- Scheduler sch = this.s.getScheduler();
- //获得触发器键
- TriggerKey triggerKey = new TriggerKey(triggerMeta.getName(), triggerMeta.getGroup());
- //判断触发器是否存在
- if (sch.checkExists(triggerKey) && !cover) {
- throw new SchException("trigger key : " + triggerMeta.getName() + " / group : " //NOSONAR
- + triggerMeta.getGroup() + " already exist!");
- }
- //获得作业元数据
- JobDetailMeta jobDetailMeta = jobService.getJobDetailMeta(triggerMeta.getJobCode());
- // 获得jobkey
- JobKey jobKey = jobService.getJobKey(jobDetailMeta);
- // 获得jobDataMap
- JobDataMap jobDataMap = new JobDataMap();
- if (MapUtils.isNotEmpty(triggerMeta.getDataMap())) {
- jobDataMap = new JobDataMap(triggerMeta.getDataMap());
- }
- // 获得triggerBuilder
- TriggerBuilder triggerBuilder = TriggerBuilder.newTrigger();
- // 设置triggerBuilder
- triggerBuilder.withIdentity(triggerKey); // 设置触发器对象
- triggerBuilder.usingJobData(jobDataMap); // 设置jobDataMap
- triggerBuilder.withPriority(triggerMeta.getPriority()); // 设置优先级
- if (triggerMeta.getStartTime() == null) { // 设置开始时间
- triggerBuilder.startNow();
- } else {
- triggerBuilder.startAt(triggerMeta.getStartTime());
- }
- triggerBuilder.endAt(triggerMeta.getEndTime()); // 结束时间,可以为空
- triggerBuilder.forJob(jobKey); // 针对的作业
- triggerBuilder.withDescription(triggerMeta.getDescription()); // 设置描述
- if (!StringUtils.isEmpty(triggerMeta.getCalendar())) { // 设置日历
- triggerBuilder.modifiedByCalendar(triggerMeta.getCalendar());
- }
- // 获得SimpleTrigger
- SimpleScheduleBuilder simpleTriggerBuilder = SimpleScheduleBuilder.simpleSchedule();
- if (triggerMeta.getRepeatCount() != null) { // 重复次数
- simpleTriggerBuilder.withRepeatCount(triggerMeta.getRepeatCount());
- } else {
- simpleTriggerBuilder.repeatForever();
- }
- // 重复时间
- simpleTriggerBuilder.withIntervalInMilliseconds(triggerMeta.getIntervalInMilliseconds());
- // 设置触发机制 默认 SimpleTrigger.MISFIRE_INSTRUCTION_SMART_POLICY
- switch (triggerMeta.getMisfireInstruction()) {
- case SimpleTrigger.MISFIRE_INSTRUCTION_FIRE_NOW:
- simpleTriggerBuilder.withMisfireHandlingInstructionFireNow();
- break;
- case SimpleTrigger.MISFIRE_INSTRUCTION_RESCHEDULE_NEXT_WITH_EXISTING_COUNT:
- simpleTriggerBuilder.withMisfireHandlingInstructionNextWithExistingCount();
- break;
- case SimpleTrigger.MISFIRE_INSTRUCTION_RESCHEDULE_NEXT_WITH_REMAINING_COUNT:
- simpleTriggerBuilder.withMisfireHandlingInstructionNextWithRemainingCount();
- break;
- case SimpleTrigger.MISFIRE_INSTRUCTION_RESCHEDULE_NOW_WITH_EXISTING_REPEAT_COUNT:
- simpleTriggerBuilder.withMisfireHandlingInstructionNowWithExistingCount();
- break;
- case SimpleTrigger.MISFIRE_INSTRUCTION_RESCHEDULE_NOW_WITH_REMAINING_REPEAT_COUNT:
- simpleTriggerBuilder.withMisfireHandlingInstructionNowWithRemainingCount();
- break;
- case SimpleTrigger.MISFIRE_INSTRUCTION_IGNORE_MISFIRE_POLICY:
- simpleTriggerBuilder.withMisfireHandlingInstructionIgnoreMisfires();
- break;
- default:
- break;
- }
- // 将SimpleTrigger设置到triggerBuilder中
- triggerBuilder.withSchedule(simpleTriggerBuilder);
- // 构造Trigger
- Trigger trigger = triggerBuilder.build();
- // 处理
- this.scheduleJob(triggerKey, jobKey, trigger);
- }
-
- /**
- * 为job添加触发器
- *
- * @param triggerKey triggerKey
- * @param jobKey jobKey
- * @param trigger trigger
- * @throws SchedulerException SchedulerException
- */
- private void scheduleJob(TriggerKey triggerKey, JobKey jobKey, Trigger trigger) throws SchedulerException {
- // 获得计划任务管理器
- Scheduler sch = this.s.getScheduler();
- // 判断trigger是否存在
- if (sch.checkExists(triggerKey)) {
- // 获得当前触发器
- Trigger t = sch.getTrigger(triggerKey);
- // 判断触发器关联
- if (jobKey.getName().equals(t.getJobKey().getName())
- && jobKey.getGroup().equals(t.getJobKey().getGroup())) {
- // 更新触发器
- sch.rescheduleJob(triggerKey, trigger);
- } else {
- throw new SchException("rescheduleJob fail");
- }
- } else {
- // 创建触发器
- sch.scheduleJob(trigger);
- }
- }
-
- /**
- * 描述 : 移除
- *
- * @param triggerCode triggerCode
- * @throws SchedulerException SchedulerException
- */
- public void remove(String triggerCode) throws SchedulerException {
- //获得触发器元数据
- TriggerMeta triggerMeta = getTriggerMeta(triggerCode);
- // 获得triggerKey
- TriggerKey triggerKey = getTriggerKey(triggerMeta);
- // 操作
- this.s.getScheduler().unscheduleJob(triggerKey);
- }
-
- /**
- * 描述 : 暂停
- *
- * @param triggerCode triggerCode
- * @throws SchedulerException SchedulerException
- */
- public void puse(String triggerCode) throws SchedulerException {
- //获得触发器元数据
- TriggerMeta triggerMeta = getTriggerMeta(triggerCode);
- // 获得triggerKey
- TriggerKey triggerKey = getTriggerKey(triggerMeta);
- // 操作
- this.s.getScheduler().pauseTrigger(triggerKey);
- }
-
- /**
- * 描述 : 恢复
- *
- * @param triggerCode triggerCode
- * @throws SchedulerException SchedulerException
- */
- public void resume(String triggerCode) throws SchedulerException {
- //获得触发器元数据
- TriggerMeta triggerMeta = getTriggerMeta(triggerCode);
- // 获得triggerKey
- TriggerKey triggerKey = getTriggerKey(triggerMeta);
- // 操作
- this.s.getScheduler().resumeTrigger(triggerKey);
- }
-
- /**
- * 描述 : 获得TriggerKey
- *
- * @param triggerMeta 触发器元数据
- * @return TriggerKey
- * @throws SchedulerException SchedulerException
- */
- protected TriggerKey getTriggerKey(TriggerMeta triggerMeta) throws SchedulerException {
- // 获得计划任务管理器
- Scheduler sch = this.s.getScheduler();
- // 设置triggerKey
- TriggerKey triggerKey = new TriggerKey(triggerMeta.getName(), triggerMeta.getGroup());
- //判断job是否存在
- if (sch.checkExists(triggerKey)) {
- return triggerKey;
- } else {
- throw new SchException("trigger key : " + triggerMeta.getName() + " / group : "
- + triggerMeta.getGroup() + " not exist!");
- }
- }
-
- /**
- * 描述 : 返回触发器元数据
- *
- * @param triggerCode 触发器代码
- * @return 触发器元数据
- */
- protected TriggerMeta getTriggerMeta(String triggerCode) { //NOSONAR
- TriggerMeta cornTriggerMeta = null;
- TriggerMeta simpleTriggerMeta = null;
- if (MapUtils.isNotEmpty(schedulerProperties.getCronTrigger())) {
- cornTriggerMeta = schedulerProperties.getCronTrigger().get(triggerCode);
- }
- if (MapUtils.isNotEmpty(schedulerProperties.getSimpleTrigger())) {
- simpleTriggerMeta = schedulerProperties.getSimpleTrigger().get(triggerCode);
- }
- if (cornTriggerMeta == null && simpleTriggerMeta == null) {
- throw new SchException("triggerCode : " + triggerCode + " not defined!"); //NOSONAR
- } else if (simpleTriggerMeta == null) {
- return cornTriggerMeta;
- } else if (cornTriggerMeta == null) {
- return simpleTriggerMeta;
- } else {
- throw new SchException("triggerCode : " + triggerCode + " Definition repeats ");
- }
- }
-
- /**
- * 描述 : 获得cron触发器元数据
- *
- * @param cronTriggerCode simple触发器代码
- * @return simple触发器元数据
- */
- protected CronTriggerMeta getCronTriggerMeta(String cronTriggerCode) {
- //判空
- if (MapUtils.isEmpty(schedulerProperties.getCronTrigger())) {
- throw new SchException("cronTrigger not defined!");
- }
- //获得触发器定义
- CronTriggerMeta cronTriggerMeta = schedulerProperties.getCronTrigger().get(cronTriggerCode);
- //判断触发器是否存在
- if (cronTriggerMeta == null) {
- throw new SchException("cronTriggerCode : " + cronTriggerCode + " not defined!"); //NOSONAR
- }
- //获得组别定义
- String groupName = schedulerProperties.getTriggerGroup().get(cronTriggerMeta.getGroup());
- //判断组别是否存在
- if (StringUtils.isBlank(groupName)) {
- throw new SchException("group : " + cronTriggerMeta.getGroup() + " not defined!"); //NOSONAR
- }
- //返回
- return cronTriggerMeta;
- }
-
- /**
- * 描述 : 获得simple触发器元数据
- *
- * @param simpleTriggerCode simple触发器代码
- * @return simple触发器元数据
- */
- protected SimpleTriggerMeta getSimpleTriggerMeta(String simpleTriggerCode) {
- //判空
- if (MapUtils.isEmpty(schedulerProperties.getSimpleTrigger())) {
- throw new SchException("simpleTrigger not defined!");
- }
- //获得触发器定义
- SimpleTriggerMeta simpleTriggerMeta =
- schedulerProperties.getSimpleTrigger().get(simpleTriggerCode);
- //判断触发器是否存在
- if (simpleTriggerMeta == null) {
- throw new SchException("simpleTriggerCode : " + simpleTriggerCode + " not defined!"); //NOSONAR
- }
- //获得组别定义
- String groupName = schedulerProperties.getTriggerGroup().get(simpleTriggerMeta.getGroup());
- //判断组别是否存在
- if (StringUtils.isBlank(groupName)) {
- throw new SchException("group : " + simpleTriggerMeta.getGroup() + " not defined!"); //NOSONAR
- }
- //返回
- return simpleTriggerMeta;
- }
-
-}
+package org.itkk.udf.scheduler.service;
+
+import org.apache.commons.collections4.CollectionUtils;
+import org.apache.commons.collections4.MapUtils;
+import org.apache.commons.lang3.StringUtils;
+import org.itkk.udf.core.utils.DateUtil;
+import org.itkk.udf.scheduler.SchedulerProperties;
+import org.itkk.udf.scheduler.client.SchException;
+import org.itkk.udf.scheduler.meta.CronTriggerMeta;
+import org.itkk.udf.scheduler.meta.JobDetailMeta;
+import org.itkk.udf.scheduler.meta.SimpleTriggerMeta;
+import org.itkk.udf.scheduler.meta.TriggerMeta;
+import org.quartz.*;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Qualifier;
+import org.springframework.scheduling.quartz.SchedulerFactoryBean;
+import org.springframework.stereotype.Service;
+
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.TimeZone;
+
+/**
+ * 描述 : TriggerService
+ *
+ * @author Administrator
+ */
+@Service
+public class TriggerService {
+
+ /**
+ * 描述 : SchedulerFactoryBean
+ */
+ @Autowired
+ @Qualifier("clusterQuartzScheduler")
+ private SchedulerFactoryBean s;
+
+ /**
+ * 描述 : jobService
+ */
+ @Autowired
+ private JobService jobService;
+
+ /**
+ * 描述 : schedulerProperties
+ */
+ @Autowired
+ private SchedulerProperties schedulerProperties;
+
+ /**
+ * 描述 : 触发器组
+ *
+ * @return 触发器组
+ */
+ public Map group() {
+ return schedulerProperties.getTriggerGroup();
+ }
+
+ /**
+ * 描述 : simple的MisfireInstruction
+ *
+ * @return simple的MisfireInstruction
+ */
+ public Map simpleMisfireInstruction() {
+ //定义
+ Map result = new HashMap<>();
+ result.put(SimpleTrigger.MISFIRE_INSTRUCTION_FIRE_NOW, "Fire Now");
+ result.put(SimpleTrigger.MISFIRE_INSTRUCTION_RESCHEDULE_NEXT_WITH_EXISTING_COUNT,
+ "Reschedule Next With Existing Count");
+ result.put(SimpleTrigger.MISFIRE_INSTRUCTION_RESCHEDULE_NEXT_WITH_REMAINING_COUNT,
+ "Reschedule Next With Remaining Count");
+ result.put(SimpleTrigger.MISFIRE_INSTRUCTION_RESCHEDULE_NOW_WITH_EXISTING_REPEAT_COUNT,
+ "Now With Existing Repeat Count");
+ result.put(SimpleTrigger.MISFIRE_INSTRUCTION_RESCHEDULE_NOW_WITH_REMAINING_REPEAT_COUNT,
+ "Reschedule Now With Remaining Repeat Count");
+ result.put(SimpleTrigger.MISFIRE_INSTRUCTION_IGNORE_MISFIRE_POLICY, "Ignore Misfire Policy");
+ result.put(SimpleTrigger.MISFIRE_INSTRUCTION_SMART_POLICY, "Smart Policy");
+ //返回
+ return result;
+ }
+
+ /**
+ * 描述 : cron的MisfireInstruction
+ *
+ * @return cron的MisfireInstruction
+ */
+ public Map cronMisfireInstruction() {
+ //定义
+ Map result = new HashMap<>();
+ result.put(CronTrigger.MISFIRE_INSTRUCTION_DO_NOTHING, "Do Nothing");
+ result.put(CronTrigger.MISFIRE_INSTRUCTION_FIRE_ONCE_NOW, "Fire Once Now");
+ result.put(CronTrigger.MISFIRE_INSTRUCTION_IGNORE_MISFIRE_POLICY, "Ignore Misfire Policy");
+ result.put(CronTrigger.MISFIRE_INSTRUCTION_SMART_POLICY, "Smart Policy");
+ //返回
+ return result;
+ }
+
+ /**
+ * 描述 : 日历列表
+ *
+ * @return 日历列表
+ * @throws SchedulerException SchedulerException
+ */
+ public List calendar() throws SchedulerException {
+ return this.s.getScheduler().getCalendarNames();
+ }
+
+ /**
+ * 描述 : 时区列表
+ *
+ * @return 时区列表
+ */
+ public Map timeZoneId() {
+ Map result = new HashMap<>();
+ List jgl = DateUtil.fecthAllTimeZoneIds();
+ if (CollectionUtils.isNotEmpty(jgl)) {
+ for (String item : jgl) {
+ result.put(item, "(UTC+" + DateUtil.getUtcTimeZoneRawOffset(item) + ")" + item);
+ }
+ }
+ return result;
+ }
+
+ /**
+ * 描述 : 保存cron触发器
+ *
+ * @param cronTriggerCode cron触发器代码
+ * @param cover 是否覆盖
+ * @throws SchedulerException SchedulerException
+ */
+ public void saveCronTrigger(String cronTriggerCode, boolean cover) throws SchedulerException {
+ //获得cron触发器元数据
+ CronTriggerMeta triggerMeta = getCronTriggerMeta(cronTriggerCode);
+ // 获得计划任务管理器
+ Scheduler sch = this.s.getScheduler();
+ //获得触发器键
+ TriggerKey triggerKey = new TriggerKey(triggerMeta.getName(), triggerMeta.getGroup());
+ //判断触发器是否存在
+ if (sch.checkExists(triggerKey) && !cover) {
+ throw new SchException("trigger key : " + triggerMeta.getName() + " / group : " //NOSONAR
+ + triggerMeta.getGroup() + " already exist!");
+ }
+ //获得作业元数据
+ JobDetailMeta jobDetailMeta = jobService.getJobDetailMeta(triggerMeta.getJobCode());
+ // 获得jobkey
+ JobKey jobKey = jobService.getJobKey(jobDetailMeta);
+ // 获得jobDataMap
+ JobDataMap jobDataMap = new JobDataMap();
+ if (MapUtils.isNotEmpty(triggerMeta.getDataMap())) {
+ jobDataMap = new JobDataMap(triggerMeta.getDataMap());
+ }
+ // 获得triggerBuilder
+ TriggerBuilder triggerBuilder = TriggerBuilder.newTrigger();
+ // 设置triggerBuilder
+ triggerBuilder.withIdentity(triggerKey); // 设置触发器对象
+ triggerBuilder.usingJobData(jobDataMap); // 设置jobDataMap
+ triggerBuilder.withPriority(triggerMeta.getPriority()); // 设置优先级
+ if (triggerMeta.getStartTime() == null) { // 设置开始时间
+ triggerBuilder.startNow();
+ } else {
+ triggerBuilder.startAt(triggerMeta.getStartTime());
+ }
+ triggerBuilder.endAt(triggerMeta.getEndTime()); // 结束时间,可以为空
+ triggerBuilder.forJob(jobKey); // 针对的作业
+ triggerBuilder.withDescription(triggerMeta.getDescription()); // 设置描述
+ if (!StringUtils.isEmpty(triggerMeta.getCalendar())) { // 设置日历
+ triggerBuilder.modifiedByCalendar(triggerMeta.getCalendar());
+ }
+ // cron表达式
+ CronScheduleBuilder cronTriggerBuilder =
+ CronScheduleBuilder.cronSchedule(triggerMeta.getCron());
+ // 时区
+ cronTriggerBuilder.inTimeZone(TimeZone.getTimeZone(triggerMeta.getTimeZoneId()));
+ // 设置触发机制 默认 SimpleTrigger.MISFIRE_INSTRUCTION_SMART_POLICY
+ switch (triggerMeta.getMisfireInstruction()) {
+ case CronTrigger.MISFIRE_INSTRUCTION_DO_NOTHING:
+ cronTriggerBuilder.withMisfireHandlingInstructionDoNothing();
+ break;
+ case CronTrigger.MISFIRE_INSTRUCTION_FIRE_ONCE_NOW:
+ cronTriggerBuilder.withMisfireHandlingInstructionFireAndProceed();
+ break;
+ case CronTrigger.MISFIRE_INSTRUCTION_IGNORE_MISFIRE_POLICY:
+ cronTriggerBuilder.withMisfireHandlingInstructionIgnoreMisfires();
+ break;
+ default:
+ break;
+ }
+ // 将cronTrigger设置到triggerBuilder中
+ triggerBuilder.withSchedule(cronTriggerBuilder);
+ // 构造Trigger
+ Trigger trigger = triggerBuilder.build();
+ // 处理
+ this.scheduleJob(triggerKey, jobKey, trigger);
+ }
+
+ /**
+ * 描述 : 保存simple触发器
+ *
+ * @param simpleTriggerCode simple触发器代码
+ * @param cover 是否覆盖
+ * @throws SchedulerException SchedulerException
+ */
+ public void saveSimpleTirgger(String simpleTriggerCode, boolean cover) throws SchedulerException { //NOSONAR
+ //获得simple触发器元数据
+ SimpleTriggerMeta triggerMeta = getSimpleTriggerMeta(simpleTriggerCode);
+ // 获得计划任务管理器
+ Scheduler sch = this.s.getScheduler();
+ //获得触发器键
+ TriggerKey triggerKey = new TriggerKey(triggerMeta.getName(), triggerMeta.getGroup());
+ //判断触发器是否存在
+ if (sch.checkExists(triggerKey) && !cover) {
+ throw new SchException("trigger key : " + triggerMeta.getName() + " / group : " //NOSONAR
+ + triggerMeta.getGroup() + " already exist!");
+ }
+ //获得作业元数据
+ JobDetailMeta jobDetailMeta = jobService.getJobDetailMeta(triggerMeta.getJobCode());
+ // 获得jobkey
+ JobKey jobKey = jobService.getJobKey(jobDetailMeta);
+ // 获得jobDataMap
+ JobDataMap jobDataMap = new JobDataMap();
+ if (MapUtils.isNotEmpty(triggerMeta.getDataMap())) {
+ jobDataMap = new JobDataMap(triggerMeta.getDataMap());
+ }
+ // 获得triggerBuilder
+ TriggerBuilder triggerBuilder = TriggerBuilder.newTrigger();
+ // 设置triggerBuilder
+ triggerBuilder.withIdentity(triggerKey); // 设置触发器对象
+ triggerBuilder.usingJobData(jobDataMap); // 设置jobDataMap
+ triggerBuilder.withPriority(triggerMeta.getPriority()); // 设置优先级
+ if (triggerMeta.getStartTime() == null) { // 设置开始时间
+ triggerBuilder.startNow();
+ } else {
+ triggerBuilder.startAt(triggerMeta.getStartTime());
+ }
+ triggerBuilder.endAt(triggerMeta.getEndTime()); // 结束时间,可以为空
+ triggerBuilder.forJob(jobKey); // 针对的作业
+ triggerBuilder.withDescription(triggerMeta.getDescription()); // 设置描述
+ if (!StringUtils.isEmpty(triggerMeta.getCalendar())) { // 设置日历
+ triggerBuilder.modifiedByCalendar(triggerMeta.getCalendar());
+ }
+ // 获得SimpleTrigger
+ SimpleScheduleBuilder simpleTriggerBuilder = SimpleScheduleBuilder.simpleSchedule();
+ if (triggerMeta.getRepeatCount() != null) { // 重复次数
+ simpleTriggerBuilder.withRepeatCount(triggerMeta.getRepeatCount());
+ } else {
+ simpleTriggerBuilder.repeatForever();
+ }
+ // 重复时间
+ simpleTriggerBuilder.withIntervalInMilliseconds(triggerMeta.getIntervalInMilliseconds());
+ // 设置触发机制 默认 SimpleTrigger.MISFIRE_INSTRUCTION_SMART_POLICY
+ switch (triggerMeta.getMisfireInstruction()) {
+ case SimpleTrigger.MISFIRE_INSTRUCTION_FIRE_NOW:
+ simpleTriggerBuilder.withMisfireHandlingInstructionFireNow();
+ break;
+ case SimpleTrigger.MISFIRE_INSTRUCTION_RESCHEDULE_NEXT_WITH_EXISTING_COUNT:
+ simpleTriggerBuilder.withMisfireHandlingInstructionNextWithExistingCount();
+ break;
+ case SimpleTrigger.MISFIRE_INSTRUCTION_RESCHEDULE_NEXT_WITH_REMAINING_COUNT:
+ simpleTriggerBuilder.withMisfireHandlingInstructionNextWithRemainingCount();
+ break;
+ case SimpleTrigger.MISFIRE_INSTRUCTION_RESCHEDULE_NOW_WITH_EXISTING_REPEAT_COUNT:
+ simpleTriggerBuilder.withMisfireHandlingInstructionNowWithExistingCount();
+ break;
+ case SimpleTrigger.MISFIRE_INSTRUCTION_RESCHEDULE_NOW_WITH_REMAINING_REPEAT_COUNT:
+ simpleTriggerBuilder.withMisfireHandlingInstructionNowWithRemainingCount();
+ break;
+ case SimpleTrigger.MISFIRE_INSTRUCTION_IGNORE_MISFIRE_POLICY:
+ simpleTriggerBuilder.withMisfireHandlingInstructionIgnoreMisfires();
+ break;
+ default:
+ break;
+ }
+ // 将SimpleTrigger设置到triggerBuilder中
+ triggerBuilder.withSchedule(simpleTriggerBuilder);
+ // 构造Trigger
+ Trigger trigger = triggerBuilder.build();
+ // 处理
+ this.scheduleJob(triggerKey, jobKey, trigger);
+ }
+
+ /**
+ * 为job添加触发器
+ *
+ * @param triggerKey triggerKey
+ * @param jobKey jobKey
+ * @param trigger trigger
+ * @throws SchedulerException SchedulerException
+ */
+ private void scheduleJob(TriggerKey triggerKey, JobKey jobKey, Trigger trigger) throws SchedulerException {
+ // 获得计划任务管理器
+ Scheduler sch = this.s.getScheduler();
+ // 判断trigger是否存在
+ if (sch.checkExists(triggerKey)) {
+ // 获得当前触发器
+ Trigger t = sch.getTrigger(triggerKey);
+ // 判断触发器关联
+ if (jobKey.getName().equals(t.getJobKey().getName())
+ && jobKey.getGroup().equals(t.getJobKey().getGroup())) {
+ // 更新触发器
+ sch.rescheduleJob(triggerKey, trigger);
+ } else {
+ throw new SchException("rescheduleJob fail");
+ }
+ } else {
+ // 创建触发器
+ sch.scheduleJob(trigger);
+ }
+ }
+
+ /**
+ * 描述 : 移除
+ *
+ * @param triggerCode triggerCode
+ * @throws SchedulerException SchedulerException
+ */
+ public void remove(String triggerCode) throws SchedulerException {
+ //获得触发器元数据
+ TriggerMeta triggerMeta = getTriggerMeta(triggerCode);
+ // 获得triggerKey
+ TriggerKey triggerKey = getTriggerKey(triggerMeta);
+ // 操作
+ this.s.getScheduler().unscheduleJob(triggerKey);
+ }
+
+ /**
+ * 描述 : 暂停
+ *
+ * @param triggerCode triggerCode
+ * @throws SchedulerException SchedulerException
+ */
+ public void puse(String triggerCode) throws SchedulerException {
+ //获得触发器元数据
+ TriggerMeta triggerMeta = getTriggerMeta(triggerCode);
+ // 获得triggerKey
+ TriggerKey triggerKey = getTriggerKey(triggerMeta);
+ // 操作
+ this.s.getScheduler().pauseTrigger(triggerKey);
+ }
+
+ /**
+ * 描述 : 恢复
+ *
+ * @param triggerCode triggerCode
+ * @throws SchedulerException SchedulerException
+ */
+ public void resume(String triggerCode) throws SchedulerException {
+ //获得触发器元数据
+ TriggerMeta triggerMeta = getTriggerMeta(triggerCode);
+ // 获得triggerKey
+ TriggerKey triggerKey = getTriggerKey(triggerMeta);
+ // 操作
+ this.s.getScheduler().resumeTrigger(triggerKey);
+ }
+
+ /**
+ * 描述 : 获得TriggerKey
+ *
+ * @param triggerMeta 触发器元数据
+ * @return TriggerKey
+ * @throws SchedulerException SchedulerException
+ */
+ protected TriggerKey getTriggerKey(TriggerMeta triggerMeta) throws SchedulerException {
+ // 获得计划任务管理器
+ Scheduler sch = this.s.getScheduler();
+ // 设置triggerKey
+ TriggerKey triggerKey = new TriggerKey(triggerMeta.getName(), triggerMeta.getGroup());
+ //判断job是否存在
+ if (sch.checkExists(triggerKey)) {
+ return triggerKey;
+ } else {
+ throw new SchException("trigger key : " + triggerMeta.getName() + " / group : "
+ + triggerMeta.getGroup() + " not exist!");
+ }
+ }
+
+ /**
+ * 描述 : 返回触发器元数据
+ *
+ * @param triggerCode 触发器代码
+ * @return 触发器元数据
+ */
+ protected TriggerMeta getTriggerMeta(String triggerCode) { //NOSONAR
+ TriggerMeta cornTriggerMeta = null;
+ TriggerMeta simpleTriggerMeta = null;
+ if (MapUtils.isNotEmpty(schedulerProperties.getCronTrigger())) {
+ cornTriggerMeta = schedulerProperties.getCronTrigger().get(triggerCode);
+ }
+ if (MapUtils.isNotEmpty(schedulerProperties.getSimpleTrigger())) {
+ simpleTriggerMeta = schedulerProperties.getSimpleTrigger().get(triggerCode);
+ }
+ if (cornTriggerMeta == null && simpleTriggerMeta == null) {
+ throw new SchException("triggerCode : " + triggerCode + " not defined!"); //NOSONAR
+ } else if (simpleTriggerMeta == null) {
+ return cornTriggerMeta;
+ } else if (cornTriggerMeta == null) {
+ return simpleTriggerMeta;
+ } else {
+ throw new SchException("triggerCode : " + triggerCode + " Definition repeats ");
+ }
+ }
+
+ /**
+ * 描述 : 获得cron触发器元数据
+ *
+ * @param cronTriggerCode simple触发器代码
+ * @return simple触发器元数据
+ */
+ protected CronTriggerMeta getCronTriggerMeta(String cronTriggerCode) {
+ //判空
+ if (MapUtils.isEmpty(schedulerProperties.getCronTrigger())) {
+ throw new SchException("cronTrigger not defined!");
+ }
+ //获得触发器定义
+ CronTriggerMeta cronTriggerMeta = schedulerProperties.getCronTrigger().get(cronTriggerCode);
+ //判断触发器是否存在
+ if (cronTriggerMeta == null) {
+ throw new SchException("cronTriggerCode : " + cronTriggerCode + " not defined!"); //NOSONAR
+ }
+ //获得组别定义
+ String groupName = schedulerProperties.getTriggerGroup().get(cronTriggerMeta.getGroup());
+ //判断组别是否存在
+ if (StringUtils.isBlank(groupName)) {
+ throw new SchException("group : " + cronTriggerMeta.getGroup() + " not defined!"); //NOSONAR
+ }
+ //返回
+ return cronTriggerMeta;
+ }
+
+ /**
+ * 描述 : 获得simple触发器元数据
+ *
+ * @param simpleTriggerCode simple触发器代码
+ * @return simple触发器元数据
+ */
+ protected SimpleTriggerMeta getSimpleTriggerMeta(String simpleTriggerCode) {
+ //判空
+ if (MapUtils.isEmpty(schedulerProperties.getSimpleTrigger())) {
+ throw new SchException("simpleTrigger not defined!");
+ }
+ //获得触发器定义
+ SimpleTriggerMeta simpleTriggerMeta =
+ schedulerProperties.getSimpleTrigger().get(simpleTriggerCode);
+ //判断触发器是否存在
+ if (simpleTriggerMeta == null) {
+ throw new SchException("simpleTriggerCode : " + simpleTriggerCode + " not defined!"); //NOSONAR
+ }
+ //获得组别定义
+ String groupName = schedulerProperties.getTriggerGroup().get(simpleTriggerMeta.getGroup());
+ //判断组别是否存在
+ if (StringUtils.isBlank(groupName)) {
+ throw new SchException("group : " + simpleTriggerMeta.getGroup() + " not defined!"); //NOSONAR
+ }
+ //返回
+ return simpleTriggerMeta;
+ }
+
+}
diff --git a/udf-starter-scheduler/src/main/java/org/itkk/udf/scheduler/web/IJobController.java b/udf-stater/udf-starter-scheduler/src/main/java/org/itkk/udf/scheduler/web/IJobController.java
similarity index 98%
rename from udf-starter-scheduler/src/main/java/org/itkk/udf/scheduler/web/IJobController.java
rename to udf-stater/udf-starter-scheduler/src/main/java/org/itkk/udf/scheduler/web/IJobController.java
index c5a8c80..d3eff15 100644
--- a/udf-starter-scheduler/src/main/java/org/itkk/udf/scheduler/web/IJobController.java
+++ b/udf-stater/udf-starter-scheduler/src/main/java/org/itkk/udf/scheduler/web/IJobController.java
@@ -1,94 +1,94 @@
-/**
- * IJobController.java
- * Created at 2017-06-11
- * Created by Administrator
- * Copyright (C) 2016 itkk.org, All rights reserved.
- */
-package org.itkk.udf.scheduler.web;
-
-import io.swagger.annotations.Api;
-import io.swagger.annotations.ApiImplicitParam;
-import io.swagger.annotations.ApiImplicitParams;
-import io.swagger.annotations.ApiOperation;
-import org.itkk.udf.core.RestResponse;
-import org.quartz.SchedulerException;
-import org.springframework.web.bind.annotation.PathVariable;
-import org.springframework.web.bind.annotation.RequestBody;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RequestMethod;
-
-import java.util.Map;
-
-/**
- * 描述 : IJobController
- *
- * @author Administrator
- */
-@Api(value = "作业服务", consumes = "application/json", produces = "application/json", protocols = "http")
-@RequestMapping(value = "/service/scheduler/job")
-public interface IJobController {
-
- /**
- * 描述 : 保存作业
- *
- * @param jobCode 作业代码
- * @return 操作结果
- * @throws ClassNotFoundException ClassNotFoundException
- * @throws SchedulerException SchedulerException
- */
- @ApiOperation(value = "SCHEDULER_JOB_1", notes = "保存作业")
- @ApiImplicitParams({ @ApiImplicitParam(paramType = "header", name = "rmsApplicationName", value = "rms应用名称", required = true, dataType = "string"),
- @ApiImplicitParam(paramType = "header", name = "rmsSign", value = "rms认证秘钥", required = true, dataType = "string"),
- @ApiImplicitParam(paramType = "header", name = "rmsServiceCode", value = "rms接口编号", required = true, dataType = "string"),
- @ApiImplicitParam(paramType = "path", name = "jobCode", value = "作业代码", required = true, dataType = "string") })
- @RequestMapping(value = "{jobCode}", method = RequestMethod.POST)
- RestResponse save(@PathVariable String jobCode) throws ClassNotFoundException, SchedulerException; //NOSONAR
-
- /**
- * 描述 : 保存作业(覆盖)
- *
- * @param jobCode 作业代码
- * @return 操作结果
- * @throws ClassNotFoundException ClassNotFoundException
- * @throws SchedulerException SchedulerException
- */
- @ApiOperation(value = "SCHEDULER_JOB_2", notes = "保存作业(覆盖)")
- @ApiImplicitParams({ @ApiImplicitParam(paramType = "header", name = "rmsApplicationName", value = "rms应用名称", required = true, dataType = "string"),
- @ApiImplicitParam(paramType = "header", name = "rmsSign", value = "rms认证秘钥", required = true, dataType = "string"),
- @ApiImplicitParam(paramType = "header", name = "rmsServiceCode", value = "rms接口编号", required = true, dataType = "string"),
- @ApiImplicitParam(paramType = "path", name = "jobCode", value = "作业代码", required = true, dataType = "string") })
- @RequestMapping(value = "{jobCode}/cover", method = RequestMethod.PUT)
- RestResponse saveCover(@PathVariable String jobCode) throws ClassNotFoundException, SchedulerException; //NOSONAR
-
- /**
- * 描述 : 移除作业
- *
- * @param jobCode 作业代码
- * @return 操作结果
- * @throws SchedulerException SchedulerException
- */
- @ApiOperation(value = "SCHEDULER_JOB_3", notes = "移除作业")
- @ApiImplicitParams({ @ApiImplicitParam(paramType = "header", name = "rmsApplicationName", value = "rms应用名称", required = true, dataType = "string"),
- @ApiImplicitParam(paramType = "header", name = "rmsSign", value = "rms认证秘钥", required = true, dataType = "string"),
- @ApiImplicitParam(paramType = "header", name = "rmsServiceCode", value = "rms接口编号", required = true, dataType = "string"),
- @ApiImplicitParam(paramType = "path", name = "jobCode", value = "作业代码", required = true, dataType = "string") })
- @RequestMapping(value = "{jobCode}", method = RequestMethod.DELETE)
- RestResponse remove(@PathVariable String jobCode) throws SchedulerException; //NOSONAR
-
- /**
- * 描述 : 触发作业
- *
- * @param jobCode 作业代码
- * @param jobDataMap jobDataMap
- * @return 操作结果
- * @throws SchedulerException SchedulerException
- */
- @ApiOperation(value = "SCHEDULER_JOB_4", notes = "触发作业")
- @ApiImplicitParams({ @ApiImplicitParam(paramType = "header", name = "rmsApplicationName", value = "rms应用名称", required = true, dataType = "string"),
- @ApiImplicitParam(paramType = "header", name = "rmsSign", value = "rms认证秘钥", required = true, dataType = "string"),
- @ApiImplicitParam(paramType = "header", name = "rmsServiceCode", value = "rms接口编号", required = true, dataType = "string"),
- @ApiImplicitParam(paramType = "path", name = "jobCode", value = "作业代码", required = true, dataType = "string") })
- @RequestMapping(value = "trigger/{jobCode}", method = RequestMethod.POST)
- RestResponse trigger(@PathVariable String jobCode, @RequestBody Map jobDataMap) throws SchedulerException;
-
-}
+/**
+ * IJobController.java
+ * Created at 2017-06-11
+ * Created by Administrator
+ * Copyright (C) 2016 itkk.org, All rights reserved.
+ */
+package org.itkk.udf.scheduler.web;
+
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiImplicitParam;
+import io.swagger.annotations.ApiImplicitParams;
+import io.swagger.annotations.ApiOperation;
+import org.itkk.udf.core.RestResponse;
+import org.quartz.SchedulerException;
+import org.springframework.web.bind.annotation.PathVariable;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestMethod;
+
+import java.util.Map;
+
+/**
+ * 描述 : IJobController
+ *
+ * @author Administrator
+ */
+@Api(value = "作业服务", consumes = "application/json", produces = "application/json", protocols = "http")
+@RequestMapping(value = "/service/scheduler/job")
+public interface IJobController {
+
+ /**
+ * 描述 : 保存作业
+ *
+ * @param jobCode 作业代码
+ * @return 操作结果
+ * @throws ClassNotFoundException ClassNotFoundException
+ * @throws SchedulerException SchedulerException
+ */
+ @ApiOperation(value = "SCHEDULER_JOB_1", notes = "保存作业")
+ @ApiImplicitParams({ @ApiImplicitParam(paramType = "header", name = "rmsApplicationName", value = "rms应用名称", required = true, dataType = "string"),
+ @ApiImplicitParam(paramType = "header", name = "rmsSign", value = "rms认证秘钥", required = true, dataType = "string"),
+ @ApiImplicitParam(paramType = "header", name = "rmsServiceCode", value = "rms接口编号", required = true, dataType = "string"),
+ @ApiImplicitParam(paramType = "path", name = "jobCode", value = "作业代码", required = true, dataType = "string") })
+ @RequestMapping(value = "{jobCode}", method = RequestMethod.POST)
+ RestResponse save(@PathVariable String jobCode) throws ClassNotFoundException, SchedulerException; //NOSONAR
+
+ /**
+ * 描述 : 保存作业(覆盖)
+ *
+ * @param jobCode 作业代码
+ * @return 操作结果
+ * @throws ClassNotFoundException ClassNotFoundException
+ * @throws SchedulerException SchedulerException
+ */
+ @ApiOperation(value = "SCHEDULER_JOB_2", notes = "保存作业(覆盖)")
+ @ApiImplicitParams({ @ApiImplicitParam(paramType = "header", name = "rmsApplicationName", value = "rms应用名称", required = true, dataType = "string"),
+ @ApiImplicitParam(paramType = "header", name = "rmsSign", value = "rms认证秘钥", required = true, dataType = "string"),
+ @ApiImplicitParam(paramType = "header", name = "rmsServiceCode", value = "rms接口编号", required = true, dataType = "string"),
+ @ApiImplicitParam(paramType = "path", name = "jobCode", value = "作业代码", required = true, dataType = "string") })
+ @RequestMapping(value = "{jobCode}/cover", method = RequestMethod.PUT)
+ RestResponse saveCover(@PathVariable String jobCode) throws ClassNotFoundException, SchedulerException; //NOSONAR
+
+ /**
+ * 描述 : 移除作业
+ *
+ * @param jobCode 作业代码
+ * @return 操作结果
+ * @throws SchedulerException SchedulerException
+ */
+ @ApiOperation(value = "SCHEDULER_JOB_3", notes = "移除作业")
+ @ApiImplicitParams({ @ApiImplicitParam(paramType = "header", name = "rmsApplicationName", value = "rms应用名称", required = true, dataType = "string"),
+ @ApiImplicitParam(paramType = "header", name = "rmsSign", value = "rms认证秘钥", required = true, dataType = "string"),
+ @ApiImplicitParam(paramType = "header", name = "rmsServiceCode", value = "rms接口编号", required = true, dataType = "string"),
+ @ApiImplicitParam(paramType = "path", name = "jobCode", value = "作业代码", required = true, dataType = "string") })
+ @RequestMapping(value = "{jobCode}", method = RequestMethod.DELETE)
+ RestResponse remove(@PathVariable String jobCode) throws SchedulerException; //NOSONAR
+
+ /**
+ * 描述 : 触发作业
+ *
+ * @param jobCode 作业代码
+ * @param jobDataMap jobDataMap
+ * @return 操作结果
+ * @throws SchedulerException SchedulerException
+ */
+ @ApiOperation(value = "SCHEDULER_JOB_4", notes = "触发作业")
+ @ApiImplicitParams({ @ApiImplicitParam(paramType = "header", name = "rmsApplicationName", value = "rms应用名称", required = true, dataType = "string"),
+ @ApiImplicitParam(paramType = "header", name = "rmsSign", value = "rms认证秘钥", required = true, dataType = "string"),
+ @ApiImplicitParam(paramType = "header", name = "rmsServiceCode", value = "rms接口编号", required = true, dataType = "string"),
+ @ApiImplicitParam(paramType = "path", name = "jobCode", value = "作业代码", required = true, dataType = "string") })
+ @RequestMapping(value = "trigger/{jobCode}", method = RequestMethod.POST)
+ RestResponse trigger(@PathVariable String jobCode, @RequestBody Map jobDataMap) throws SchedulerException;
+
+}
diff --git a/udf-starter-scheduler/src/main/java/org/itkk/udf/scheduler/web/ISchClientCallbackController.java b/udf-stater/udf-starter-scheduler/src/main/java/org/itkk/udf/scheduler/web/ISchClientCallbackController.java
similarity index 97%
rename from udf-starter-scheduler/src/main/java/org/itkk/udf/scheduler/web/ISchClientCallbackController.java
rename to udf-stater/udf-starter-scheduler/src/main/java/org/itkk/udf/scheduler/web/ISchClientCallbackController.java
index 92afa36..46ef4ab 100644
--- a/udf-starter-scheduler/src/main/java/org/itkk/udf/scheduler/web/ISchClientCallbackController.java
+++ b/udf-stater/udf-starter-scheduler/src/main/java/org/itkk/udf/scheduler/web/ISchClientCallbackController.java
@@ -1,46 +1,46 @@
-/**
- * ISchClientCallbackController.java
- * Created at 2017-06-11
- * Created by Administrator
- * Copyright (C) 2016 itkk.org, All rights reserved.
- */
-package org.itkk.udf.scheduler.web;
-
-import io.swagger.annotations.Api;
-import io.swagger.annotations.ApiImplicitParam;
-import io.swagger.annotations.ApiImplicitParams;
-import io.swagger.annotations.ApiOperation;
-import org.itkk.udf.core.RestResponse;
-import org.itkk.udf.scheduler.client.domain.RmsJobResult;
-import org.springframework.web.bind.annotation.RequestBody;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RequestMethod;
-
-/**
- * 描述 : ISchClientCallbackController
- *
- * @author Administrator
- */
-@Api(value = "调度客户端回调服务", consumes = "application/json", produces = "application/json",
- protocols = "http")
-@RequestMapping(value = "/service/scheduler/client/callback")
-public interface ISchClientCallbackController { //NOSONAR
-
- /**
- * 描述 : 客户端回调
- *
- * @param result 执行结果
- * @return 结果
- */
- @ApiOperation(value = "SCH_CLIENT_CALLBACK_1", notes = "客户端回调")
- @ApiImplicitParams({
- @ApiImplicitParam(paramType = "header", name = "rmsApplicationName", value = "rms应用名称",
- required = true, dataType = "string"),
- @ApiImplicitParam(paramType = "header", name = "rmsSign", value = "rms认证秘钥", required = true,
- dataType = "string"),
- @ApiImplicitParam(paramType = "header", name = "rmsServiceCode", value = "rms接口编号",
- required = true, dataType = "string")})
- @RequestMapping(method = RequestMethod.POST)
- RestResponse callback(@RequestBody RmsJobResult result);
-
-}
+/**
+ * ISchClientCallbackController.java
+ * Created at 2017-06-11
+ * Created by Administrator
+ * Copyright (C) 2016 itkk.org, All rights reserved.
+ */
+package org.itkk.udf.scheduler.web;
+
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiImplicitParam;
+import io.swagger.annotations.ApiImplicitParams;
+import io.swagger.annotations.ApiOperation;
+import org.itkk.udf.core.RestResponse;
+import org.itkk.udf.scheduler.client.domain.RmsJobResult;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestMethod;
+
+/**
+ * 描述 : ISchClientCallbackController
+ *
+ * @author Administrator
+ */
+@Api(value = "调度客户端回调服务", consumes = "application/json", produces = "application/json",
+ protocols = "http")
+@RequestMapping(value = "/service/scheduler/client/callback")
+public interface ISchClientCallbackController { //NOSONAR
+
+ /**
+ * 描述 : 客户端回调
+ *
+ * @param result 执行结果
+ * @return 结果
+ */
+ @ApiOperation(value = "SCH_CLIENT_CALLBACK_1", notes = "客户端回调")
+ @ApiImplicitParams({
+ @ApiImplicitParam(paramType = "header", name = "rmsApplicationName", value = "rms应用名称",
+ required = true, dataType = "string"),
+ @ApiImplicitParam(paramType = "header", name = "rmsSign", value = "rms认证秘钥", required = true,
+ dataType = "string"),
+ @ApiImplicitParam(paramType = "header", name = "rmsServiceCode", value = "rms接口编号",
+ required = true, dataType = "string")})
+ @RequestMapping(method = RequestMethod.POST)
+ RestResponse callback(@RequestBody RmsJobResult result);
+
+}
diff --git a/udf-starter-scheduler/src/main/java/org/itkk/udf/scheduler/web/ISchedulerController.java b/udf-stater/udf-starter-scheduler/src/main/java/org/itkk/udf/scheduler/web/ISchedulerController.java
similarity index 97%
rename from udf-starter-scheduler/src/main/java/org/itkk/udf/scheduler/web/ISchedulerController.java
rename to udf-stater/udf-starter-scheduler/src/main/java/org/itkk/udf/scheduler/web/ISchedulerController.java
index 99f4220..d702b49 100644
--- a/udf-starter-scheduler/src/main/java/org/itkk/udf/scheduler/web/ISchedulerController.java
+++ b/udf-stater/udf-starter-scheduler/src/main/java/org/itkk/udf/scheduler/web/ISchedulerController.java
@@ -1,45 +1,45 @@
-/**
- * IJobController.java
- * Created at 2017-06-11
- * Created by Administrator
- * Copyright (C) 2016 itkk.org, All rights reserved.
- */
-package org.itkk.udf.scheduler.web;
-
-import io.swagger.annotations.Api;
-import io.swagger.annotations.ApiImplicitParam;
-import io.swagger.annotations.ApiImplicitParams;
-import io.swagger.annotations.ApiOperation;
-import org.itkk.udf.core.RestResponse;
-import org.quartz.SchedulerException;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RequestMethod;
-
-/**
- * 描述 : IJobController
- *
- * @author Administrator
- */
-@Api(value = "调度服务", consumes = "application/json", produces = "application/json",
- protocols = "http")
-@RequestMapping(value = "/service/scheduler")
-public interface ISchedulerController { //NOSONAR
-
- /**
- * 描述 : 清理数据
- *
- * @return 操作结果
- * @throws SchedulerException SchedulerException
- */
- @ApiOperation(value = "SCHEDULER_1", notes = "清理数据")
- @ApiImplicitParams({
- @ApiImplicitParam(paramType = "header", name = "rmsApplicationName", value = "rms应用名称",
- required = true, dataType = "string"),
- @ApiImplicitParam(paramType = "header", name = "rmsSign", value = "rms认证秘钥", required = true,
- dataType = "string"),
- @ApiImplicitParam(paramType = "header", name = "rmsServiceCode", value = "rms接口编号",
- required = true, dataType = "string")})
- @RequestMapping(value = "clear", method = RequestMethod.DELETE)
- RestResponse clear() throws SchedulerException;
-
-}
+/**
+ * IJobController.java
+ * Created at 2017-06-11
+ * Created by Administrator
+ * Copyright (C) 2016 itkk.org, All rights reserved.
+ */
+package org.itkk.udf.scheduler.web;
+
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiImplicitParam;
+import io.swagger.annotations.ApiImplicitParams;
+import io.swagger.annotations.ApiOperation;
+import org.itkk.udf.core.RestResponse;
+import org.quartz.SchedulerException;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestMethod;
+
+/**
+ * 描述 : IJobController
+ *
+ * @author Administrator
+ */
+@Api(value = "调度服务", consumes = "application/json", produces = "application/json",
+ protocols = "http")
+@RequestMapping(value = "/service/scheduler")
+public interface ISchedulerController { //NOSONAR
+
+ /**
+ * 描述 : 清理数据
+ *
+ * @return 操作结果
+ * @throws SchedulerException SchedulerException
+ */
+ @ApiOperation(value = "SCHEDULER_1", notes = "清理数据")
+ @ApiImplicitParams({
+ @ApiImplicitParam(paramType = "header", name = "rmsApplicationName", value = "rms应用名称",
+ required = true, dataType = "string"),
+ @ApiImplicitParam(paramType = "header", name = "rmsSign", value = "rms认证秘钥", required = true,
+ dataType = "string"),
+ @ApiImplicitParam(paramType = "header", name = "rmsServiceCode", value = "rms接口编号",
+ required = true, dataType = "string")})
+ @RequestMapping(value = "clear", method = RequestMethod.DELETE)
+ RestResponse clear() throws SchedulerException;
+
+}
diff --git a/udf-starter-scheduler/src/main/java/org/itkk/udf/scheduler/web/ITriggerController.java b/udf-stater/udf-starter-scheduler/src/main/java/org/itkk/udf/scheduler/web/ITriggerController.java
similarity index 98%
rename from udf-starter-scheduler/src/main/java/org/itkk/udf/scheduler/web/ITriggerController.java
rename to udf-stater/udf-starter-scheduler/src/main/java/org/itkk/udf/scheduler/web/ITriggerController.java
index 483dbc1..31b4102 100644
--- a/udf-starter-scheduler/src/main/java/org/itkk/udf/scheduler/web/ITriggerController.java
+++ b/udf-stater/udf-starter-scheduler/src/main/java/org/itkk/udf/scheduler/web/ITriggerController.java
@@ -1,113 +1,113 @@
-/**
- * ITriggerController.java
- * Created at 2017-06-11
- * Created by Administrator
- * Copyright (C) 2016 itkk.org, All rights reserved.
- */
-package org.itkk.udf.scheduler.web;
-
-import io.swagger.annotations.Api;
-import io.swagger.annotations.ApiImplicitParam;
-import io.swagger.annotations.ApiImplicitParams;
-import io.swagger.annotations.ApiOperation;
-import org.itkk.udf.core.RestResponse;
-import org.quartz.SchedulerException;
-import org.springframework.web.bind.annotation.PathVariable;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RequestMethod;
-
-/**
- * 描述 : ITriggerController
- *
- * @author Administrator
- */
-@Api(value = "触发器服务", consumes = "application/json", produces = "application/json", protocols = "http")
-@RequestMapping(value = "/service/scheduler/trigger")
-public interface ITriggerController {
-
- /**
- * 描述 : 保存简单触发器
- *
- * @param triggerCode 触发器代码
- * @return 操作结果
- * @throws SchedulerException SchedulerException
- */
- @ApiOperation(value = "SCHEDULER_TRIGGER_1", notes = "保存简单触发器")
- @ApiImplicitParams({
- @ApiImplicitParam(paramType = "header", name = "rmsApplicationName", value = "rms应用名称", required = true, dataType = "string"),
- @ApiImplicitParam(paramType = "header", name = "rmsSign", value = "rms认证秘钥", required = true, dataType = "string"),
- @ApiImplicitParam(paramType = "header", name = "rmsServiceCode", value = "rms接口编号", required = true, dataType = "string"),
- @ApiImplicitParam(paramType = "path", name = "triggerCode", value = "触发器代码", required = true, dataType = "string")
- })
- @RequestMapping(value = "simple/{triggerCode}", method = RequestMethod.POST)
- RestResponse saveSimple(@PathVariable String triggerCode) throws SchedulerException; //NOSONAR
-
- /**
- * 描述 : 保存简单触发器(覆盖)
- *
- * @param triggerCode 触发器代码
- * @return 操作结果
- * @throws SchedulerException SchedulerException
- */
- @ApiOperation(value = "SCHEDULER_TRIGGER_2", notes = "保存简单触发器(覆盖)")
- @ApiImplicitParams({
- @ApiImplicitParam(paramType = "header", name = "rmsApplicationName", value = "rms应用名称", required = true, dataType = "string"),
- @ApiImplicitParam(paramType = "header", name = "rmsSign", value = "rms认证秘钥", required = true, dataType = "string"),
- @ApiImplicitParam(paramType = "header", name = "rmsServiceCode", value = "rms接口编号", required = true, dataType = "string"),
- @ApiImplicitParam(paramType = "path", name = "triggerCode", value = "触发器代码", required = true, dataType = "string")
- })
- @RequestMapping(value = "simple/{triggerCode}/cover", method = RequestMethod.PUT)
- RestResponse saveSimpleCover(@PathVariable String triggerCode) throws SchedulerException; //NOSONAR
-
- /**
- * 描述 : 保存CRON触发器
- *
- * @param triggerCode 触发器代码
- * @return 操作结果
- * @throws SchedulerException SchedulerException
- */
- @ApiOperation(value = "SCHEDULER_TRIGGER_3", notes = "保存CRON触发器")
- @ApiImplicitParams({
- @ApiImplicitParam(paramType = "header", name = "rmsApplicationName", value = "rms应用名称", required = true, dataType = "string"),
- @ApiImplicitParam(paramType = "header", name = "rmsSign", value = "rms认证秘钥", required = true, dataType = "string"),
- @ApiImplicitParam(paramType = "header", name = "rmsServiceCode", value = "rms接口编号", required = true, dataType = "string"),
- @ApiImplicitParam(paramType = "path", name = "triggerCode", value = "触发器代码", required = true, dataType = "string")
- })
- @RequestMapping(value = "cron/{triggerCode}", method = RequestMethod.POST)
- RestResponse saveCron(@PathVariable String triggerCode) throws SchedulerException; //NOSONAR
-
- /**
- * 描述 : 保存CRON触发器(覆盖)
- *
- * @param triggerCode 触发器代码
- * @return 操作结果
- * @throws SchedulerException SchedulerException
- */
- @ApiOperation(value = "SCHEDULER_TRIGGER_4", notes = "保存CRON触发器(覆盖)")
- @ApiImplicitParams({
- @ApiImplicitParam(paramType = "header", name = "rmsApplicationName", value = "rms应用名称", required = true, dataType = "string"),
- @ApiImplicitParam(paramType = "header", name = "rmsSign", value = "rms认证秘钥", required = true, dataType = "string"),
- @ApiImplicitParam(paramType = "header", name = "rmsServiceCode", value = "rms接口编号", required = true, dataType = "string"),
- @ApiImplicitParam(paramType = "path", name = "triggerCode", value = "触发器代码", required = true, dataType = "string")
- })
- @RequestMapping(value = "cron/{triggerCode}/cover", method = RequestMethod.PUT)
- RestResponse saveCronCover(@PathVariable String triggerCode) throws SchedulerException; //NOSONAR
-
- /**
- * 描述 : 删除触发器
- *
- * @param triggerCode 触发器代码
- * @return 操作结果
- * @throws SchedulerException SchedulerException
- */
- @ApiOperation(value = "SCHEDULER_TRIGGER_5", notes = "删除触发器")
- @ApiImplicitParams({
- @ApiImplicitParam(paramType = "header", name = "rmsApplicationName", value = "rms应用名称", required = true, dataType = "string"),
- @ApiImplicitParam(paramType = "header", name = "rmsSign", value = "rms认证秘钥", required = true, dataType = "string"),
- @ApiImplicitParam(paramType = "header", name = "rmsServiceCode", value = "rms接口编号", required = true, dataType = "string"),
- @ApiImplicitParam(paramType = "path", name = "triggerCode", value = "触发器代码", required = true, dataType = "string")
- })
- @RequestMapping(value = "{triggerCode}", method = RequestMethod.DELETE)
- RestResponse remove(@PathVariable String triggerCode) throws SchedulerException; //NOSONAR
-
-}
+/**
+ * ITriggerController.java
+ * Created at 2017-06-11
+ * Created by Administrator
+ * Copyright (C) 2016 itkk.org, All rights reserved.
+ */
+package org.itkk.udf.scheduler.web;
+
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiImplicitParam;
+import io.swagger.annotations.ApiImplicitParams;
+import io.swagger.annotations.ApiOperation;
+import org.itkk.udf.core.RestResponse;
+import org.quartz.SchedulerException;
+import org.springframework.web.bind.annotation.PathVariable;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestMethod;
+
+/**
+ * 描述 : ITriggerController
+ *
+ * @author Administrator
+ */
+@Api(value = "触发器服务", consumes = "application/json", produces = "application/json", protocols = "http")
+@RequestMapping(value = "/service/scheduler/trigger")
+public interface ITriggerController {
+
+ /**
+ * 描述 : 保存简单触发器
+ *
+ * @param triggerCode 触发器代码
+ * @return 操作结果
+ * @throws SchedulerException SchedulerException
+ */
+ @ApiOperation(value = "SCHEDULER_TRIGGER_1", notes = "保存简单触发器")
+ @ApiImplicitParams({
+ @ApiImplicitParam(paramType = "header", name = "rmsApplicationName", value = "rms应用名称", required = true, dataType = "string"),
+ @ApiImplicitParam(paramType = "header", name = "rmsSign", value = "rms认证秘钥", required = true, dataType = "string"),
+ @ApiImplicitParam(paramType = "header", name = "rmsServiceCode", value = "rms接口编号", required = true, dataType = "string"),
+ @ApiImplicitParam(paramType = "path", name = "triggerCode", value = "触发器代码", required = true, dataType = "string")
+ })
+ @RequestMapping(value = "simple/{triggerCode}", method = RequestMethod.POST)
+ RestResponse saveSimple(@PathVariable String triggerCode) throws SchedulerException; //NOSONAR
+
+ /**
+ * 描述 : 保存简单触发器(覆盖)
+ *
+ * @param triggerCode 触发器代码
+ * @return 操作结果
+ * @throws SchedulerException SchedulerException
+ */
+ @ApiOperation(value = "SCHEDULER_TRIGGER_2", notes = "保存简单触发器(覆盖)")
+ @ApiImplicitParams({
+ @ApiImplicitParam(paramType = "header", name = "rmsApplicationName", value = "rms应用名称", required = true, dataType = "string"),
+ @ApiImplicitParam(paramType = "header", name = "rmsSign", value = "rms认证秘钥", required = true, dataType = "string"),
+ @ApiImplicitParam(paramType = "header", name = "rmsServiceCode", value = "rms接口编号", required = true, dataType = "string"),
+ @ApiImplicitParam(paramType = "path", name = "triggerCode", value = "触发器代码", required = true, dataType = "string")
+ })
+ @RequestMapping(value = "simple/{triggerCode}/cover", method = RequestMethod.PUT)
+ RestResponse