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

haonan pushed a commit to branch junit14
in repository https://gitbox.apache.org/repos/asf/iotdb.git

commit 6ab99ffe990fc9bc79bfbf07c5b7ddae6a723ccd
Author: HTHou <[email protected]>
AuthorDate: Mon Apr 18 17:17:32 2022 +0800

    copy the code from eclipse collection
---
 LICENSE                                            |  10 ++
 tsfile/pom.xml                                     |   5 -
 .../iotdb/tsfile/encoding/decoder/FreqDecoder.java |  26 ++--
 .../iotdb/tsfile/encoding/encoder/FreqEncoder.java |  26 ++--
 .../apache/iotdb/tsfile/utils/BitConstructor.java  |  32 ++---
 .../apache/iotdb/tsfile/utils/ByteArrayList.java   | 135 +++++++++++++++++++++
 6 files changed, 192 insertions(+), 42 deletions(-)

diff --git a/LICENSE b/LICENSE
index d84f2bd354..6919175829 100644
--- a/LICENSE
+++ b/LICENSE
@@ -234,3 +234,13 @@ The following files include code modified from Michael 
Burman's gorilla-tsc proj
 Copyright: 2016-2018 Michael Burman and/or other contributors
 Project page: https://github.com/burmanm/gorilla-tsc
 License: http://www.apache.org/licenses/LICENSE-2.0
+
+--------------------------------------------------------------------------------
+
+The following files include code modified from Eclipse Collections project.
+
+./tsfile/src/main/java/org/apache/iotdb/tsfile/utils/ByteArrayList.java
+
+Copyright: 2021 Goldman Sachs
+Project page: https://www.eclipse.org/collections
+License: 
https://github.com/eclipse/eclipse-collections/blob/master/LICENSE-EDL-1.0.txt
diff --git a/tsfile/pom.xml b/tsfile/pom.xml
index edb728b8ad..30eb5e75b3 100644
--- a/tsfile/pom.xml
+++ b/tsfile/pom.xml
@@ -59,11 +59,6 @@
             <artifactId>JTransforms</artifactId>
             <version>3.1</version>
         </dependency>
-        <dependency>
-            <groupId>org.eclipse.collections</groupId>
-            <artifactId>eclipse-collections</artifactId>
-            <version>10.4.0</version>
-        </dependency>
         <dependency>
             <groupId>com.google.code.gson</groupId>
             <artifactId>gson</artifactId>
diff --git 
a/tsfile/src/main/java/org/apache/iotdb/tsfile/encoding/decoder/FreqDecoder.java
 
b/tsfile/src/main/java/org/apache/iotdb/tsfile/encoding/decoder/FreqDecoder.java
index 3797681738..e4df75cb9d 100644
--- 
a/tsfile/src/main/java/org/apache/iotdb/tsfile/encoding/decoder/FreqDecoder.java
+++ 
b/tsfile/src/main/java/org/apache/iotdb/tsfile/encoding/decoder/FreqDecoder.java
@@ -1,18 +1,22 @@
 /*
- * Copyright 2021 The Apache Software Foundation.
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
  *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
+ *     http://www.apache.org/licenses/LICENSE-2.0
  *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
  */
+
 package org.apache.iotdb.tsfile.encoding.decoder;
 
 import org.apache.iotdb.tsfile.file.metadata.enums.TSEncoding;
diff --git 
a/tsfile/src/main/java/org/apache/iotdb/tsfile/encoding/encoder/FreqEncoder.java
 
b/tsfile/src/main/java/org/apache/iotdb/tsfile/encoding/encoder/FreqEncoder.java
index 39e5c4e6be..dafa96384d 100644
--- 
a/tsfile/src/main/java/org/apache/iotdb/tsfile/encoding/encoder/FreqEncoder.java
+++ 
b/tsfile/src/main/java/org/apache/iotdb/tsfile/encoding/encoder/FreqEncoder.java
@@ -1,18 +1,22 @@
 /*
- * Copyright 2021 The Apache Software Foundation.
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
  *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
+ *     http://www.apache.org/licenses/LICENSE-2.0
  *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
  */
+
 package org.apache.iotdb.tsfile.encoding.encoder;
 
 import org.apache.iotdb.tsfile.file.metadata.enums.TSEncoding;
diff --git 
a/tsfile/src/main/java/org/apache/iotdb/tsfile/utils/BitConstructor.java 
b/tsfile/src/main/java/org/apache/iotdb/tsfile/utils/BitConstructor.java
index 444927f6cb..5441c85071 100644
--- a/tsfile/src/main/java/org/apache/iotdb/tsfile/utils/BitConstructor.java
+++ b/tsfile/src/main/java/org/apache/iotdb/tsfile/utils/BitConstructor.java
@@ -1,21 +1,23 @@
 /*
- * Copyright 2021 The Apache Software Foundation.
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
  *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
+ *     http://www.apache.org/licenses/LICENSE-2.0
  *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
  */
-package org.apache.iotdb.tsfile.utils;
 
