From 4c7296d45efe849dc70a3b2e2240c905481a91c9 Mon Sep 17 00:00:00 2001
From: yangys <y_ys79@sina.com>
Date: 星期一, 29 九月 2025 17:44:46 +0800
Subject: [PATCH] 工控网涉密网联调
---
blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/service/programannotation/DefaultProcessor.java | 79 +++++++++++++++++++++++++++++++--------
1 files changed, 63 insertions(+), 16 deletions(-)
diff --git a/blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/service/programannotation/DefaultProcessor.java b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/service/programannotation/DefaultProcessor.java
index eb2908a..cf0bcba 100644
--- a/blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/service/programannotation/DefaultProcessor.java
+++ b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/service/programannotation/DefaultProcessor.java
@@ -1,7 +1,8 @@
package org.springblade.mdm.program.service.programannotation;
-import com.qiniu.util.IOUtils;
import org.apache.commons.io.FilenameUtils;
+import org.apache.commons.io.IOUtils;
+import org.apache.commons.lang3.StringUtils;
import org.springblade.mdm.program.service.ProgramAnnotationService;
import org.springblade.mdm.utils.FileContentUtil;
import org.springblade.system.pojo.entity.DictBiz;
@@ -12,35 +13,81 @@
import java.io.IOException;
import java.io.InputStream;
import java.util.List;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
@Component("defaultProcessor")
public class DefaultProcessor extends AbstractProcessor{
- @Autowired
- private ProgramAnnotationService programAnnotationService;
+ //@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));
+ public InputStream putAnnotation(AnnotationData annoData, InputStream inputStream) throws IOException {
+ InputStream insAfter = putFilenameAnnotation(annoData.getFilename(),inputStream);
- String line = FileContentUtil.readLineAt(bais, annotationProperties.getProgramNameLineIndex());
- bais.reset();
- boolean isAnnotation = AnnotationUtil.isAnnotation(line,controlSystem,annoDicts);
- InputStream insAfter;
+ return super.putAnnotation(annoData, insAfter);
+
+ }
+
+ @Override
+ public InputStream putFilenameAnnotation(String fileName, InputStream inputStream) throws IOException {
+ List<DictBiz> annoDicts = getAnnotationDictList();
+ ByteArrayInputStream byteStream = new ByteArrayInputStream(IOUtils.toByteArray(inputStream));
+
+ String programNameLine = FileContentUtil.readLineAt(byteStream, annotationProperties.getProgramNameLineIndex());
+ byteStream.reset();
+ boolean isAnnotation = AnnotationUtil.isAnnotation(programNameLine,this.getControlSystem(),annoDicts);
+ InputStream insAfterProgramName;
//鍔犲叆绋嬪簭鍚嶆敞閲婅
- String proNameLine = AnnotationUtil.generateAnnotation(FilenameUtils.removeExtension(annoData.getFilename()),getControlSystem(),annoDicts);
- if(isAnnotation){
- insAfter = FileContentUtil.replaceAtLine(bais, annotationProperties.getProgramNameLineIndex(),proNameLine);
+ String programNameStr = genProgramNameText(FilenameUtils.removeExtension(fileName));
+
+ String proNameAnnotation = AnnotationUtil.generateAnnotation(programNameStr,getControlSystem(),annoDicts);
+
+ if(isAnnotation){//鏄敞閲�
+ //鎻愬彇娉ㄩ噴鍐呮枃瀛�
+ String programName = FilenameUtils.removeExtension(fileName);
+ String progNameLineWithoutAnno = AnnotationUtil.removeAnnotation(this.getControlSystem(),programNameLine,annoDicts);
+ if(!isCurrentProgramNameAnnotation(progNameLineWithoutAnno,programName)) {
+ //娉ㄩ噴涓嶆槸绋嬪簭鍚嶏紙宸ヨ壓鍛樿嚜宸卞啓鐨勬敞閲婏級锛屾彃鍏�
+ insAfterProgramName = FileContentUtil.insertLine(byteStream,annotationProperties.getProgramNameLineIndex(),proNameAnnotation);
+ }else{
+ //鏄▼搴忓悕娉ㄩ噴锛屼笉澶勭悊锛岃繑鍥炲師stream
+ insAfterProgramName = byteStream;
+ }
}else{
- insAfter = FileContentUtil.insertLine(bais, annotationProperties.getProgramNameLineIndex(),proNameLine);
+ //闈炴敞閲婏紝鎻掑叆鐘舵��
+ insAfterProgramName = FileContentUtil.insertLine(byteStream,annotationProperties.getProgramNameLineIndex(),proNameAnnotation);
}
+ return insAfterProgramName;
+ }
- return super.setAnnotation(annoData, insAfter);
-
+ /**
+ * 鏄惁涓哄綋鍓嶇▼搴忕殑娉ㄩ噴
+ * @param lineTextWithoutAnno 娉ㄩ噴琛岀殑鏂囧瓧
+ * @param programName 绋嬪簭鍚嶇О
+ * @return 鏄惁鏃剁▼搴忔敞閲婅锛屽鏋滀笌褰撳墠绋嬪簭鍚嶅尮閰嶅垯true
+ */
+ boolean isCurrentProgramNameAnnotation(String lineTextWithoutAnno,String programName){
+ Pattern pattern = Pattern.compile("^\\((.+)\\)");
+ Matcher matcher = pattern.matcher(lineTextWithoutAnno);
+ if(matcher.find()){
+ String findText = matcher.group(1);
+ return findText.equals(programName);
+ }else{
+ return false;
+ }
+ }
+ /**
+ * 鐢熸垚绋嬪簭鍚嶆垚鐨勮 鍔犲叆 (pname=[绋嬪簭鍚嶇О])
+ * @param proggramName
+ * @return 鎶ヨ鍚庣殑绋嬪簭鍚嶇О
+ */
+ private String genProgramNameText(String proggramName) {
+ return String.format("(%s)",proggramName);
}
@Override
--
Gitblit v1.9.3