yangys
2025-09-25 31ecdb8c700529a59dd762f0c47f0ed9c66d5092
blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/service/programannotation/AnnotationProcessor.java
@@ -1,58 +1,31 @@
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;
   InputStream putSendPathAnnotation(String sendPath, InputStream inputStream, List<DictBiz> annoDicts) throws IOException;
   InputStream putAnnotation(AnnotationData annoData, InputStream inputStream) throws IOException;
   InputStream putFilenameAnnotation(String programName, InputStream inputStream) throws IOException;
   AnnotationProperties getAnnotationProperties();
   /**
    * 从输入流读取全套annotation数据
    * @param inputStream 输入流
    * @return 读取的数据
    */
    AnnotationData readAnnotationData(InputStream inputStream);
    //InputStream puttSendPathAnnotation(String programName, InputStream inputStream) throws IOException;
}