package org.emdev.utils;
public final class CompareUtils {
/**
* Fake constructor.
*/
private CompareUtils() {
}
/**
* Compare two boolean values.
*
* @param val1
* first value
* @param val2
* second value
* @return on of the following values:
* <ul>
* <li><code>-1</code> if the first value is <code>false</code> and the second one is <code>true</code></li>
* <li><code>0</code> if both values are equal</li>
* <li><code>1</code> if the first value is <code>true</code> and the second one is <code>false</code></li>
* </ul>
*/
public static int compare(final boolean val1, final boolean val2) {
return compare(val1 ? 1 : 0, val2 ? 1 : 0);
}
/**
* Compare two integer values.
*
* @param val1
* first value
* @param val2
* second value
* @return on of the following values:
* <ul>
* <li><code>-1</code> if the first value is less than the second one</li>
* <li><code>0</code> if both values are equal</li>
* <li><code>1</code> if the first value is greater than the second one</li>
* </ul>
*/
public static int compare(final int val1, final int val2) {
return val1 < val2 ? -1 : val1 > val2 ? 1 : 0;
}
/**
* Compare two long values.
*
* @param val1
* first value
* @param val2
* second value
* @return on of the following values:
* <ul>
* <li><code>-1</code> if the first value is less than the second one</li>
* <li><code>0</code> if both values are equal</li>
* <li><code>1</code> if the first value is greater than the second one</li>
* </ul>
*/
public static int compare(final long val1, final long val2) {
return val1 < val2 ? -1 : val1 > val2 ? 1 : 0;
}
/**
* Compare two float values.
*
* @param val1
* first value
* @param val2
* second value
* @return on of the following values:
* <ul>
* <li><code>-1</code> if the first value is less than the second one</li>
* <li><code>0</code> if both values are equal</li>
* <li><code>1</code> if the first value is greater than the second one</li>
* </ul>
*/
public static int compare(final float val1, final float val2) {
return val1 < val2 ? -1 : val1 > val2 ? 1 : 0;
}
/**
* Compares two object.
*
* @param t1
* first object
* @param t2
* second object
* @return on of the following values:
* <ul>
* <li><code>-1</code> if the first value is less than the second one</li>
* <li><code>0</code> if both values are equal</li>
* <li><code>1</code> if the first value is greater than the second one</li>
* </ul>
*/
public static <T extends Comparable<T>> int compare(final T t1, final T t2) {
if (t1 == null) {
return t2 == null ? 0 : -1;
}
if (t2 == null) {
return 1;
}
return t1.compareTo(t2);
}
/**
* Compares two objects.
*
* @param o1
* first object
* @param o2
* second object
* @return if objects are equal or both are null
*/
public static boolean equals(final Object o1, final Object o2) {
if (o1 == null) {
return o2 == null ? true : false;
}
return o1.equals(o2);
}
/**
* Compares two strings.
*
* @param s1
* first string
* @param s2
* second string
* @return if strings are equal or both are null
*/
public static boolean equals(final String s1, final String s2) {
if (LengthUtils.isEmpty(s1)) {
return LengthUtils.isEmpty(s2) ? true : false;
}
return s1.equals(s2);
}
/**
* Compares two arrays of strings.
*
* @param s1
* first string array
* @param s2
* second string array
* @return if all strings are equal or both are null
*/
public static boolean equals(final String[] s1, final String[] s2) {
final int length1 = LengthUtils.length(s1);
final int length2 = LengthUtils.length(s2);
if (length1 != length2) {
return false;
}
for (int i = 0; i < length1; i++) {
if (!equals(s1[i], s2[i])) {
return false;
}
}
return true;
}
/**
* Compares two strings ignoring char cases.
*
* @param s1
* first string
* @param s2
* second string
* @return if strings are equal or both are null
*/
public static boolean equalsIgnoreCase(final String s1, final String s2) {
if (LengthUtils.isEmpty(s1)) {
return LengthUtils.isEmpty(s2) ? true : false;
}
return s1.equalsIgnoreCase(s2);
}
/**
* Compares two arrays of strings ignoring char cases.
*
* @param s1
* first string array
* @param s2
* second string array
* @return if all strings are equal or both are null
*/
public static boolean equalsIgnoreCase(final String[] s1, final String[] s2) {
final int length1 = LengthUtils.length(s1);
final int length2 = LengthUtils.length(s2);
if (length1 != length2) {
return false;
}
for (int i = 0; i < length1; i++) {
if (!equalsIgnoreCase(s1[i], s2[i])) {
return false;
}
}
return true;
}
}