/******************************************************************************* * Copyright (c) 2010 Neil Bartlett. * 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: * Neil Bartlett - initial API and implementation ******************************************************************************/ package org.bndtools.builder; import org.eclipse.core.runtime.IPath; import aQute.bnd.version.Version; /** * <p> * A bundle exported by a project. * </p> * <p> * This class implements the {@link Comparable} interface. Instances are compared first on the lexical ordering of their * symbolic names, and if these are equal then on their version. * </p> * * @author Neil Bartlett */ class ExportedBundle implements Comparable<ExportedBundle> { private final IPath path; private final String symbolicName; private final Version version; private final IPath sourceBndFilePath; public ExportedBundle(IPath bundlePath, IPath sourceBndFilePath, String symbolicName, Version version) { this.path = bundlePath; this.sourceBndFilePath = sourceBndFilePath; this.symbolicName = symbolicName; this.version = version; } public IPath getPath() { return path; } public IPath getSourceBndFilePath() { return sourceBndFilePath; } public String getSymbolicName() { return symbolicName; } public Version getVersion() { return version; } @Override public String toString() { return "ExportedBundle [symbolicName=" + symbolicName + ", version=" + version + ", path=" + path + "]"; } public int compareTo(ExportedBundle other) { int diff = this.getSymbolicName().compareTo(other.getSymbolicName()); if (diff == 0) { Version version1 = this.getVersion(); if (version1 == null) version1 = new Version(0); Version version2 = other.getVersion(); if (version2 == null) version2 = new Version(0); diff = version1.compareTo(version2); } return diff; } }