From 1c150e207ab0d2e9fa96b976a1a5ee49836f5f86 Mon Sep 17 00:00:00 2001 From: Darin Kelkhoff Date: Thu, 19 Jan 2023 16:11:54 -0600 Subject: [PATCH] add nonNullArray and mergeLists --- .../backend/core/utils/CollectionUtils.java | 37 +++++++++++++++ .../core/utils/CollectionUtilsTest.java | 45 +++++++++++++++++++ 2 files changed, 82 insertions(+) diff --git a/qqq-backend-core/src/main/java/com/kingsrook/qqq/backend/core/utils/CollectionUtils.java b/qqq-backend-core/src/main/java/com/kingsrook/qqq/backend/core/utils/CollectionUtils.java index c75fa727..08526658 100755 --- a/qqq-backend-core/src/main/java/com/kingsrook/qqq/backend/core/utils/CollectionUtils.java +++ b/qqq-backend-core/src/main/java/com/kingsrook/qqq/backend/core/utils/CollectionUtils.java @@ -415,6 +415,22 @@ public class CollectionUtils + /******************************************************************************* + ** Returns the input array, unless it was null - in which case a new (empty) array is returned. + ** + ** Meant to help avoid null checks on foreach loops. + *******************************************************************************/ + public static T[] nonNullArray(T[] array) + { + if(array == null) + { + return (T[]) new ArrayList().toArray(); + } + return (array); + } + + + /******************************************************************************* ** Returns the input list, unless it was null - in which case a new array list is returned. ** @@ -513,4 +529,25 @@ public class CollectionUtils return (mapper.convertValue(o, Map.class)); } + + + /******************************************************************************* + ** + *******************************************************************************/ + public static List mergeLists(List... lists) + { + List rs = new ArrayList<>(); + if(lists != null) + { + for(List list : lists) + { + if(list != null) + { + rs.addAll(list); + } + } + } + return (rs); + } + } diff --git a/qqq-backend-core/src/test/java/com/kingsrook/qqq/backend/core/utils/CollectionUtilsTest.java b/qqq-backend-core/src/test/java/com/kingsrook/qqq/backend/core/utils/CollectionUtilsTest.java index 06dd2475..860a4ba6 100644 --- a/qqq-backend-core/src/test/java/com/kingsrook/qqq/backend/core/utils/CollectionUtilsTest.java +++ b/qqq-backend-core/src/test/java/com/kingsrook/qqq/backend/core/utils/CollectionUtilsTest.java @@ -30,6 +30,7 @@ import java.util.Map; import java.util.function.Function; import com.kingsrook.qqq.backend.core.BaseTest; import org.junit.jupiter.api.Test; +import static org.junit.jupiter.api.Assertions.assertArrayEquals; import static org.junit.jupiter.api.Assertions.assertEquals; import static org.junit.jupiter.api.Assertions.assertFalse; import static org.junit.jupiter.api.Assertions.assertNull; @@ -499,4 +500,48 @@ class CollectionUtilsTest extends BaseTest assertEquals(list, accumulator); } + + + /******************************************************************************* + ** + *******************************************************************************/ + @Test + void testNonNullArray() + { + assertArrayEquals(new Integer[] { }, CollectionUtils.nonNullArray(null)); + assertArrayEquals(new Integer[] { }, CollectionUtils.nonNullArray(new Integer[] { })); + assertArrayEquals(new Integer[] { 1, 2, 3 }, CollectionUtils.nonNullArray(new Integer[] { 1, 2, 3 })); + } + + + + /******************************************************************************* + ** + *******************************************************************************/ + @Test + void testNonNullList() + { + assertEquals(List.of(), CollectionUtils.nonNullList(null)); + assertEquals(List.of(), CollectionUtils.nonNullList(List.of())); + assertEquals(List.of(1, 2, 3), CollectionUtils.nonNullList(List.of(1, 2, 3))); + } + + + + /******************************************************************************* + ** + *******************************************************************************/ + @Test + void testMergeLists() + { + assertEquals(List.of(), CollectionUtils.mergeLists()); + assertEquals(List.of(), CollectionUtils.mergeLists((List) null)); + assertEquals(List.of(), CollectionUtils.mergeLists((List[]) null)); + assertEquals(List.of(), CollectionUtils.mergeLists(List.of())); + assertEquals(List.of(1, 2, 3), CollectionUtils.mergeLists(List.of(1, 2, 3))); + assertEquals(List.of(1, 2, 3), CollectionUtils.mergeLists(List.of(1, 2), List.of(3))); + assertEquals(List.of(1, 2, 3), CollectionUtils.mergeLists(List.of(1, 2), null, List.of(3))); + assertEquals(List.of(1, 2, 3), CollectionUtils.mergeLists(null, List.of(1, 2, 3), null)); + } + }