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

cn.patterncat.job.event.JobEvent Maven / Gradle / Ivy

The newest version!
package cn.patterncat.job.event;

import lombok.Data;
import org.springframework.context.ApplicationEvent;
import java.io.PrintWriter;
import java.io.StringWriter;
import java.util.Map;

/**
 * Created by patterncat on 2017-11-16.
 */
@Data
public class JobEvent extends ApplicationEvent {

    String namespace;

    JobEventType jobEventType = JobEventType.UNKNOWN;

    JobType jobType = JobType.UNKNOWN;

    long future;

    long frequency;

    String worker;

    String queue;

    String jobClassName;

    Object[] jobArgs;

    Map jobVars;

    Map jobUnknownFields;

    Object runner;

    Object result;

    Throwable throwable;

    public JobEvent(Object source) {
        super(source);
    }

    public static Builder builder(Object source){
        return new Builder(source);
    }

    public static class Builder {
        JobEvent jobEvent;

        public Builder(Object source) {
            jobEvent = new JobEvent(source);
        }

        public Builder jobEventType(JobEventType jobEventType){
            jobEvent.setJobEventType(jobEventType);
            return this;
        }

        public Builder worker(String worker){
            jobEvent.setWorker(worker);
            return this;
        }

        public Builder queue(String queue){
            jobEvent.setQueue(queue);
            return this;
        }

        public Builder jobClassName(String jobClassName){
            jobEvent.setJobClassName(jobClassName);
            return this;
        }

        public Builder jobArgs(Object[] jobArgs){
            jobEvent.setJobArgs(jobArgs);
            return this;
        }

        public Builder jobVars(Map jobVars){
            jobEvent.setJobVars(jobVars);
            return this;
        }

        public Builder jobUnknownFields(Map jobUnknownFields){
            jobEvent.setJobUnknownFields(jobUnknownFields);
            return this;
        }

        public Builder jobType(JobType jobType){
            jobEvent.setJobType(jobType);
            return this;
        }

        public Builder future(long future){
            jobEvent.setFuture(future);
            return this;
        }

        public Builder frequency(long frequency){
            jobEvent.setFrequency(frequency);
            return this;
        }

        public Builder runner(Object runner){
            jobEvent.setRunner(runner);
            return this;
        }

        public Builder result(Object result){
            jobEvent.setResult(result);
            return this;
        }

        public Builder throwable(Throwable throwable){
            jobEvent.setThrowable(throwable);
            return this;
        }

        public Builder namespace(String namespace){
            jobEvent.setNamespace(namespace);
            return this;
        }

        public JobEvent build(){
            return jobEvent;
        }
    }

    public String getThrowableString(int limit){
        if(throwable == null){
            return "";
        }
        String trace = getStackTrace(throwable);
        if(trace.length() <= limit){
            return trace;
        }
        return trace.substring(0,limit);
    }

    public String getRunnerString(){
        if(runner == null){
            return "";
        }
        if(runner instanceof Thread){
            return String.format("thread id:%s,name:%s,state:%s",((Thread) runner).getId(),((Thread) runner).getName(),((Thread) runner).getState());
        }
        return runner.getClass().getName();
    }

    public static String getStackTrace(final Throwable throwable) {
        final StringWriter sw = new StringWriter();
        final PrintWriter pw = new PrintWriter(sw, true);
        throwable.printStackTrace(pw);
        return sw.getBuffer().toString();
    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy