yangys
2025-09-15 d4ca3871c18474768c924fcbfd6e8d3178040092
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
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<DictBiz> 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;
    }
 
 
}