blob: 7b5d70d11d895e66039780d5ba1586dff34dc897 [file] [log] [blame]
/**********************************************************************
* Copyright (c) 2000,2002 IBM Corporation and others.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Common Public License v0.5
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/cpl-v05.html
*
* Contributors:
* IBM - Initial API and implementation
**********************************************************************/
package org.eclipse.core.tests.resources;
import java.util.*;
import org.eclipse.core.resources.ICommand;
/**
* This class provides static comparison methods for various core
* objects that do not implement equals.
*/
public class Comparator {
public static boolean equals(byte[] b0, byte[] b1){
if(b0 == b1){
return true;
}
if(b0 == null || b1 == null){
return false;
}
if(b0.length != b1.length){
return false;
}
for(int i = 0; i < b0.length; ++i){
if(b0[i] != b1[i]){
return false;
}
}
return true;
}
public static boolean equals(Object[] obj0, Object[] obj1){
return equals(obj0, obj1, true);
}
public static boolean equals(Object[] obj0, Object[] obj1, boolean isOrderImportant){
if(obj0 == obj1){
return true;
}
if(obj0 == null || obj1 == null){
return false;
}
if(obj0.length != obj1.length){
return false;
}
if(isOrderImportant){
for(int i = 0; i < obj0.length; ++i){
if(!equals(obj0[i], obj1[i])){
return false;
}
}
} else {
boolean[] checkList = new boolean[obj0.length];
for(int i = 0; i < checkList.length; ++i){
checkList[i] = false;
}
for(int i = 0; i < obj0.length; ++i){
boolean found = false;
for(int j = 0; !found && j < obj1.length; ++j){
if(!checkList[j] && equals(obj0[i], obj1[j])){
checkList[j] = true;
found = true;
}
}
if(!found){
return false;
}
}
}
return true;
}
public static boolean equals(ICommand[] cs0, ICommand[] cs1) {
if (cs0 == cs1)
return true;
if (cs0 == null || cs1 == null)
return false;
if (cs0.length != cs1.length)
return false;
for (int i = 0; i < cs0.length; ++i) {
if (!cs0[i].getBuilderName().equals(cs1[i].getBuilderName()))
return false;
if (!equals(cs0[i].getArguments(), cs1[i].getArguments()))
return false;
}
return true;
}
public static boolean equals(Object obj0, Object obj1) {
if(obj0 == obj1){
return true;
}
if(obj0 == null || obj1 == null){
return false;
}
if(obj0 instanceof byte[] && obj1 instanceof byte[]){
return equals((byte[])obj0, (byte[])obj1);
} else if(obj0 instanceof Enumeration && obj1 instanceof Enumeration){
return equals((Enumeration)obj0, (Enumeration)obj1);
} else if(obj0 instanceof Hashtable && obj1 instanceof Hashtable){
return equals((Hashtable)obj0, (Hashtable)obj1);
} else if(obj0 instanceof ICommand[] && obj1 instanceof ICommand[]){
return equals((ICommand[])obj0, (ICommand[])obj1);
} else if(obj0 instanceof Object[] && obj1 instanceof Object[]){
return equals((Object[])obj0, (Object[])obj1);
} else if(obj0 instanceof Vector && obj1 instanceof Vector){
return equals((Vector)obj0, (Vector)obj1);
}
return obj0.equals(obj1);
}
public static boolean equals(Enumeration e, Object[] obj){
return equals(e, obj, true);
}
public static boolean equals(Enumeration e, Object[] obj1, boolean isOrderImportant){
Vector v = new Vector();
while(e.hasMoreElements()){
v.addElement(e.nextElement());
}
Object[] obj0 = new Object[v.size()];
v.copyInto(obj0);
return equals(obj0, obj1, isOrderImportant);
}
public static boolean equals(Enumeration e0, Enumeration e1) {
if(e0 == e1){
return true;
}
if(e0 == null || e1 == null){
return false;
}
while(e0.hasMoreElements() && e1.hasMoreElements()){
if (!equals(e0.nextElement(), e1.nextElement())){
return false;
}
}
if(e0.hasMoreElements() || e1.hasMoreElements()){
return false;
}
return true;
}
public static boolean equals(Hashtable ht0, Hashtable ht1) {
if(ht0 == ht1){
return true;
}
if(ht0 == null || ht1 == null){
return false;
}
if(ht0.size() != ht1.size()){
return false;
}
Enumeration keys0 = ht0.keys();
while(keys0.hasMoreElements()){
Object key = keys0.nextElement();
if(!equals(ht0.get(key), ht1.get(key))){
return false;
}
}
return true;
}
public static boolean equals(Vector c0, Vector c1) {
if(c0 == c1){
return true;
}
if(c0 == null || c1 == null){
return false;
}
if(!equals(c0.elements(), c1.elements())){
return false;
}
return true;
}
}