package org.emdev.utils;
import java.util.Collection;
import java.util.Map;
import org.json.JSONArray;
public final class LengthUtils {
/** Empty string singleton. */
private static final String SAFE_STRING = "";
/**
* Fake constructor.
*/
private LengthUtils() {
}
/**
* Checks if the given string is empty.
*
* @param s
* string
* @return <code>true</code> if the given reference is <code>null</code> or string is empty
*/
public static boolean isEmpty(final String s) {
return length(s) == 0;
}
/**
* Checks if any of given strings are empty.
*
* @param strings
* strings to test
* @return <code>true</code> if any of given strings are <code>null</code> or empty
*/
public static boolean isAnyEmpty(final String... strings) {
for (final String s : strings) {
if (length(s) == 0) {
return true;
}
}
return false;
}
/**
* Checks if all of given strings are empty.
*
* @param strings
* strings to test
* @return <code>true</code> if all of given strings are <code>null</code> or empty
*/
public static boolean isAllEmpty(final String... strings) {
for (final String s : strings) {
if (length(s) != 0) {
return false;
}
}
return true;
}
/**
* Checks if all of given strings are not empty.
*
* @param strings
* strings to test
* @return <code>true</code> if all of given strings are not <code>null</code> and not empty
*/
public static boolean isAllNotEmpty(final String... strings) {
for (final String s : strings) {
if (length(s) == 0) {
return false;
}
}
return true;
}
/**
* Checks if the given string is not empty.
*
* @param s
* string
* @return <code>true</code> if the given reference is not <code>null</code> and string is not empty
*/
public static boolean isNotEmpty(final String s) {
return length(s) > 0;
}
/**
* Checks if the given array is empty.
*
* @param array
* array to check
* @return <code>true</code> if the given reference is <code>null</code> or array is empty
*/
public static boolean isEmpty(final Object[] array) {
return length(array) == 0;
}
/**
* Checks if the given array is empty.
*
* @param array
* array to check
* @return <code>true</code> if the given reference is <code>null</code> or array is empty
*/
public static boolean isEmpty(final JSONArray array) {
return length(array) == 0;
}
/**
* Checks if the given array is not empty.
*
* @param array
* array to check
* @return <code>true</code> if the given reference is not <code>null</code> and string is not empty
*/
public static boolean isNotEmpty(final boolean[] array) {
return length(array) > 0;
}
/**
* Checks if the given array is empty.
*
* @param array
* array to check
* @return <code>true</code> if the given reference is <code>null</code> or array is empty
*/
public static boolean isEmpty(final boolean[] array) {
return length(array) == 0;
}
/**
* Checks if the given array is empty.
*
* @param array
* array to check
* @return <code>true</code> if the given reference is <code>null</code> or array is empty
*/
public static boolean isEmpty(final byte[] array) {
return length(array) == 0;
}
/**
* Checks if the given array is empty.
*
* @param array
* array to check
* @return <code>true</code> if the given reference is <code>null</code> or array is empty
*/
public static boolean isEmpty(final short[] array) {
return length(array) == 0;
}
/**
* Checks if the given array is empty.
*
* @param array
* array to check
* @return <code>true</code> if the given reference is <code>null</code> or array is empty
*/
public static boolean isEmpty(final int[] array) {
return length(array) == 0;
}
/**
* Checks if the given array is empty.
*
* @param array
* array to check
* @return <code>true</code> if the given reference is <code>null</code> or array is empty
*/
public static boolean isEmpty(final long[] array) {
return length(array) == 0;
}
/**
* Checks if the given array is empty.
*
* @param array
* array to check
* @return <code>true</code> if the given reference is <code>null</code> or array is empty
*/
public static boolean isEmpty(final float[] array) {
return length(array) == 0;
}
/**
* Checks if the given array is empty.
*
* @param array
* array to check
* @return <code>true</code> if the given reference is <code>null</code> or array is empty
*/
public static boolean isEmpty(final double[] array) {
return length(array) == 0;
}
/**
* Checks if the given collection is empty.
*
* @param c
* collection to check
* @return <code>true</code> if the given reference is <code>null</code> or collection is empty
*/
public static boolean isEmpty(final Collection<?> c) {
return c == null || c.isEmpty();
}
/**
* Checks if the given map is empty.
*
* @param map
* map to check
* @return <code>true</code> if the given reference is <code>null</code> or map is empty
*/
public static boolean isEmpty(final Map<?, ?> map) {
return map == null || map.isEmpty();
}
/**
* Checks if the given array is not empty.
*
* @param array
* array to check
* @return <code>true</code> if the given reference is not <code>null</code> and array is not empty
*/
public static boolean isNotEmpty(final byte[] array) {
return length(array) > 0;
}
/**
* Checks if the given array is not empty.
*
* @param array
* array to check
* @return <code>true</code> if the given reference is not <code>null</code> and array is not empty
*/
public static boolean isNotEmpty(final short[] array) {
return length(array) > 0;
}
/**
* Checks if the given array is not empty.
*
* @param array
* array to check
* @return <code>true</code> if the given reference is not <code>null</code> and array is not empty
*/
public static boolean isNotEmpty(final int[] array) {
return length(array) > 0;
}
/**
* Checks if the given array is not empty.
*
* @param array
* array to check
* @return <code>true</code> if the given reference is not <code>null</code> and array is not empty
*/
public static boolean isNotEmpty(final long[] array) {
return length(array) > 0;
}
/**
* Checks if the given array is not empty.
*
* @param array
* array to check
* @return <code>true</code> if the given reference is not <code>null</code> and array is not empty
*/
public static boolean isNotEmpty(final float[] array) {
return length(array) > 0;
}
/**
* Checks if the given array is not empty.
*
* @param array
* array to check
* @return <code>true</code> if the given reference is not <code>null</code> and array is not empty
*/
public static boolean isNotEmpty(final double[] array) {
return length(array) > 0;
}
/**
* Checks if the given array is not empty.
*
* @param array
* array to check
* @return <code>true</code> if the given reference is not <code>null</code> and array is not empty
*/
public static boolean isNotEmpty(final Object[] array) {
return length(array) > 0;
}
/**
* Checks if the given array is not empty.
*
* @param array
* array to check
* @return <code>true</code> if the given reference is not <code>null</code> and array is not empty
*/
public static boolean isNotEmpty(final JSONArray array) {
return length(array) > 0;
}
/**
* Checks if the given collection is not empty.
*
* @param c
* collection to check
* @return <code>true</code> if the given reference is not <code>null</code> and collection is not empty
*/
public static boolean isNotEmpty(final Collection<?> c) {
return c != null && !c.isEmpty();
}
/**
* Checks if the given map is not empty.
*
* @param map
* map to check
* @return <code>true</code> if the given reference is not <code>null</code> and map is not empty
*/
public static boolean isNotEmpty(final Map<?, ?> map) {
return map != null && !map.isEmpty();
}
/**
* Safely calculates a string length.
*
* @param s
* string
* @return real string length or <code>0</code> if reference is <code>null</code>
*/
public static int length(final String s) {
return s != null ? s.length() : 0;
}
/**
* Safely calculates an array length.
*
* @param arr
* array
* @return real array length or <code>0</code> if reference is <code>null</code>
*/
public static int length(final Object[] arr) {
return arr != null ? arr.length : 0;
}
/**
* Safely calculates an array length.
*
* @param arr
* array
* @return real array length or <code>0</code> if reference is <code>null</code>
*/
public static int length(final JSONArray arr) {
return arr != null ? arr.length() : 0;
}
/**
* Safely calculates an array length.
*
* @param arr
* array
* @return real array length or <code>0</code> if reference is <code>null</code>
*/
public static int length(final boolean[] arr) {
return arr != null ? arr.length : 0;
}
/**
* Safely calculates a collection length.
*
* @param c
* collection to check
* @return real collection length or <code>0</code> if reference is <code>null</code>
*/
public static int length(final Collection<?> c) {
return c != null ? c.size() : 0;
}
/**
* Safely calculates a map length.
*
* @param map
* map to check
* @return real map length or <code>0</code> if reference is <code>null</code>
*/
public static int length(final Map<?, ?> map) {
return map != null ? map.size() : 0;
}
/**
* Safely calculates an array length.
*
* @param arr
* array
* @return real array length or <code>0</code> if reference is <code>null</code>
*/
public static int length(final byte[] arr) {
return arr != null ? arr.length : 0;
}
/**
* Safely calculates an array length.
*
* @param arr
* array
* @return real array length or <code>0</code> if reference is <code>null</code>
*/
public static int length(final short[] arr) {
return arr != null ? arr.length : 0;
}
/**
* Safely calculates an array length.
*
* @param arr
* array
* @return real array length or <code>0</code> if reference is <code>null</code>
*/
public static int length(final int[] arr) {
return arr != null ? arr.length : 0;
}
/**
* Safely calculates an array length.
*
* @param arr
* array
* @return real array length or <code>0</code> if reference is <code>null</code>
*/
public static int length(final long[] arr) {
return arr != null ? arr.length : 0;
}
/**
* Safely calculates an array length.
*
* @param arr
* array
* @return real array length or <code>0</code> if reference is <code>null</code>
*/
public static int length(final float[] arr) {
return arr != null ? arr.length : 0;
}
/**
* Safely calculates an array length.
*
* @param arr
* array
* @return real array length or <code>0</code> if reference is <code>null</code>
*/
public static int length(final double[] arr) {
return arr != null ? arr.length : 0;
}
/**
* Returns empty string if the original one is null.
*
* @param original
* original string
* @return string
*/
public static String unsafeString(final String original) {
return length(original) == 0 ? null : original;
}
/**
* Returns empty string if the original one is null.
*
* @param original
* original string
* @return string
*/
public static String safeString(final String original) {
return safeString(original, safeString());
}
/**
* Returns default string if the original one is empty.
*
* @param original
* original string
* @param defaultValue
* default string value
* @return string
*/
public static String safeString(final String original, final String defaultValue) {
return isNotEmpty(original) ? original : defaultValue;
}
/**
* Returns empty safe string.
*
* @return a safe empty string
*/
public static String safeString() {
return SAFE_STRING;
}
/**
* Converts objects to array.
*
* @param <T>
* type of objects in the array
* @param objects
* objects to converts
* @return array
*/
public static <T> T[] toArray(final T... objects) {
return objects;
}
/**
* Converts object to string.
*
* @param obj
* object
* @return string
*/
public static String toString(final Object obj) {
return obj != null ? obj.toString() : safeString();
}
/**
* Returns a hash code value for the object.
*
* @param obj
* the obj
* @return the int
*/
public static int hashCode(final Object obj) {
return obj != null ? obj.hashCode() : 0;
}
}