/******************************************************************************
 * Copyright (c) 2016 Alex Blewitt and others.
 *
 * This program and the accompanying materials
 * are made available under the terms of the Eclipse Public License 2.0
 * which accompanies this distribution, and is available at
 * https://www.eclipse.org/legal/epl-2.0/
 *
 * SPDX-License-Identifier: EPL-2.0
 *
 * Contributors:
 *     Alex Blewitt - initial API and implementation
 ******************************************************************************/

package org.eclipse.osgi.internal.loader.classpath;

/**
 * Stores a (title,version,vendor) triple for Specification-* or Implementation-*
 */
class TitleVersionVendor {
	/**
	 * Constant value when no title, version or vendor are specified for the package.
	 */
	static final TitleVersionVendor NONE = new TitleVersionVendor(null, null, null);
	private final String title;
	private final String version;
	private final String vendor;

	/**
	 * Factory for creating TitleVersionVendor objects.  If the given title, version and 
	 * vendor are <code>null</code> then {@link #NONE} is returned.
	 * @param title
	 * @param version
	 * @param vendor
	 * @return
	 */
	static TitleVersionVendor of(String title, String version, String vendor) {
		if (title == null && version == null && vendor == null) {
			return NONE;
		}
		return new TitleVersionVendor(title, version, vendor);
	}

	private TitleVersionVendor(String title, String version, String vendor) {
		this.title = title;
		this.version = version;
		this.vendor = vendor;
	}

	/**
	 * Returns the title
	 * @return the title
	 */
	String getTitle() {
		return title;
	}

	/**
	 * returns the version
	 * @return the version
	 */
	String getVersion() {
		return version;
	}

	/**
	 * returns the vendor
	 * @return the vendor
	 */
	String getVendor() {
		return vendor;
	}
}
