package org.springblade.mdm.program.service.programannotation;
|
|
import org.apache.commons.lang3.StringUtils;
|
import org.springblade.core.log.exception.ServiceException;
|
import org.springblade.mdm.program.service.ProgramAnnotationService;
|
import org.springblade.mdm.program.vo.ProgramAnnotation;
|
import org.springblade.system.pojo.entity.DictBiz;
|
|
import java.io.IOException;
|
import java.io.InputStream;
|
import java.util.List;
|
import java.util.Optional;
|
|
public interface AnnotationProcessor {
|
static final String DEFAULT_ANNOTATION_SETTING = "(,)";
|
|
default String generateAnnotation(String oriTest, String systemDictVal, List<DictBiz> annotationList) {
|
ProgramAnnotation progAnnotation = this.getProgramAnnotationFormat(systemDictVal,annotationList);
|
return progAnnotation.addAnnotation(oriTest);
|
}
|
default boolean isAnnotation(String line,String systemDictVal,List<DictBiz> annotationList){
|
ProgramAnnotation progAnnotation = this.getProgramAnnotationFormat(systemDictVal,annotationList);
|
|
line = StringUtils.trim(line);//去首尾空格
|
return progAnnotation.isAnnotation(line);
|
}
|
|
default ProgramAnnotation getProgramAnnotationFormat(String systemDictVal,List<DictBiz> annoDictList){
|
String begin;
|
String end;
|
|
Optional<DictBiz> dictOpt = annoDictList.stream().filter(dict -> {return dict.getDictKey().equals(systemDictVal);}).findFirst();
|
String annotationSetting = DEFAULT_ANNOTATION_SETTING;
|
if(dictOpt.isPresent()) {
|
annotationSetting = dictOpt.get().getRemark();
|
}
|
String[] arr = StringUtils.split(annotationSetting,",");
|
if(arr.length == 2){
|
begin = arr[0];
|
end = arr[1];
|
}else if(arr.length == 1){
|
begin = arr[0];
|
end = "";
|
}else{
|
throw new ServiceException("注释格式配置错误,应该为1到2段,中间用逗号分隔");
|
}
|
|
ProgramAnnotation programAnnotation = new ProgramAnnotation();
|
programAnnotation.setBegin(begin);
|
programAnnotation.setEnd(end);
|
return programAnnotation;
|
}
|
void setControlSystem(String controlSystemDictVal);
|
void setAnnotationProperties(AnnotationProperties annotationProperties);
|
String getControlSystem();
|
InputStream setAnnotation(AnnotationData annoData,InputStream inputStream) throws IOException;
|
|
}
|