/* * AndFHEM - Open Source Android application to control a FHEM home automation * server. * * Copyright (c) 2011, Matthias Klass or third-party contributors as * indicated by the @author tags or express copyright attribution * statements applied by the authors. All third-party contributions are * distributed under license by Red Hat Inc. * * This copyrighted material is made available to anyone wishing to use, modify, * copy, or redistribute it subject to the terms and conditions of the GNU GENERAL PUBLIC LICENSE, as published by the Free Software Foundation. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU GENERAL PUBLIC LICENSE * for more details. * * You should have received a copy of the GNU GENERAL PUBLIC LICENSE * along with this distribution; if not, write to: * Free Software Foundation, Inc. * 51 Franklin Street, Fifth Floor * Boston, MA 02110-1301 USA */ package li.klass.fhem.util; import java.util.ArrayList; import java.util.Arrays; import java.util.List; public class ArrayUtil { public static <T> boolean isEmpty(T[] array) { return array == null || array.length == 0; } @SafeVarargs public static <T> boolean contains(T[] array, T... toLookFor) { if (array == null) return false; List<T> searchList = new ArrayList<>(Arrays.asList(toLookFor)); for (T element : array) { if (searchList.contains(element)) { searchList.remove(element); } if (searchList.size() == 0) { return true; } } return false; } public static boolean containsIgnoreCase(String[] array, String value) { if (array == null) return false; for (String element : array) { if (value == null && element == null || element != null && element.equalsIgnoreCase(value)) { return true; } } return false; } public static String join(String[] array, String delimiter) { StringBuilder builder = new StringBuilder(); for (int i = 0; i < array.length; i++) { if (i != 0) builder.append(delimiter); builder.append(array[i]); } return builder.toString(); } public static String[] addToArray(String[] array, String newElement) { int length = array == null ? 1 : array.length + 1; String[] newArray = new String[length]; if (array != null) { System.arraycopy(array, 0, newArray, 0, array.length); newArray[array.length] = newElement; } else { newArray[0] = newElement; } return newArray; } public static String[] removeFromArray(String[] array, String toRemove) { int counter = 0; String[] newArray = new String[array.length]; for (String element : array) { if (!element.equals(toRemove)) { newArray[counter++] = element; } } String[] ret = new String[counter]; System.arraycopy(newArray, 0, ret, 0, ret.length); return ret; } /** * Copy an array. Note that we cannot use {@link Arrays#copyOf}, as this is not supported in all Android versions. * * @param toCopy array to copy * @return copy */ public static String[] copyOf(String[] toCopy) { String[] copy = new String[toCopy.length]; System.arraycopy(toCopy, 0, copy, 0, toCopy.length); return copy; } }