/******************************************************************************* * Copyright (c) 2000, 2005 IBM Corporation and others. * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at * http://www.eclipse.org/legal/epl-v10.html * * Contributors: * IBM Corporation - initial API and implementation *******************************************************************************/ package org.eclipse.core.internal.watson; /** * This is what you would expect for an element tree comparator. Clients of the element tree that * want specific comparison behaviour must define their own element comparator (without subclassing * or otherwise extending this comparator). Internal element tree operations rely on the behaviour * of this type, and the ElementTree maintainer reserves the right to change its behaviour as * necessary. */ public final class DefaultElementComparator implements IElementComparator { private static DefaultElementComparator singleton; /** * Force clients to use the singleton */ protected DefaultElementComparator() { super(); } /** * Returns the type of change. */ public int compare(Object oldInfo, Object newInfo) { if (oldInfo == null && newInfo == null) return 0; if (oldInfo == null || newInfo == null) return 1; return testEquality(oldInfo, newInfo) ? 0 : 1; } /** * Returns the singleton instance */ public static IElementComparator getComparator() { if (singleton == null) { singleton= new DefaultElementComparator(); } return singleton; } /** * Makes a comparison based on equality */ protected boolean testEquality(Object oldInfo, Object newInfo) { if (oldInfo == null && newInfo == null) return true; if (oldInfo == null || newInfo == null) return false; return oldInfo.equals(newInfo); } }