/*
* (c) Copyright Reserved EVRYTHNG Limited 2016. All rights reserved.
* Use of this material is subject to license.
* Copying and unauthorised use of this material strictly prohibited.
*/
package com.evrythng.thng.resource.model.utils;
import java.util.Comparator;
/**
* Provides utility method for objects.
*/
public class ObjectUtils {
public static boolean nullSafeEquals(final Object a, final Object b) {
if (a == null && b == null) {
return true;
}
return !(a == null || b == null) && a.equals(b);
}
/**
* NOTE: {@code null} is treated as the smallest value.
*/
public static <T> int nullSafeCompare(final T a, final T b, final Comparator<? super T> comp) {
if (a == null && b == null) {
return 0;
}
if (a == null) {
return -1;
}
if (b == null) {
return 1;
}
return normalizeCompareResult(comp.compare(a, b));
}
/**
* NOTE: {@code null} is treated as the smallest value.
*/
public static <T extends Comparable<T>> int nullSafeCompare(final T a, final T b) {
if (a == null && b == null) {
return 0;
}
if (a == null) {
return -1;
}
if (b == null) {
return 1;
}
return normalizeCompareResult(a.compareTo(b));
}
private static int normalizeCompareResult(final int x) {
return x > 0 ? 1 : x < 0 ? -1 : 0;
}
}