feat: 数据模型引擎接口

master
rouchen 2024-05-08 18:57:25 +08:00
parent fbbe3eb251
commit e0725466a0
18 changed files with 358 additions and 0 deletions

View File

@ -0,0 +1,12 @@
package com.muyu.engine;
/**
* Engine
*
* @author LeYang
* on 2024/5/8
*/
public interface Engine<V> {
public void execution();
public V get();
}

View File

@ -0,0 +1,10 @@
package com.muyu.engine.action;
/**
* ActionDiscard
*
* @author LeYang
* on 2024/5/8
*/
public class ActionDiscard extends RuntimeException{
}

View File

@ -0,0 +1,21 @@
package com.muyu.engine.custom;
import com.muyu.engine.action.ActionDiscard;
import com.muyu.engine.scope.DataModelEngine;
/**
* IsNotNullEngineCustom
*
* @author LeYang
* on 2024/5/8
*/
public class IsNotNullEngineCustom extends DataModelEngine {
@Override
public void execution() {
Object value= getValue();
if (value == null || "".equals(value)){
throw new ActionDiscard();
}
}
}

View File

@ -0,0 +1,44 @@
package com.muyu.engine.scope;
import com.muyu.engine.Engine;
import com.muyu.model.DataModel;
import com.muyu.scope.DataModelContext;
import com.muyu.scope.model.DataProcessModel;
/**
* DataModelEngine
*
* @author LeYang
* on 2024/5/8
*/
public abstract class DataModelEngine implements Engine<DataProcessModel> {
private DataModelContext dataModelContext;
@Override
public DataProcessModel get(){
return dataModelContext.get();
}
public DataModel getModel(){
return get().getDataModel();
}
public String getKey(){
return getModel().getKey();
}
public Object getValue(){
return getModel().getValue();
}
public String getSourceType(){
return getModel().getSourceType();
}
public String getProcessType(){
return getModel().getProcessType();
}
public Class<?> getProcessClass(){
return getModel().getProcessClass();
}
}

View File

@ -0,0 +1,12 @@
package com.muyu.engine.scope;
import com.muyu.engine.Engine;
/**
* DataSetEngine
*
* @author LeYang
* on 2024/5/8
*/
public interface DataSetEngine extends Engine {
}

View File

@ -0,0 +1,12 @@
package com.muyu.engine.scope;
import com.muyu.engine.Engine;
/**
* RecordEngine
*
* @author LeYang
* on 2024/5/8
*/
public interface RecordEngine extends Engine {
}

View File

@ -0,0 +1,41 @@
package com.muyu.model;
import lombok.Data;
/**
* DataModel
*
* @author LeYang
* on 2024/5/8
*/
@Data
public class DataModel {
/**
*
*/
private String key;
/**
*
*/
private Object value;
/**
* -
*/
private String sourceType;
/**
*
*/
private String processType;
/**
*
*/
private Class<?> processClass;
}

View File

@ -0,0 +1,29 @@
package com.muyu.model;
/**
* DataSetModel
*
* @author LeYang
* on 2024/5/8
*/
public class DataSetModel {
//[[DataModel,DataModel,DataModel],[DataModel,DataModel,DataModel]
private RecordModel[] recordModelArr = null;
//创建一个新的RecordModel数组
private DataSetModel(int recordModelLength){
recordModelArr=new RecordModel[recordModelLength];
}
private DataSetModel(RecordModel[] recordModelArr){
recordModelArr = recordModelArr;
}
public static DataSetModel build(int recordModelLength){
return new DataSetModel(recordModelLength);
}
public static DataSetModel build(RecordModel[] recordModelArr){
return new DataSetModel(recordModelArr);
}
}

View File

@ -0,0 +1,10 @@
package com.muyu.model;
/**
* DataStandard
*
* @author LeYang
* on 2024/5/8
*/
public interface DataStandard {
}

View File

@ -0,0 +1,28 @@
package com.muyu.model;
/**
* RecordModel
*
* @author LeYang
* on 2024/5/8
*/
public class RecordModel {
//[DataModel,DataModel,DataModel]
private RecordModel(int dataModelLength){
dataModelArr = new DataModel[dataModelLength];
}
private RecordModel(DataModel[] dataModlArr){
dataModlArr =dataModlArr;
}
private DataModel[] dataModelArr = null;
public static RecordModel build(int dataModelLength){
return new RecordModel(dataModelLength);
}
public static RecordModel build(DataModel[] dataModelArr){
return new RecordModel(dataModelArr);
}
}

View File

@ -0,0 +1,25 @@
package com.muyu.scope;
import com.muyu.scope.model.DataProcessModel;
/**
* @Author: DongZeLiang
* @date: 2024/4/29
* @Description:
* @Version: 1.0
*/
public class DataModelContext implements ScopeContext <DataProcessModel>{
private static final ThreadLocal<DataProcessModel> THREAD_LOCAL = new ThreadLocal<>();
private final DataSetContext dataSetContext;
public DataModelContext (DataSetContext dataSetContext) {
this.dataSetContext = dataSetContext;
}
@Override
public DataProcessModel get () {
return THREAD_LOCAL.get();
}
}

View File

@ -0,0 +1,20 @@
package com.muyu.scope;
import com.muyu.scope.model.DataSetProcessModel;
/**
* @Author: DongZeLiang
* @date: 2024/4/29
* @Description:
* @Version: 1.0
*/
public class DataSetContext {
private static final ThreadLocal<DataSetProcessModel> THREAD_LOCAL = new ThreadLocal<>();
private final RecordContext recordContext;
public DataSetContext (RecordContext recordContext) {
this.recordContext = recordContext;
}
}

View File

@ -0,0 +1,22 @@
package com.muyu.scope;
import com.muyu.scope.model.RecordProcessModel;
/**
* @Author: DongZeLiang
* @date: 2024/4/29
* @Description: /
* @Version: 1.0
*/
public class RecordContext {
private static final ThreadLocal<RecordProcessModel> THREAD_LOCAL = new ThreadLocal<>();
private final TaskContext taskContext;
private RecordContext (TaskContext taskContext) {
this.taskContext = taskContext;
}
}

View File

@ -0,0 +1,12 @@
package com.muyu.scope;
/**
* @Author: DongZeLiang
* @date: 2024/5/6
* @Description:
* @Version: 1.0
*/
public interface ScopeContext<V> {
V get();
}

View File

@ -0,0 +1,14 @@
package com.muyu.scope;
/**
* @Author: DongZeLiang
* @date: 2024/4/29
* @Description:
* @Version: 1.0
*/
public class TaskContext {
public static TaskContext build(){
return new TaskContext();
}
}

View File

@ -0,0 +1,16 @@
package com.muyu.scope.model;
import com.muyu.model.DataModel;
import lombok.Data;
/**
* @Author: DongZeLiang
* @date: 2024/5/5
* @Description:
* @Version: 1.0
*/
@Data
public class DataProcessModel {
private DataModel dataModel;
}

View File

@ -0,0 +1,14 @@
package com.muyu.scope.model;
import com.muyu.model.DataSetModel;
/**
* @Author: DongZeLiang
* @date: 2024/5/5
* @Description:
* @Version: 1.0
*/
public class DataSetProcessModel {
private DataSetModel dataSetModel;
}

View File

@ -0,0 +1,16 @@
package com.muyu.scope.model;
import com.muyu.model.RecordModel;
/**
* @Author: DongZeLiang
* @date: 2024/5/5
* @Description:
* @Version: 1.0
*/
public class RecordProcessModel {
private String[] keys;
private RecordModel recordModel;
}