From 8a87e4226aa802d6a0e3566c66824fedf68e77da Mon Sep 17 00:00:00 2001
From: aijinhui <aijinhui>
Date: 星期二, 24 十月 2023 16:30:48 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/master'

---
 ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/LibraryLoad.java |  387 ++++++++++++++++++++++++++++---------------------------
 1 files changed, 198 insertions(+), 189 deletions(-)

diff --git a/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/LibraryLoad.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/LibraryLoad.java
index af9a250..9fa85e9 100644
--- a/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/LibraryLoad.java
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/lib/LibraryLoad.java
@@ -1,189 +1,198 @@
-package com.ruoyi.device.dhsdk.lib;
-
-import com.ruoyi.device.dhsdk.lib.DynamicParseUtil;
-import org.xml.sax.SAXException;
-
-import javax.xml.parsers.ParserConfigurationException;
-import java.io.*;
-
-/**
- * @author 47081
- * @version 1.0
- * @description 鍔ㄦ�佸簱鍔犺浇
- * @date 2020/11/14
- */
-public class LibraryLoad {
-  private static final String ARCH_WINDOWS = "win";
-  private static final String ARCH_LINUX = "linux";
-  private static final String ARCH_MAC = "mac";
-  private static final int PREFIX_64 = 64;
-  private static final int PREFIX_32 = 32;
-  private static final String PREFIX_ARM = "ARM";
-  private static final String EXTERNAL_WIN = ".dll";
-  private static final String EXTERNAL_LINUX = ".so";
-  private static final String EXTERNAL_MAC = ".dylib";
-  private static DynamicParseUtil dynamicParseUtil;
-  /** 褰撳墠璇诲彇鐨勭洰褰� */
-  private static String currentFold;
-  /** 鍔ㄦ�佸簱闇�瑕佸啓鍏ョ殑鐩綍 */
-  private static String EXTRACT_PATH = System.getProperty("java.io.tmpdir");
-
-  private static boolean written = false;
-
-  /**
-   * 璁剧疆鍔ㄦ�佸簱鍐欏叆鐨勮矾寰�,閫傜敤浜庨渶瑕佽嚜瀹氫箟鍔犺浇璺緞鐨勭敤鎴�
-   *
-   * @param path 鍔ㄦ�佸簱鍐欏叆鐨勬枃浠跺す,浠庤鏂囦欢澶逛笅鍔犺浇sdk鐨勫姩鎬佸簱
-   */
-  public static void setExtractPath(String path) {
-    EXTRACT_PATH = path;
-  }
-  
-  public static String  getExtractPath() {
-	return EXTRACT_PATH;
-	   
-	  }
-  /** 鍔ㄦ�佸簱璺緞 */
-  private static String INNER_PATH;
-
-  // private static final String EXTERNAL_MAC = ".so";
-
-  private static String extractNetSDKLib(String libName) {
-    return extractLibrary(libName);
-  }
-
-  public static String getLoadLibrary(String libraryName) {
-    currentFold = getLibraryFold();
-    if (dynamicParseUtil == null) {
-      try {
-        dynamicParseUtil =
-            new DynamicParseUtil(
-                LibraryLoad.class.getClassLoader().getResourceAsStream("dynamic-lib-load.xml"));
-        if (!written) {
-          for (String libName : dynamicParseUtil.getLibsSystem(currentFold)) {
-            extractLibrary(libName);
-          }
-          written = true;
-        }
-      } catch (Exception e) {
-        e.printStackTrace();
-      }
-    }
-    String fullName = getLibraryName(libraryName);
-    String path = EXTRACT_PATH;
-    if (!(EXTRACT_PATH.endsWith("/") || EXTRACT_PATH.endsWith("\\"))) {
-      path = EXTRACT_PATH + "/";
-    }
-    System.out.println("load library: " + path + fullName);
-    return path + fullName;
-  }
-
-  /**
-   * 灏唈ar鍖呴噷鐨勫姩鎬佸簱鍐欏叆鍒扮郴缁熺紦瀛樼洰褰�,浣跨敤缁濆璺緞鍔犺浇鍔ㄦ�佸簱
-   *
-   * @param libName
-   * @return
-   */
-  private static String extractLibrary(String libName) {
-    return extractLibrary("", libName);
-  }
-
-  /**
-   * 鐩稿璺緞鏂囦欢澶�
-   *
-   * @param relativePath 鐩稿璺緞
-   * @param libName 鍔ㄦ�佸簱璺緞
-   * @return
-   */
-  private static String extractLibrary(String relativePath, String libName) {
-    if (libName.trim().equals("")) {
-      return "";
-    }
-    String libFullName = getLibraryName(libName);
-    String dir = getLibraryFold();
-    if (!(relativePath.endsWith("/") || relativePath.endsWith("\\"))) {
-      relativePath = relativePath + "/";
-    }
-    String fileName = relativePath + dir + "/" + libFullName;
-    InputStream in = LibraryLoad.class.getResourceAsStream(fileName);
-    BufferedInputStream reader;
-    FileOutputStream writer;
-    File extractedLibFile = null;
-    try {
-      if (in == null) {
-        in = new FileInputStream(fileName);
-      }
-      String nativeTempDir = EXTRACT_PATH;
-      if (!(nativeTempDir.endsWith("/") || nativeTempDir.endsWith("\\"))) {
-        nativeTempDir = nativeTempDir + "/";
-      }
-      extractedLibFile = new File(nativeTempDir + libFullName);
-      reader = new BufferedInputStream(in);
-      writer = new FileOutputStream(extractedLibFile);
-      byte[] buffer = new byte[1024];
-      while (true) {
-        int len = reader.read(buffer);
-        if (len == 0 || len == -1) break;
-        writer.write(buffer, 0, len);
-      }
-      reader.close();
-      writer.close();
-      in.close();
-    } catch (Exception e) {
-      //System.out.println("dynamic file[ "+ fileName+ " ] not found in project.please ensure you need this library.");
-    }
-    return extractedLibFile != null ? extractedLibFile.getAbsolutePath() : "";
-  }
-
-  /**
-   * 鑾峰彇鍔ㄦ�佸簱瀹屾暣鍚嶇О
-   *
-   * @param libName
-   * @return
-   */
-  private static String getLibraryName(String libName) {
-    String dir = currentFold;
-    String libPrefix = "";
-    String libExtension = EXTERNAL_WIN;
-
-    if (!dir.contains("win")) {
-      libPrefix = "lib";
-      if (dir.contains("linux")) {
-        libExtension = EXTERNAL_LINUX;
-      } else {
-        // libExtension=".dylib";
-        libExtension = EXTERNAL_MAC;
-      }
-    }
-    libName = dynamicParseUtil.compareLibName(currentFold, libName);
-    // 鍔ㄦ�佸簱浠ib寮�澶达紝鍒欎笉娣诲姞lib鍓嶇紑
-    // 浠ib寮�澶寸殑搴撳垯涓嶆坊鍔爈ib鍓嶇紑
-    return (libName.startsWith("lib") ? "" : libPrefix) + libName + libExtension;
-  }
-
-  // 鑾峰彇绯荤粺瀵瑰簲鐨勫姩鎬佸簱鏂囦欢澶�
-  private static String getLibraryFold() {
-    String osType;
-    String osName = System.getProperty("os.name");
-    if (osName.toLowerCase().startsWith("linux")) {
-      osType = ARCH_LINUX;
-    } else if (osName.toLowerCase().startsWith("mac")
-        || osName.toLowerCase().startsWith("darwin")) {
-      osType = ARCH_MAC;
-    } else if (osName.toLowerCase().startsWith("windows")) {
-      osType = ARCH_WINDOWS;
-    } else {
-      osType = "";
-    }
-    String arch = System.getProperty("os.arch");
-    arch = arch.toLowerCase().trim();
-    if ("i386".equals(arch) || "i686".equals(arch)||"x86".equals(arch)) {
-      arch = PREFIX_32 + "";
-    } else if ("x86_64".equals(arch) || "amd64".equals(arch)) {
-      arch = PREFIX_64 + "";
-    } else if (arch.startsWith("arm")) {
-      arch = PREFIX_ARM + "";
-    }
-    return osType + arch;
-  }
-}
+package com.ruoyi.device.dhsdk.lib;
+
+import com.ruoyi.device.dhsdk.lib.DynamicParseUtil;
+import lombok.extern.slf4j.Slf4j;
+import org.xml.sax.SAXException;
+
+import javax.xml.parsers.ParserConfigurationException;
+import java.io.*;
+
+/**
+ * @author 47081
+ * @version 1.0
+ * @description 鍔ㄦ�佸簱鍔犺浇
+ * @date 2020/11/14
+ */
+@Slf4j(topic = "dhSdk")
+public class LibraryLoad {
+  private static final String ARCH_WINDOWS = "win";
+  private static final String ARCH_LINUX = "linux";
+  private static final String ARCH_MAC = "mac";
+  private static final int PREFIX_64 = 64;
+  private static final int PREFIX_32 = 32;
+  private static final String PREFIX_ARM = "ARM";
+  private static final String EXTERNAL_WIN = ".dll";
+  private static final String EXTERNAL_LINUX = ".so";
+  private static final String EXTERNAL_MAC = ".dylib";
+  private static DynamicParseUtil dynamicParseUtil;
+  /** 褰撳墠璇诲彇鐨勭洰褰� */
+  private static String currentFold;
+  /** 鍔ㄦ�佸簱闇�瑕佸啓鍏ョ殑鐩綍 */
+  private static String EXTRACT_PATH = System.getProperty("java.io.tmpdir");
+
+  private static boolean written = false;
+
+  /**
+   * 璁剧疆鍔ㄦ�佸簱鍐欏叆鐨勮矾寰�,閫傜敤浜庨渶瑕佽嚜瀹氫箟鍔犺浇璺緞鐨勭敤鎴�
+   *
+   * @param path 鍔ㄦ�佸簱鍐欏叆鐨勬枃浠跺す,浠庤鏂囦欢澶逛笅鍔犺浇sdk鐨勫姩鎬佸簱
+   */
+  public static void setExtractPath(String path) {
+    EXTRACT_PATH = path;
+  }
+
+  public static String  getExtractPath() {
+	return EXTRACT_PATH;
+
+	  }
+  /** 鍔ㄦ�佸簱璺緞 */
+  private static String INNER_PATH;
+
+  // private static final String EXTERNAL_MAC = ".so";
+
+  private static String extractNetSDKLib(String libName) {
+    return extractLibrary(libName);
+  }
+
+  public static String getLoadLibrary(String libraryName) {
+    currentFold = getLibraryFold();
+    if (dynamicParseUtil == null) {
+      try {
+        dynamicParseUtil =
+            new DynamicParseUtil(
+                LibraryLoad.class.getClassLoader().getResourceAsStream("dynamic-lib-load.xml"));
+        if (!written) {
+          for (String libName : dynamicParseUtil.getLibsSystem(currentFold)) {
+            extractLibrary(libName);
+          }
+          written = true;
+        }
+      } catch (Exception e) {
+        e.printStackTrace();
+      }
+    }
+    String fullName = getLibraryName(libraryName);
+    String path = EXTRACT_PATH;
+    if (!(EXTRACT_PATH.endsWith("/") || EXTRACT_PATH.endsWith("\\"))) {
+      path = EXTRACT_PATH + "/";
+    }
+    log.debug("load library: " + path + fullName);
+    return path + fullName;
+  }
+
+  /**
+   * 灏唈ar鍖呴噷鐨勫姩鎬佸簱鍐欏叆鍒扮郴缁熺紦瀛樼洰褰�,浣跨敤缁濆璺緞鍔犺浇鍔ㄦ�佸簱
+   *
+   * @param libName
+   * @return
+   */
+  private static String extractLibrary(String libName) {
+    return extractLibrary("/lib", libName);
+  }
+
+    /**
+     * 鐩稿璺緞鏂囦欢澶�
+     *
+     * @param relativePath 鐩稿璺緞
+     * @param libName      鍔ㄦ�佸簱璺緞
+     * @return
+     */
+    private static String extractLibrary(String relativePath, String libName) {
+        if (libName.trim().equals("")) {
+            return "";
+        }
+        String libFullName = getLibraryName(libName);
+        String dir = getLibraryFold();
+        if (!(relativePath.endsWith("/") || relativePath.endsWith("\\"))) {
+            relativePath = relativePath + "/";
+        }
+        String fileName = relativePath + dir + "/" + libFullName;
+        InputStream in = LibraryLoad.class.getResourceAsStream(fileName);
+        BufferedInputStream reader;
+        FileOutputStream writer;
+        File extractedLibFile = null;
+        try {
+            if (in == null) {
+                in = new FileInputStream(fileName);
+            }
+            String nativeTempDir = EXTRACT_PATH;
+            if (!(nativeTempDir.endsWith("/") || nativeTempDir.endsWith("\\"))) {
+                nativeTempDir = nativeTempDir + "/";
+            }
+            extractedLibFile = new File(nativeTempDir + libFullName);
+            reader = new BufferedInputStream(in);
+
+            // 妫�鏌ユ枃浠跺す鏄惁瀛樺湪锛屽鏋滀笉瀛樺湪鍒欏垱寤�
+            File parentDir = extractedLibFile.getParentFile();
+            if (!parentDir.exists()) {
+                parentDir.mkdirs();
+            }
+
+            writer = new FileOutputStream(extractedLibFile);
+            byte[] buffer = new byte[1024];
+            while (true) {
+                int len = reader.read(buffer);
+                if (len == 0 || len == -1) break;
+                writer.write(buffer, 0, len);
+            }
+            reader.close();
+            writer.close();
+            in.close();
+        } catch (Exception e) {
+           log.error("dynamic file[ " + fileName + " ] not found in project.please ensure you need this library.");
+        }
+        return extractedLibFile != null ? extractedLibFile.getAbsolutePath() : "";
+    }
+
+  /**
+   * 鑾峰彇鍔ㄦ�佸簱瀹屾暣鍚嶇О
+   *
+   * @param libName
+   * @return
+   */
+  private static String getLibraryName(String libName) {
+    String dir = currentFold;
+    String libPrefix = "";
+    String libExtension = EXTERNAL_WIN;
+
+    if (!dir.contains("win")) {
+      libPrefix = "lib";
+      if (dir.contains("linux")) {
+        libExtension = EXTERNAL_LINUX;
+      } else {
+        // libExtension=".dylib";
+        libExtension = EXTERNAL_MAC;
+      }
+    }
+    libName = dynamicParseUtil.compareLibName(currentFold, libName);
+    // 鍔ㄦ�佸簱浠ib寮�澶达紝鍒欎笉娣诲姞lib鍓嶇紑
+    // 浠ib寮�澶寸殑搴撳垯涓嶆坊鍔爈ib鍓嶇紑
+    return (libName.startsWith("lib") ? "" : libPrefix) + libName + libExtension;
+  }
+
+  // 鑾峰彇绯荤粺瀵瑰簲鐨勫姩鎬佸簱鏂囦欢澶�
+  private static String getLibraryFold() {
+    String osType;
+    String osName = System.getProperty("os.name");
+    if (osName.toLowerCase().startsWith("linux")) {
+      osType = ARCH_LINUX;
+    } else if (osName.toLowerCase().startsWith("mac")
+        || osName.toLowerCase().startsWith("darwin")) {
+      osType = ARCH_MAC;
+    } else if (osName.toLowerCase().startsWith("windows")) {
+      osType = ARCH_WINDOWS;
+    } else {
+      osType = "";
+    }
+    String arch = System.getProperty("os.arch");
+    arch = arch.toLowerCase().trim();
+    if ("i386".equals(arch) || "i686".equals(arch)||"x86".equals(arch)) {
+      arch = PREFIX_32 + "";
+    } else if ("x86_64".equals(arch) || "amd64".equals(arch)) {
+      arch = PREFIX_64 + "";
+    } else if (arch.startsWith("arm")) {
+      arch = PREFIX_ARM + "";
+    }
+    return osType + arch;
+  }
+}

--
Gitblit v1.9.3