package org.objectstyle.wolips.baseforplugins.util;
import java.util.HashMap;
import java.util.HashSet;
import java.util.Iterator;
import java.util.Map;
import java.util.Set;
public class ComparisonUtils {
public static boolean equals(Object _o1, Object _o2) {
boolean equals;
if (_o1 == null) {
equals = (_o2 == null);
} else {
equals = (_o1 == _o2);
if (!equals) {
equals = _o1.equals(_o2);
}
}
return equals;
}
public static boolean equals(String _o1, String _o2, boolean _blankIsNull) {
boolean equals = ComparisonUtils.equals(_o1, _o2);
if (!equals && _blankIsNull) {
equals = ((_o1 == null || _o1.length() == 0) && (_o2 == null || _o2.length() == 0));
}
return equals;
}
public static boolean equalsIgnoreCaseIfStrings(Object o1, Object o2) {
if (o1 instanceof String && o2 instanceof String) {
return equalsIgnoreCase((String)o1, (String)o2);
}
return equals(o1, o2);
}
public static boolean equalsIgnoreCase(String _o1, String _o2) {
boolean equals;
if (_o1 == null) {
equals = (_o2 == null);
} else {
equals = (_o1 == _o2);
if (!equals) {
equals = _o1.equalsIgnoreCase(_o2);
}
}
return equals;
}
public static boolean equalsIgnoreCase(String _o1, String _o2, boolean _blankIsNull) {
boolean equals = ComparisonUtils.equalsIgnoreCase(_o1, _o2);
if (!equals && _blankIsNull) {
equals = ((_o1 == null || _o1.length() == 0) && (_o2 == null || _o2.length() == 0));
}
return equals;
}
private static Object deepCopyVanilla(Object original) {
if (original instanceof Map) {
Map<Object, Object> newMap = new HashMap<Object, Object>();
Iterator iterator = ((Map) original).entrySet().iterator();
while (iterator.hasNext()) {
Map.Entry entry = (Map.Entry) iterator.next();
newMap.put(entry.getKey(), deepCopyVanilla(entry.getValue()));
}
return newMap;
} else if (original instanceof Set) {
Set<Object> newSet = new HashSet<Object>();
Iterator iterator = ((Set) original).iterator();
while (iterator.hasNext()) {
newSet.add(deepCopyVanilla(iterator.next()));
}
return newSet;
} else if (original instanceof Number) {
return original.toString();
} else {
return original;
}
}
public static boolean deepEquals(Object one, Object two) {
if (one == null && two == null) {
return true;
} else if (one == null || two == null) {
return false;
} else {
return deepCopyVanilla(one).equals(deepCopyVanilla(two));
}
}
}