sige 1 year ago
parent
commit
68f612080b
  1. 6
      src/src/main/java/com/my/graphiteDigesterBg/diframe/DiTask.java
  2. 25
      src/src/main/java/com/my/graphiteDigesterBg/diframe/DiTaskBase.java

6
src/src/main/java/com/my/graphiteDigesterBg/diframe/DiTask.java

@ -2,7 +2,7 @@ package com.my.graphiteDigesterBg.diframe;
import com.my.graphiteDigesterBg.diframe.model.DiMdbUser; import com.my.graphiteDigesterBg.diframe.model.DiMdbUser;
public interface DiTask { public interface DiTask {
// task status // task status
enum TaskStatus { NEW, RUNNING, FINISHED, CANCELLED, WAITING, READY }
enum TaskStatus { NEW, RUNNING, FINISHED, CANCELLED, WAITING, STEP_WAITING, READY }
// get status // get status
TaskStatus getStatus(); TaskStatus getStatus();
// get UUID // get UUID
@ -19,4 +19,8 @@ public interface DiTask {
void setStatus(TaskStatus status); void setStatus(TaskStatus status);
void setUser(DiMdbUser user); void setUser(DiMdbUser user);
DiMdbUser getUser(); DiMdbUser getUser();
void prepare();
// get current step
DiTaskStep getStep();
} }

25
src/src/main/java/com/my/graphiteDigesterBg/diframe/DiTaskBase.java

@ -1,9 +1,11 @@
package com.my.graphiteDigesterBg.diframe; package com.my.graphiteDigesterBg.diframe;
import com.my.graphiteDigesterBg.diframe.model.DiMdbNotification;
import com.my.graphiteDigesterBg.diframe.model.DiMdbTaskExecution; import com.my.graphiteDigesterBg.diframe.model.DiMdbTaskExecution;
import com.my.graphiteDigesterBg.diframe.model.DiMdbUser; import com.my.graphiteDigesterBg.diframe.model.DiMdbUser;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
import javax.management.Notification;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.HashMap; import java.util.HashMap;
import java.util.List; import java.util.List;
@ -47,6 +49,11 @@ abstract public class DiTaskBase implements DiTask {
} }
@Override @Override
public void prepare() {
// implement this method in subclass
}
@Override
public void init() { public void init() {
Task task = this.getClass().getAnnotation(Task.class); Task task = this.getClass().getAnnotation(Task.class);
this.execution.name = task.name(); this.execution.name = task.name();
@ -66,6 +73,12 @@ abstract public class DiTaskBase implements DiTask {
} }
} }
// set runtime message
protected void setRuntimeMessage( String message ) {
this.execution.message = message;
this.execution.save();
}
// set runtime status // set runtime status
protected void setRuntimeStatus( String status ) { protected void setRuntimeStatus( String status ) {
this.execution.runtimeStatus = status; this.execution.runtimeStatus = status;
@ -114,10 +127,12 @@ abstract public class DiTaskBase implements DiTask {
try { try {
this.execute(); this.execute();
} catch ( Exception e ) { } catch ( Exception e ) {
this.onError(e);
this.execution.status = "ERROR"; this.execution.status = "ERROR";
this.execution.message = e.getMessage(); this.execution.message = e.getMessage();
this.execution.save(); this.execution.save();
this.status = TaskStatus.FINISHED; this.status = TaskStatus.FINISHED;
DiMdbNotification.taskError(this, e.getMessage());
} }
} }
@ -171,4 +186,14 @@ abstract public class DiTaskBase implements DiTask {
public DiTaskAction getAction(String name) { public DiTaskAction getAction(String name) {
return this.actions.get(name); return this.actions.get(name);
} }
// error handler
protected void onError( Exception e ) {
// implement this method in subclass
}
@Override
public DiTaskStep getStep() {
return null;
}
} }
Loading…
Cancel
Save