From efdb99f8cecc4afb592afad79c761081d5d5cf22 Mon Sep 17 00:00:00 2001
From: lee <4766465@qq.com>
Date: Wed, 18 Dec 2024 13:27:00 +0800
Subject: [PATCH] init

---
 xxl-job/xxl-job-core/src/main/java/com/xxl/job/core/context/XxlJobHelper.java |  255 +++++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 255 insertions(+), 0 deletions(-)

diff --git a/xxl-job/xxl-job-core/src/main/java/com/xxl/job/core/context/XxlJobHelper.java b/xxl-job/xxl-job-core/src/main/java/com/xxl/job/core/context/XxlJobHelper.java
new file mode 100644
index 0000000..eb20c18
--- /dev/null
+++ b/xxl-job/xxl-job-core/src/main/java/com/xxl/job/core/context/XxlJobHelper.java
@@ -0,0 +1,255 @@
+package com.xxl.job.core.context;
+
+import com.xxl.job.core.log.XxlJobFileAppender;
+import com.xxl.job.core.util.DateUtil;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.slf4j.helpers.FormattingTuple;
+import org.slf4j.helpers.MessageFormatter;
+
+import java.io.PrintWriter;
+import java.io.StringWriter;
+import java.util.Date;
+
+/**
+ * helper for xxl-job
+ *
+ * @author xuxueli 2020-11-05
+ */
+public class XxlJobHelper {
+
+    // ---------------------- base info ----------------------
+
+    /**
+     * current JobId
+     *
+     * @return
+     */
+    public static long getJobId() {
+        XxlJobContext xxlJobContext = XxlJobContext.getXxlJobContext();
+        if (xxlJobContext == null) {
+            return -1;
+        }
+
+        return xxlJobContext.getJobId();
+    }
+
+    /**
+     * current JobParam
+     *
+     * @return
+     */
+    public static String getJobParam() {
+        XxlJobContext xxlJobContext = XxlJobContext.getXxlJobContext();
+        if (xxlJobContext == null) {
+            return null;
+        }
+
+        return xxlJobContext.getJobParam();
+    }
+
+    // ---------------------- for log ----------------------
+
+    /**
+     * current JobLogFileName
+     *
+     * @return
+     */
+    public static String getJobLogFileName() {
+        XxlJobContext xxlJobContext = XxlJobContext.getXxlJobContext();
+        if (xxlJobContext == null) {
+            return null;
+        }
+
+        return xxlJobContext.getJobLogFileName();
+    }
+
+    // ---------------------- for shard ----------------------
+
+    /**
+     * current ShardIndex
+     *
+     * @return
+     */
+    public static int getShardIndex() {
+        XxlJobContext xxlJobContext = XxlJobContext.getXxlJobContext();
+        if (xxlJobContext == null) {
+            return -1;
+        }
+
+        return xxlJobContext.getShardIndex();
+    }
+
+    /**
+     * current ShardTotal
+     *
+     * @return
+     */
+    public static int getShardTotal() {
+        XxlJobContext xxlJobContext = XxlJobContext.getXxlJobContext();
+        if (xxlJobContext == null) {
+            return -1;
+        }
+
+        return xxlJobContext.getShardTotal();
+    }
+
+    // ---------------------- tool for log ----------------------
+
+    private static Logger logger = LoggerFactory.getLogger("xxl-job logger");
+
+    /**
+     * append log with pattern
+     *
+     * @param appendLogPattern  like "aaa {} bbb {} ccc"
+     * @param appendLogArguments    like "111, true"
+     */
+    public static boolean log(String appendLogPattern, Object ... appendLogArguments) {
+
+        FormattingTuple ft = MessageFormatter.arrayFormat(appendLogPattern, appendLogArguments);
+        String appendLog = ft.getMessage();
+
+        /*appendLog = appendLogPattern;
+        if (appendLogArguments!=null && appendLogArguments.length>0) {
+            appendLog = MessageFormat.format(appendLogPattern, appendLogArguments);
+        }*/
+
+        StackTraceElement callInfo = new Throwable().getStackTrace()[1];
+        return logDetail(callInfo, appendLog);
+    }
+
+    /**
+     * append exception stack
+     *
+     * @param e
+     */
+    public static boolean log(Throwable e) {
+
+        StringWriter stringWriter = new StringWriter();
+        e.printStackTrace(new PrintWriter(stringWriter));
+        String appendLog = stringWriter.toString();
+
+        StackTraceElement callInfo = new Throwable().getStackTrace()[1];
+        return logDetail(callInfo, appendLog);
+    }
+
+    /**
+     * append log
+     *
+     * @param callInfo
+     * @param appendLog
+     */
+    private static boolean logDetail(StackTraceElement callInfo, String appendLog) {
+        XxlJobContext xxlJobContext = XxlJobContext.getXxlJobContext();
+        if (xxlJobContext == null) {
+            return false;
+        }
+
+        /*// "yyyy-MM-dd HH:mm:ss [ClassName]-[MethodName]-[LineNumber]-[ThreadName] log";
+        StackTraceElement[] stackTraceElements = new Throwable().getStackTrace();
+        StackTraceElement callInfo = stackTraceElements[1];*/
+
+        StringBuffer stringBuffer = new StringBuffer();
+        stringBuffer.append(DateUtil.formatDateTime(new Date())).append(" ")
+                .append("["+ callInfo.getClassName() + "#" + callInfo.getMethodName() +"]").append("-")
+                .append("["+ callInfo.getLineNumber() +"]").append("-")
+                .append("["+ Thread.currentThread().getName() +"]").append(" ")
+                .append(appendLog!=null?appendLog:"");
+        String formatAppendLog = stringBuffer.toString();
+
+        // appendlog
+        String logFileName = xxlJobContext.getJobLogFileName();
+
+        if (logFileName!=null && logFileName.trim().length()>0) {
+            XxlJobFileAppender.appendLog(logFileName, formatAppendLog);
+            return true;
+        } else {
+            logger.info(">>>>>>>>>>> {}", formatAppendLog);
+            return false;
+        }
+    }
+
+    // ---------------------- tool for handleResult ----------------------
+
+    /**
+     * handle success
+     *
+     * @return
+     */
+    public static boolean handleSuccess(){
+        return handleResult(XxlJobContext.HANDLE_CODE_SUCCESS, null);
+    }
+
+    /**
+     * handle success with log msg
+     *
+     * @param handleMsg
+     * @return
+     */
+    public static boolean handleSuccess(String handleMsg) {
+        return handleResult(XxlJobContext.HANDLE_CODE_SUCCESS, handleMsg);
+    }
+
+    /**
+     * handle fail
+     *
+     * @return
+     */
+    public static boolean handleFail(){
+        return handleResult(XxlJobContext.HANDLE_CODE_FAIL, null);
+    }
+
+    /**
+     * handle fail with log msg
+     *
+     * @param handleMsg
+     * @return
+     */
+    public static boolean handleFail(String handleMsg) {
+        return handleResult(XxlJobContext.HANDLE_CODE_FAIL, handleMsg);
+    }
+
+    /**
+     * handle timeout
+     *
+     * @return
+     */
+    public static boolean handleTimeout(){
+        return handleResult(XxlJobContext.HANDLE_CODE_TIMEOUT, null);
+    }
+
+    /**
+     * handle timeout with log msg
+     *
+     * @param handleMsg
+     * @return
+     */
+    public static boolean handleTimeout(String handleMsg){
+        return handleResult(XxlJobContext.HANDLE_CODE_TIMEOUT, handleMsg);
+    }
+
+    /**
+     * @param handleCode
+     *
+     *      200 : success
+     *      500 : fail
+     *      502 : timeout
+     *
+     * @param handleMsg
+     * @return
+     */
+    public static boolean handleResult(int handleCode, String handleMsg) {
+        XxlJobContext xxlJobContext = XxlJobContext.getXxlJobContext();
+        if (xxlJobContext == null) {
+            return false;
+        }
+
+        xxlJobContext.setHandleCode(handleCode);
+        if (handleMsg != null) {
+            xxlJobContext.setHandleMsg(handleMsg);
+        }
+        return true;
+    }
+
+
+}

--
Gitblit v1.9.3