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 annotationList) { ProgramAnnotation progAnnotation = this.getProgramAnnotationFormat(systemDictVal,annotationList); return progAnnotation.addAnnotation(oriTest); } default boolean isAnnotation(String line,String systemDictVal,List annotationList){ ProgramAnnotation progAnnotation = this.getProgramAnnotationFormat(systemDictVal,annotationList); line = StringUtils.trim(line);//去首尾空格 return progAnnotation.isAnnotation(line); } default ProgramAnnotation getProgramAnnotationFormat(String systemDictVal,List annoDictList){ String begin; String end; Optional 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; }