package org.springblade.mdm.program.service.programannotation; import com.qiniu.util.IOUtils; import org.apache.commons.io.FilenameUtils; import org.springblade.mdm.program.service.ProgramAnnotationService; import org.springblade.mdm.utils.FileContentUtil; import org.springblade.system.pojo.entity.DictBiz; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; import java.io.ByteArrayInputStream; import java.io.IOException; import java.io.InputStream; import java.util.List; @Component("defaultProcessor") public class DefaultProcessor extends AbstractProcessor{ @Autowired private ProgramAnnotationService programAnnotationService; private String controlSystem; @Override public InputStream setAnnotation(AnnotationData annoData, InputStream inputStream) throws IOException { List annoDicts = programAnnotationService.getAnnotionDictList(); ByteArrayInputStream bais = new ByteArrayInputStream(IOUtils.toByteArray(inputStream)); String line = FileContentUtil.readLineAt(bais, annotationProperties.getProgramNameLineIndex()); bais.reset(); boolean isAnnotation = AnnotationUtil.isAnnotation(line,controlSystem,annoDicts); InputStream insAfter; //加入程序名注释行 String proNameLine = AnnotationUtil.generateAnnotation(FilenameUtils.removeExtension(annoData.getFilename()),getControlSystem(),annoDicts); if(isAnnotation){ insAfter = FileContentUtil.replaceAtLine(bais, annotationProperties.getProgramNameLineIndex(),proNameLine); }else{ insAfter = FileContentUtil.insertLine(bais, annotationProperties.getProgramNameLineIndex(),proNameLine); } return super.setAnnotation(annoData, insAfter); } @Override public void setControlSystem(String controlSystemDictVal) { this.controlSystem = controlSystemDictVal; } @Override public String getControlSystem() { return this.controlSystem; } }