/*******************************************************************************
* Copyright (c) 2004, 2011 Intel 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:
* Intel Corporation - Initial API and implementation
*******************************************************************************/
package org.eclipse.cdt.managedbuilder.internal.core;
import org.eclipse.cdt.managedbuilder.core.ManagedBuildManager;
public class MatchKey<T extends BuildObject> {
private T buildObject;
public MatchKey(T builder) {
this.buildObject = builder;
}
@Override
public boolean equals(Object obj) {
if(obj == this)
return true;
if(!(obj instanceof MatchKey))
return false;
@SuppressWarnings("unchecked")
MatchKey<T> other = (MatchKey<T>)obj;
return performMatchComparison(other.buildObject);
}
@Override
public int hashCode() {
String name = buildObject.getName();
if(name == null)
name = buildObject.getId();
int code = name.hashCode();
String version = ManagedBuildManager.getVersionFromIdAndVersion(buildObject.getId());
if(version != null)
code += version.hashCode();
return code;
}
boolean performMatchComparison(T bo){
if(bo == null)
return false;
if(bo == buildObject)
return true;
// if(bo.isReal() && buildObject.isReal())
// return false;
// if(!bo.getToolCommand().equals(buildObject.getToolCommand()))
// return false;
if(!bo.getName().equals(buildObject.getName()))
return false;
String thisVersion = ManagedBuildManager.getVersionFromIdAndVersion(buildObject.getId());
String otherVersion = ManagedBuildManager.getVersionFromIdAndVersion(bo.getId());
if(thisVersion == null || thisVersion.length() == 0){
if(otherVersion != null && otherVersion.length() != 0)
return false;
} else {
if(!thisVersion.equals(otherVersion))
return false;
}
return true;
/* IOption options[] = buildObject.getOptions();
IOption otherOptions[] = bo.getOptions();
if(!ListComparator.match(options,
otherOptions,
new Comparator(){
public boolean equal(Object o1, Object o2){
return ((Option)o1).matches((Option)o2);
}
}))
return false;
return true;
*/
}
}