You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@iotdb.apache.org by ha...@apache.org on 2022/04/18 09:17:52 UTC
[iotdb] 03/03: copy the code from eclipse collection
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 <hh...@outlook.com>
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;
+ }
+}