1. application.yml修改为application-dev.yml和application-prod.yml

2. 添加更多Exception拦截器
3. 编写状态模式处理task状态的更改
4. 添加StateChangeService,用以处理所有任务状态转换相关的内容
5. 添加StateEnum, ProtocolEnum,TaskTypeEnum用以处理任务和协议相关的所有状态和类型
This commit is contained in:
EnderByEndera
2024-01-11 19:49:07 +08:00
parent 930ba8b5ac
commit 0f712618f2
70 changed files with 1209 additions and 400 deletions

View File

@@ -0,0 +1,18 @@
package com.realtime.protection.configuration.utils;
import java.lang.reflect.Field;
import java.util.HashMap;
import java.util.Map;
public class EntityUtils {
public static Map<String, Object> entityToMap(Object object) throws IllegalAccessException {
Map<String, Object> resultMap = new HashMap<>();
for (Field field : object.getClass().getDeclaredFields()) {
field.setAccessible(true);
Object o = field.get(object);
resultMap.put(field.getName(), o);
}
return resultMap;
}
}

View File

@@ -16,13 +16,15 @@ public class SqlSessionWrapper {
this.sqlSessionFactory = sqlSessionFactory;
}
/** 启动批量SQL会话
* @param mapperClass MyBatis Mapper类型
/**
* 启动批量SQL会话
*
* @param mapperClass MyBatis Mapper类型
* @param batchFunction 批量函数(批量添加、批量删除、批量更新等)
* @param arguments 函数附带的所有参数可以使用Map进行包装
* @param <M> Mapper class
* @param <I> Function input
* @param <O> Function output
* @param arguments 函数附带的所有参数可以使用Map进行包装
* @param <M> Mapper class
* @param <I> Function input
* @param <O> Function output
* @return 被包装的批量函数返回值
*/
public <M, I, O> O startBatchSession(Class<M> mapperClass,

View File

@@ -0,0 +1,30 @@
package com.realtime.protection.configuration.utils.enums;
import java.util.HashMap;
import java.util.Map;
public enum ProtocolEnum {
TCP(6),
UDP(17);
private final Integer number;
private static final Map<Integer, ProtocolEnum> map = new HashMap<>();
static {
for (ProtocolEnum protocol : ProtocolEnum.values()) {
map.put(protocol.getProtocolNumber(), protocol);
}
}
ProtocolEnum(int protocolNumber) {
this.number = protocolNumber;
}
public Integer getProtocolNumber() {
return this.number;
}
public static ProtocolEnum getProtocolEnumByNumber(Integer protocolNum) {
return map.get(protocolNum);
}
}

View File

@@ -0,0 +1,51 @@
package com.realtime.protection.configuration.utils.enums;
import com.realtime.protection.configuration.utils.status.State;
import com.realtime.protection.server.task.status.states.*;
import lombok.Getter;
import java.util.HashMap;
import java.util.Map;
@Getter
public enum StateEnum {
// 仅需修改此处即可将任务状态以及对应的State和Num进行对应
PENDING(0, new PendingState()),
RUNNING(1, new RunningState()),
PAUSED(2, new PauseState()),
STOP(3, new StopState()),
FINISHED(4, new FinishedState()),
FAILED(5, new FailedState());
// ----------------------------------------------
private final State state;
private final Integer stateNum;
private static final Map<Integer, State> numToStateMap = new HashMap<>();
private static final Map<State, Integer> stateToNumMap = new HashMap<>();
private static final Map<State, StateEnum> stateToStateEnumMap = new HashMap<>();
static {
for (StateEnum stateEnum : StateEnum.values()) {
numToStateMap.put(stateEnum.getStateNum(), stateEnum.getState());
stateToNumMap.put(stateEnum.getState(), stateEnum.getStateNum());
stateToStateEnumMap.put(stateEnum.getState(), stateEnum);
}
}
StateEnum(int stateNum, State state) {
this.stateNum = stateNum;
this.state = state;
}
public static State getStateByNum(Integer stateNum) {
return numToStateMap.get(stateNum);
}
public static Integer getNumByState(State state) {
return stateToNumMap.get(state);
}
public static StateEnum getStateEnumByState(State state) {
return stateToStateEnumMap.get(state);
}
}

View File

@@ -0,0 +1,33 @@
package com.realtime.protection.configuration.utils.enums;
import lombok.Getter;
import java.util.HashMap;
import java.util.Map;
@Getter
public enum TaskTypeEnum {
STATIC(1),
DYNAMIC(2),
JUDGED(3);
private final int taskType;
private static final Map<Integer, TaskTypeEnum> map = new HashMap<>();
static {
for (TaskTypeEnum taskType : TaskTypeEnum.values()) {
map.put(taskType.getTaskType(), taskType);
}
}
TaskTypeEnum(int taskType) {
this.taskType = taskType;
}
public static TaskTypeEnum getTaskTypeByNum(Integer taskType) {
if (taskType == null) {
return null;
}
return map.get(taskType);
}
}

View File

@@ -0,0 +1,17 @@
package com.realtime.protection.configuration.utils.status;
import lombok.Getter;
@Getter
public enum AuditStatus {
PENDING(0),
UNAUDITED(1),
AUDITED(2);
private final int auditStatus;
AuditStatus(int auditStatus) {
this.auditStatus = auditStatus;
}
}

View File

@@ -14,9 +14,15 @@ public class AuditStatusValidator {
public Boolean checkValidate(Integer auditStatusNow) {
switch (auditStatusNow) {
case 0, 1 -> {return auditStatusOriginal != 2;}
case 2 -> {return auditStatusOriginal != 1;}
default -> {return false;}
case 0, 1 -> {
return auditStatusOriginal != 2;
}
case 2 -> {
return auditStatusOriginal != 1;
}
default -> {
return false;
}
}
}
}

View File

@@ -0,0 +1,9 @@
package com.realtime.protection.configuration.utils.status;
import com.realtime.protection.configuration.exception.DorisStartException;
import com.realtime.protection.server.command.CommandService;
import com.realtime.protection.server.task.TaskService;
public interface State {
Boolean handle(State newState, CommandService commandService, TaskService taskService, Long taskId) throws DorisStartException;
}

View File

@@ -0,0 +1,20 @@
package com.realtime.protection.configuration.utils.status;
import lombok.Getter;
@Getter
public enum StateNum {
PENDING(0),
RUNNING(1),
PAUSED(2),
STOPPED(3),
FAILED(4),
FINISHED(5);
private final int stateNum;
StateNum(int stateNum) {
this.stateNum = stateNum;
}
}