diff --git a/pom.xml b/pom.xml index 994ed99..9ebd1b5 100644 --- a/pom.xml +++ b/pom.xml @@ -14,19 +14,38 @@ 1.8 1.18.24 2.13.4 + 3.0.2 + 31.1-jre - org.projectlombok - lombok - ${lombok.version} - true + com.google.code.findbugs + jsr305 + ${google-jsr305.version} + + + com.google.guava + guava + ${guava.version} com.fasterxml.jackson.core jackson-annotations ${jackson.version} + + org.projectlombok + lombok + ${lombok.version} + true + + + + org.junit.jupiter + junit-jupiter-api + 5.9.2 + test + \ No newline at end of file diff --git a/src/main/java/xyz/zhouxy/plusone/commons/constant/PatternConsts.java b/src/main/java/xyz/zhouxy/plusone/commons/constant/PatternConsts.java index 9efcf24..9c09f6f 100644 --- a/src/main/java/xyz/zhouxy/plusone/commons/constant/PatternConsts.java +++ b/src/main/java/xyz/zhouxy/plusone/commons/constant/PatternConsts.java @@ -1,3 +1,19 @@ +/* + * Copyright 2022-2023 the original author or authors. + * + * 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 + * + * https://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. + */ + package xyz.zhouxy.plusone.commons.constant; import java.util.regex.Pattern; diff --git a/src/main/java/xyz/zhouxy/plusone/commons/constant/RegexConsts.java b/src/main/java/xyz/zhouxy/plusone/commons/constant/RegexConsts.java index 2daf331..2601c2a 100644 --- a/src/main/java/xyz/zhouxy/plusone/commons/constant/RegexConsts.java +++ b/src/main/java/xyz/zhouxy/plusone/commons/constant/RegexConsts.java @@ -1,3 +1,19 @@ +/* + * Copyright 2022-2023 the original author or authors. + * + * 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 + * + * https://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. + */ + package xyz.zhouxy.plusone.commons.constant; /** diff --git a/src/main/java/xyz/zhouxy/plusone/commons/exception/BaseException.java b/src/main/java/xyz/zhouxy/plusone/commons/exception/BaseException.java index 87cf1d7..1e4e930 100644 --- a/src/main/java/xyz/zhouxy/plusone/commons/exception/BaseException.java +++ b/src/main/java/xyz/zhouxy/plusone/commons/exception/BaseException.java @@ -1,3 +1,19 @@ +/* + * Copyright 2022-2023 the original author or authors. + * + * 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 + * + * https://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. + */ + package xyz.zhouxy.plusone.commons.exception; /** diff --git a/src/main/java/xyz/zhouxy/plusone/commons/exception/IWithCode.java b/src/main/java/xyz/zhouxy/plusone/commons/exception/IWithCode.java index 8671f54..d061c36 100644 --- a/src/main/java/xyz/zhouxy/plusone/commons/exception/IWithCode.java +++ b/src/main/java/xyz/zhouxy/plusone/commons/exception/IWithCode.java @@ -1,3 +1,19 @@ +/* + * Copyright 2022-2023 the original author or authors. + * + * 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 + * + * https://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. + */ + package xyz.zhouxy.plusone.commons.exception; /** diff --git a/src/main/java/xyz/zhouxy/plusone/commons/util/Arrays2.java b/src/main/java/xyz/zhouxy/plusone/commons/util/Arrays2.java index 829dbb2..95eb458 100644 --- a/src/main/java/xyz/zhouxy/plusone/commons/util/Arrays2.java +++ b/src/main/java/xyz/zhouxy/plusone/commons/util/Arrays2.java @@ -1,3 +1,19 @@ +/* + * Copyright 2022-2023 the original author or authors. + * + * 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 + * + * https://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. + */ + package xyz.zhouxy.plusone.commons.util; public abstract class Arrays2 { @@ -31,6 +47,14 @@ public abstract class Arrays2 { return values; } + public static double[] of(final double... values) { + return values; + } + + public static float[] of(final float... values) { + return values; + } + private Arrays2() { throw new IllegalStateException("Utility class"); } diff --git a/src/main/java/xyz/zhouxy/plusone/commons/util/EnumUtil.java b/src/main/java/xyz/zhouxy/plusone/commons/util/EnumUtil.java index 832d270..7135319 100644 --- a/src/main/java/xyz/zhouxy/plusone/commons/util/EnumUtil.java +++ b/src/main/java/xyz/zhouxy/plusone/commons/util/EnumUtil.java @@ -1,3 +1,19 @@ +/* + * Copyright 2022-2023 the original author or authors. + * + * 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 + * + * https://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. + */ + package xyz.zhouxy.plusone.commons.util; import java.util.Objects; diff --git a/src/main/java/xyz/zhouxy/plusone/commons/util/Enumeration.java b/src/main/java/xyz/zhouxy/plusone/commons/util/Enumeration.java index f94a4a8..b1255d3 100644 --- a/src/main/java/xyz/zhouxy/plusone/commons/util/Enumeration.java +++ b/src/main/java/xyz/zhouxy/plusone/commons/util/Enumeration.java @@ -1,3 +1,19 @@ +/* + * Copyright 2022-2023 the original author or authors. + * + * 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 + * + * https://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. + */ + package xyz.zhouxy.plusone.commons.util; import java.util.Map; @@ -43,9 +59,7 @@ public abstract class Enumeration> { @Override public String toString() { - StringBuilder builder = new StringBuilder(); - builder.append("[").append(value).append(": ").append(name).append("]"); - return builder.toString(); + return "[" + value + ": " + name + "]"; } protected static final class EnumerationValuesHolder> { diff --git a/src/main/java/xyz/zhouxy/plusone/commons/util/NumberUtil.java b/src/main/java/xyz/zhouxy/plusone/commons/util/NumberUtil.java index 7078ba3..088e005 100644 --- a/src/main/java/xyz/zhouxy/plusone/commons/util/NumberUtil.java +++ b/src/main/java/xyz/zhouxy/plusone/commons/util/NumberUtil.java @@ -1,3 +1,19 @@ +/* + * Copyright 2022-2023 the original author or authors. + * + * 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 + * + * https://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. + */ + package xyz.zhouxy.plusone.commons.util; /** @@ -11,7 +27,15 @@ public class NumberUtil { throw new IllegalStateException("Utility class"); } - public static int sum(int... numbers) { + public static int sum(short... numbers) { + int result = 0; + for (short number : numbers) { + result += number; + } + return result; + } + + public static long sum(int... numbers) { int result = 0; for (int number : numbers) { result += number; @@ -26,4 +50,20 @@ public class NumberUtil { } return result; } + + public static double sum(float... numbers) { + double result = 0; + for (double number : numbers) { + result += number; + } + return result; + } + + public static double sum(double... numbers) { + double result = 0; + for (double number : numbers) { + result += number; + } + return result; + } } diff --git a/src/main/java/xyz/zhouxy/plusone/commons/util/PageDTO.java b/src/main/java/xyz/zhouxy/plusone/commons/util/PageDTO.java index 9fa076a..fbd265a 100644 --- a/src/main/java/xyz/zhouxy/plusone/commons/util/PageDTO.java +++ b/src/main/java/xyz/zhouxy/plusone/commons/util/PageDTO.java @@ -1,3 +1,19 @@ +/* + * Copyright 2022-2023 the original author or authors. + * + * 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 + * + * https://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. + */ + package xyz.zhouxy.plusone.commons.util; import java.util.List; diff --git a/src/main/java/xyz/zhouxy/plusone/commons/util/PagingAndSortingQueryParams.java b/src/main/java/xyz/zhouxy/plusone/commons/util/PagingAndSortingQueryParams.java index 9dadeca..fb15ca6 100644 --- a/src/main/java/xyz/zhouxy/plusone/commons/util/PagingAndSortingQueryParams.java +++ b/src/main/java/xyz/zhouxy/plusone/commons/util/PagingAndSortingQueryParams.java @@ -1,3 +1,19 @@ +/* + * Copyright 2022-2023 the original author or authors. + * + * 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 + * + * https://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. + */ + package xyz.zhouxy.plusone.commons.util; import java.util.Arrays; diff --git a/src/main/java/xyz/zhouxy/plusone/commons/util/RegexUtil.java b/src/main/java/xyz/zhouxy/plusone/commons/util/RegexUtil.java index 0b0df2d..e9d1689 100644 --- a/src/main/java/xyz/zhouxy/plusone/commons/util/RegexUtil.java +++ b/src/main/java/xyz/zhouxy/plusone/commons/util/RegexUtil.java @@ -1,3 +1,19 @@ +/* + * Copyright 2022-2023 the original author or authors. + * + * 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 + * + * https://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. + */ + package xyz.zhouxy.plusone.commons.util; import java.util.regex.Pattern; diff --git a/src/main/java/xyz/zhouxy/plusone/commons/util/RestfulResult.java b/src/main/java/xyz/zhouxy/plusone/commons/util/RestfulResult.java index 674d77f..4f09d6e 100644 --- a/src/main/java/xyz/zhouxy/plusone/commons/util/RestfulResult.java +++ b/src/main/java/xyz/zhouxy/plusone/commons/util/RestfulResult.java @@ -1,3 +1,19 @@ +/* + * Copyright 2022-2023 the original author or authors. + * + * 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 + * + * https://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. + */ + package xyz.zhouxy.plusone.commons.util; import com.fasterxml.jackson.annotation.JsonInclude; diff --git a/src/test/java/xyz/zhouxy/plusone/commons/EnumerationTests.java b/src/test/java/xyz/zhouxy/plusone/commons/EnumerationTests.java new file mode 100644 index 0000000..6e950a7 --- /dev/null +++ b/src/test/java/xyz/zhouxy/plusone/commons/EnumerationTests.java @@ -0,0 +1,39 @@ +package xyz.zhouxy.plusone.commons; + +import static org.junit.jupiter.api.Assertions.assertEquals; + +import org.junit.jupiter.api.Test; + +import xyz.zhouxy.plusone.commons.util.Enumeration; + +class EnumerationTests { + + @Test + void testEnumeration() { + assertEquals(EntityStatus.AVAILABLE, EntityStatus.of(0)); + } +} + +final class EntityStatus extends Enumeration { + + private EntityStatus(int value, String name) { + super(value, name); + } + + // 常量 + public static final EntityStatus AVAILABLE = new EntityStatus(0, "正常"); + public static final EntityStatus DISABLED = new EntityStatus(1, "禁用"); + + private static final EnumerationValuesHolder ENUMERATION_VALUES = new EnumerationValuesHolder<>( + AVAILABLE, + DISABLED); + + public static EntityStatus of(int value) { + return ENUMERATION_VALUES.get(value); + } + + @Override + public String toString() { + return "EntityStatus" + super.toString(); + } +} \ No newline at end of file diff --git a/src/test/java/xyz/zhouxy/plusone/commons/util/NumberUtilTest.java b/src/test/java/xyz/zhouxy/plusone/commons/util/NumberUtilTest.java new file mode 100644 index 0000000..f330013 --- /dev/null +++ b/src/test/java/xyz/zhouxy/plusone/commons/util/NumberUtilTest.java @@ -0,0 +1,35 @@ +package xyz.zhouxy.plusone.commons.util; + +import static org.junit.jupiter.api.Assertions.assertFalse; +import static org.junit.jupiter.api.Assertions.assertTrue; + +import org.junit.jupiter.api.Test; + +class NumberUtilTest { + @Test + void testSum() { + long result = 0; + for (int i = 0; i < Integer.MAX_VALUE; i++) { + result += Short.MAX_VALUE; + } + System.out.println("Integer.MAX_VALUE: " + Integer.MAX_VALUE); + System.out.println("result: " + result); + assertFalse(Integer.MAX_VALUE > result); + + result = 0; + for (int i = 0; i < Integer.MAX_VALUE; i++) { + result += Short.MAX_VALUE; + } + System.out.println("Long.MAX_VALUE: " + Long.MAX_VALUE); + System.out.println("result: " + result); + assertTrue(Long.MAX_VALUE > result); + + result = 0; + for (int i = 0; i < Integer.MAX_VALUE; i++) { + result += Integer.MAX_VALUE; + } + System.out.println("Long.MAX_VALUE: " + Long.MAX_VALUE); + System.out.println("result: " + result); + assertTrue(Long.MAX_VALUE > result); + } +}