This is an automated email from the ASF dual-hosted git repository.

jiangtian pushed a commit to branch develop
in repository https://gitbox.apache.org/repos/asf/tsfile.git


The following commit(s) were added to refs/heads/develop by this push:
     new 81375684 Add interface accepting String[] in StringArrayDeviceId. 
(#221)
81375684 is described below

commit 813756848a7ff389c55c967f6fed51e3b8d3b399
Author: Jiang Tian <[email protected]>
AuthorDate: Thu Aug 29 16:29:16 2024 +0800

    Add interface accepting String[] in StringArrayDeviceId. (#221)
---
 .../tsfile/file/metadata/StringArrayDeviceID.java  | 42 +++++++++++-----------
 1 file changed, 22 insertions(+), 20 deletions(-)

diff --git 
a/java/tsfile/src/main/java/org/apache/tsfile/file/metadata/StringArrayDeviceID.java
 
b/java/tsfile/src/main/java/org/apache/tsfile/file/metadata/StringArrayDeviceID.java
index 020b5489..d8aca6fb 100644
--- 
a/java/tsfile/src/main/java/org/apache/tsfile/file/metadata/StringArrayDeviceID.java
+++ 
b/java/tsfile/src/main/java/org/apache/tsfile/file/metadata/StringArrayDeviceID.java
@@ -34,7 +34,6 @@ import java.io.InputStream;
 import java.io.OutputStream;
 import java.nio.ByteBuffer;
 import java.util.Arrays;
-import java.util.List;
 import java.util.Objects;
 
 import static org.apache.tsfile.common.constant.TsFileConstant.PATH_SEPARATOR;
@@ -102,41 +101,44 @@ public class StringArrayDeviceID implements IDeviceID {
   }
 
   @SuppressWarnings("java:S125") // confusing comments with codes
-  private static String[] splitDeviceIdString(String deviceIdString) {
-    List<String> splits = 
Arrays.asList(PathNodesGenerator.splitPathToNodes(deviceIdString));
-    int segmentCnt = splits.size();
+  public static String[] splitDeviceIdString(String deviceIdString) {
+    return 
splitDeviceIdString(PathNodesGenerator.splitPathToNodes(deviceIdString));
+  }
+
+  @SuppressWarnings("java:S125") // confusing comments with codes
+  public static String[] splitDeviceIdString(String[] splits) {
+    int segmentCnt = splits.length;
 
     String tableName;
-    String[] segments;
+    String[] finalSegments;
     // assuming DEFAULT_SEGMENT_NUM_FOR_TABLE_NAME = 3
     if (segmentCnt == 1) {
       // "root" -> {"root"}
-      segments = new String[1];
-      segments[0] = splits.get(0);
+      finalSegments = new String[1];
+      finalSegments[0] = splits[0];
     } else if (segmentCnt < TSFileConfig.DEFAULT_SEGMENT_NUM_FOR_TABLE_NAME + 
1) {
       // "root.a" -> {"root", "a"}
       // "root.a.b" -> {"root.a", "b"}
-      tableName =
-          segmentCnt == 1 ? "" : String.join(PATH_SEPARATOR, splits.subList(0, 
segmentCnt - 1));
-      segments = new String[2];
-      segments[0] = tableName;
-      segments[1] = splits.get(segmentCnt - 1);
+      tableName = String.join(PATH_SEPARATOR, Arrays.copyOfRange(splits, 0, 
segmentCnt - 1));
+      finalSegments = new String[2];
+      finalSegments[0] = tableName;
+      finalSegments[1] = splits[segmentCnt - 1];
     } else {
       // "root.a.b.c" -> {"root.a.b", "c"}
       // "root.a.b.c.d" -> {"root.a.b", "c", "d"}
       tableName =
           String.join(
-              PATH_SEPARATOR, splits.subList(0, 
TSFileConfig.DEFAULT_SEGMENT_NUM_FOR_TABLE_NAME));
+              PATH_SEPARATOR,
+              Arrays.copyOfRange(splits, 0, 
TSFileConfig.DEFAULT_SEGMENT_NUM_FOR_TABLE_NAME));
+
       String[] idSegments =
-          splits
-              .subList(TSFileConfig.DEFAULT_SEGMENT_NUM_FOR_TABLE_NAME, 
splits.size())
-              .toArray(new String[0]);
-      segments = new String[idSegments.length + 1];
-      segments[0] = tableName;
-      System.arraycopy(idSegments, 0, segments, 1, idSegments.length);
+          Arrays.copyOfRange(splits, 
TSFileConfig.DEFAULT_SEGMENT_NUM_FOR_TABLE_NAME, segmentCnt);
+      finalSegments = new String[idSegments.length + 1];
+      finalSegments[0] = tableName;
+      System.arraycopy(idSegments, 0, finalSegments, 1, idSegments.length);
     }
 
-    return segments;
+    return finalSegments;
   }
 
   public static Deserializer getDESERIALIZER() {

Reply via email to