-import org.eclipse.collections.impl.list.mutable.primitive.ByteArrayList;
+package org.apache.iotdb.tsfile.utils;
 
 public class BitConstructor {
 
@@ -81,8 +83,8 @@ public class BitConstructor {
     if (cnt == 0) {
       data.addAll(bytes);
     } else {
-      for (int i = 0; i < bytes.length; i++) {
-        add(bytes[i], 8);
+      for (byte aByte : bytes) {
+        add(aByte, 8);
       }
     }
   }
diff --git 
a/tsfile/src/main/java/org/apache/iotdb/tsfile/utils/ByteArrayList.java 
b/tsfile/src/main/java/org/apache/iotdb/tsfile/utils/ByteArrayList.java
new file mode 100644
index 0000000000..b3ffd4f599
--- /dev/null
+++ b/tsfile/src/main/java/org/apache/iotdb/tsfile/utils/ByteArrayList.java
@@ -0,0 +1,135 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+/**
+ * This class includes code modified from Eclipse Collections project.
+ *
+ * <p>Copyright: 2021 Goldman Sachs
+ *
+ * <p>Project page: https://www.eclipse.org/collections/
+ *
+ * <p>License: 
https://github.com/eclipse/eclipse-collections/blob/master/LICENSE-EDL-1.0.txt
+ */
+package org.apache.iotdb.tsfile.utils;
+
+import java.util.Arrays;
+
+public class ByteArrayList {
+
+  private static final byte[] DEFAULT_SIZED_EMPTY_ARRAY = {};
+  private static final byte[] ZERO_SIZED_ARRAY = {};
+  private static final int MAXIMUM_ARRAY_SIZE = Integer.MAX_VALUE - 8;
+
+  protected int size;
+  protected transient byte[] items = DEFAULT_SIZED_EMPTY_ARRAY;
+
+  public ByteArrayList() {}
+
+  public ByteArrayList(int initialCapacity) {
+    this.items = initialCapacity == 0 ? ZERO_SIZED_ARRAY : new 
byte[initialCapacity];
+  }
+
+  private void ensureCapacityForAdd() {
+    if (this.items == DEFAULT_SIZED_EMPTY_ARRAY) {
+      this.items = new byte[10];
+    } else {
+      
this.transferItemsToNewArrayWithCapacity(this.sizePlusFiftyPercent(this.size));
+    }
+  }
+
+  private int sizePlusFiftyPercent(int oldSize) {
+    int result = oldSize + (oldSize >> 1) + 1;
+    return result < oldSize ? MAXIMUM_ARRAY_SIZE : result;
+  }
+
+  private void transferItemsToNewArrayWithCapacity(int newCapacity) {
+    this.items = this.copyItemsWithNewCapacity(newCapacity);
+  }
+
+  private byte[] copyItemsWithNewCapacity(int newCapacity) {
+    byte[] newItems = new byte[newCapacity];
+    System.arraycopy(this.items, 0, newItems, 0, Math.min(this.size, 
newCapacity));
+    return newItems;
+  }
+
+  public boolean add(byte newItem) {
+    if (this.items.length == this.size) {
+      this.ensureCapacityForAdd();
+    }
+    this.items[this.size] = newItem;
+    this.size++;
+    return true;
+  }
+
+  public boolean addAll(byte... source) {
+    if (source.length < 1) {
+      return false;
+    }
+    this.copyItems(source.length, source);
+    return true;
+  }
+
+  private void copyItems(int sourceSize, byte[] source) {
+    int newSize = this.size + sourceSize;
+    this.ensureCapacity(newSize);
+    System.arraycopy(source, 0, this.items, this.size, sourceSize);
+    this.size = newSize;
+  }
+
+  public void ensureCapacity(int minCapacity) {
+    int oldCapacity = this.items.length;
+    if (minCapacity > oldCapacity) {
+      int newCapacity = Math.max(this.sizePlusFiftyPercent(oldCapacity), 
minCapacity);
+      this.transferItemsToNewArrayWithCapacity(newCapacity);
+    }
+  }
+
+  public byte[] toArray() {
+    byte[] newItems = new byte[this.size];
+    System.arraycopy(this.items, 0, newItems, 0, this.size);
+    return newItems;
+  }
+
+  public byte removeAtIndex(int index) {
+    byte previous = this.get(index);
+    int totalOffset = this.size - index - 1;
+    if (totalOffset > 0) {
+      System.arraycopy(this.items, index + 1, this.items, index, totalOffset);
+    }
+    --this.size;
+    this.items[this.size] = (byte) 0;
+    return previous;
+  }
+
+  public byte get(int index) {
+    if (index < this.size) {
+      return this.items[index];
+    }
+    throw new IndexOutOfBoundsException("Index: " + index + " Size: " + 
this.size);
+  }
+
+  public void clear() {
+    Arrays.fill(this.items, 0, size, (byte) 0);
+    this.size = 0;
+  }
+
+  public int size() {
+    return this.size;
+  }
+}

Reply via email to