From 3a709d693bec87de92b4b91abba535d14392810b Mon Sep 17 00:00:00 2001
From: zhubaomin <zhubaomin>
Date: 星期四, 27 三月 2025 16:10:25 +0800
Subject: [PATCH] 获取项目列表接口
---
pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/Driver.java | 139 +++++++++++++++++++++++-----------------------
1 files changed, 70 insertions(+), 69 deletions(-)
diff --git a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/Driver.java b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/Driver.java
index 4b607f3..3e7a3e3 100644
--- a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/Driver.java
+++ b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/Driver.java
@@ -1,10 +1,9 @@
package com.dy.common.mw.protocol;
-import java.net.URI;
import java.util.HashMap;
-import java.util.List;
+import java.util.Set;
-import com.dy.common.util.ClassScan;
+import org.reflections.Reflections;
public abstract class Driver {
@@ -15,88 +14,102 @@
protected HashMap<String, Class<CodeParse>> downCode2Class = new HashMap<>() ;
protected HashMap<String, CodeParse> downCode2ClassInstance = new HashMap<>() ;
+ protected Notify notify ;
+
+ /**
+ * 娓呯┖鑷繁
+ */
+ public abstract void clear() ;
+
+ /**
+ * 璁剧疆RTU淇℃伅閫氱煡鍣�
+ * @param notify 閫氱煡
+ */
+ public void setNotify(Notify notify){
+ this.notify = notify ;
+ }
+
/**
* 鍗曠嚎绋嬪崟渚婦river妯″紡涓嬭繍琛�
* 鎵弿璇嗗埆鍔熻兘鐮佹敞瑙g被
* @throws Exception 寮傚父
*/
public abstract void scanAnnotationCode() throws Exception ;
-
/**
* 鎵弿璇嗗埆鍔熻兘鐮佹敞瑙g被
* @param driver 椹卞姩
* @param protocolName 鍗忚鍚嶇О
- * @param uri URI
* @param scanRootPackage 鎵弿鍖�
* @throws Exception 寮傚父
*/
@SuppressWarnings("unchecked")
- protected void doScanAnnotationCode(Driver driver, String protocolName, URI uri, String scanRootPackage) throws Exception{
- ClassLoader load = driver.getClass().getClassLoader() ;
- List<String> classNames = new ClassScan().searchClassFromUrl(new URI[]{uri}, scanRootPackage) ;
- if(classNames != null && classNames.size() > 0){
- String code ;
- String[] codes ;
- for(String cName : classNames){
- String className = cName.substring(0, cName.lastIndexOf('.')) ;
- Class<?> clazz = load.loadClass(className) ;
- Class<CodeParse> codeParseClazz ;
- if(clazz.isAnnotationPresent(AnnotationCodeUp.class)){
- AnnotationCodeUp ann = clazz.getAnnotation(AnnotationCodeUp.class) ;
- if(ann != null){
- codeParseClazz = (Class<CodeParse>)clazz ;
- codes = ann.ifAny() ;
- if(codes.length > 0){
- for(String cd: codes){
- cd = cd.trim() ;
- if(!(cd.trim().equals(""))){
- if(driver.upCode2Classes.containsKey(cd)){
- throw new Exception("涓ラ噸閿欒锛屽崗璁�" + protocolName + "鐨勪笂琛屾暟鎹姛鑳界爜" + cd + "鍑虹幇浜嗛噸澶嶆敞瑙o紒") ;
- }
- driver.upCode2Classes.put(cd, codeParseClazz) ;
+ protected void doScanAnnotationCode(Driver driver, String protocolName, String scanRootPackage) throws Exception{
+ Reflections reflections = new Reflections(scanRootPackage); // 鎸囧畾鍖呭悕
+ String code ;
+ String[] codes ;
+ Class<CodeParse> codeParseClazz ;
+
+ Set<Class<?>> codeUpClasses = reflections.getTypesAnnotatedWith(AnnotationCodeUp.class);
+ if (codeUpClasses != null && codeUpClasses.size() > 0) {
+ for (Class<?> clazz : codeUpClasses) {
+ AnnotationCodeUp ann = clazz.getAnnotation(AnnotationCodeUp.class) ;
+ if(ann != null){
+ codeParseClazz = (Class<CodeParse>)clazz ;
+ codes = ann.ifAny() ;
+ if(codes.length > 0){
+ for(String cd: codes){
+ cd = cd.trim() ;
+ if(!(cd.trim().equals(""))){
+ if(driver.upCode2Classes.containsKey(cd)){
+ throw new Exception("涓ラ噸閿欒锛屽崗璁�" + protocolName + "鐨勪笂琛屾暟鎹姛鑳界爜" + cd + "鍑虹幇浜嗛噸澶嶆敞瑙o紒") ;
}
+ driver.upCode2Classes.put(cd, codeParseClazz) ;
}
- }else{
- code = ann.value().trim() ;
- if(!(code.equals(""))){
- if(driver.upCode2Classes.containsKey(code)){
- throw new Exception("涓ラ噸閿欒锛屽崗璁�" + protocolName + "鐨勪笂琛屾暟鎹姛鑳界爜" + code + "鍑虹幇浜嗛噸澶嶆敞瑙o紒") ;
- }
- driver.upCode2Classes.put(code, codeParseClazz) ;
+ }
+ }else{
+ code = ann.value().trim() ;
+ if(!(code.equals(""))){
+ if(driver.upCode2Classes.containsKey(code)){
+ throw new Exception("涓ラ噸閿欒锛屽崗璁�" + protocolName + "鐨勪笂琛屾暟鎹姛鑳界爜" + code + "鍑虹幇浜嗛噸澶嶆敞瑙o紒") ;
}
+ driver.upCode2Classes.put(code, codeParseClazz) ;
}
}
}
-
- if(clazz.isAnnotationPresent(AnnotationCodeDown.class)){
- AnnotationCodeDown ann = clazz.getAnnotation(AnnotationCodeDown.class) ;
- if(ann != null){
- codeParseClazz = (Class<CodeParse>)clazz ;
- codes = ann.ifAny() ;
- if(codes.length > 0){
- for(String cd: codes){
- cd = cd.trim() ;
- if(!(cd.trim().equals(""))){
- if(driver.downCode2Class.containsKey(cd)){
- throw new Exception("涓ラ噸閿欒锛屽崗璁┍鍔�" + protocolName + "鐨勪笅琛屾暟鎹姛鑳界爜" + cd + "鍑虹幇浜嗛噸澶嶆敞瑙o紒") ;
- }
- driver.downCode2Class.put(cd, codeParseClazz) ;
+ }
+ }
+
+ Set<Class<?>> codeDownClasses = reflections.getTypesAnnotatedWith(AnnotationCodeDown.class);
+ if (codeDownClasses != null && codeDownClasses.size() > 0) {
+ for (Class<?> clazz : codeDownClasses) {
+ AnnotationCodeDown ann = clazz.getAnnotation(AnnotationCodeDown.class) ;
+ if(ann != null){
+ codeParseClazz = (Class<CodeParse>)clazz ;
+ codes = ann.ifAny() ;
+ if(codes.length > 0){
+ for(String cd: codes){
+ cd = cd.trim() ;
+ if(!(cd.trim().equals(""))){
+ if(driver.downCode2Class.containsKey(cd)){
+ throw new Exception("涓ラ噸閿欒锛屽崗璁┍鍔�" + protocolName + "鐨勪笅琛屾暟鎹姛鑳界爜" + cd + "鍑虹幇浜嗛噸澶嶆敞瑙o紒") ;
}
+ driver.downCode2Class.put(cd, codeParseClazz) ;
}
- }else{
- code = ann.value() ;
- if(!(code.trim().equals(""))){
- if(driver.downCode2Class.containsKey(code)){
- throw new Exception("涓ラ噸閿欒锛屽崗璁┍鍔�" + protocolName + "鐨勪笅琛屾暟鎹姛鑳界爜" + code + "鍑虹幇浜嗛噸澶嶆敞瑙o紒") ;
- }
- driver.downCode2Class.put(code, codeParseClazz) ;
+ }
+ }else{
+ code = ann.value() ;
+ if(!(code.trim().equals(""))){
+ if(driver.downCode2Class.containsKey(code)){
+ throw new Exception("涓ラ噸閿欒锛屽崗璁┍鍔�" + protocolName + "鐨勪笅琛屾暟鎹姛鑳界爜" + code + "鍑虹幇浜嗛噸澶嶆敞瑙o紒") ;
}
+ driver.downCode2Class.put(code, codeParseClazz) ;
}
}
}
}
}
}
+
/**
* 鍗曠嚎绋嬪崟渚婦river妯″紡涓嬭繍琛�
* 寰楀埌涓婅鏁版嵁鍔熻兘鐮佸鐞嗙被CodeParse瀵硅薄
@@ -142,7 +155,7 @@
return codeParse ;
}
/**
- * 瑙f瀽涓婅鏁版嵁
+ * 瑙f瀽RTU涓婅鏁版嵁
* @param isLowPower 鏄惁鍦ㄤ綆鍔熻�楃幆澧冧笅杩愯
* @param rtuAddr 鎺у埗鍣ㄥ湴鍧�
* @param upBuffer 瀛楄妭鏁扮粍
@@ -151,18 +164,6 @@
* @return MidResult[]
*/
public abstract MidResult[] parseData(Boolean isLowPower, String rtuAddr, byte[] upBuffer, String upHex, DriverParserDataCallback callback, Object... params) ;
- /**
- * 瑙f瀽鐢典俊骞冲彴涓婅鏁版嵁
- * @param isLowPower 鏄惁鍦ㄤ綆鍔熻�楃幆澧冧笅杩愯
- * @param rtuAddr 鎺у埗鍣ㄥ湴鍧�
- * @param productId 鐢典俊骞冲彴浜у搧ID锛屽綋涓嶅湪鐢典俊骞冲彴涓繍琛屾椂锛屼负null
- * @param deviceId 鐢典俊骞冲彴璁惧ID锛屽綋涓嶅湪鐢典俊骞冲彴涓繍琛屾椂锛屼负null
- * @param upBuffer 瀛楄妭鏁扮粍
- * @param upHex 瀛楄妭鏁扮粍16杩涘埗褰㈠紡
- * @param callback 鍥炶皟
- * @return MidResult[]
- */
- public abstract MidResult[] parseData(Boolean isLowPower, String rtuAddr, Integer productId, String deviceId, byte[] upBuffer, String upHex, DriverParserDataCallback callback, Object... params) ;
/**
* 鏋勯�犱笅琛屾暟鎹紙鍛戒护锛�
--
Gitblit v1.8.0