/*******************************************************************************
 * Copyright (c) 2004 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.wst.common.snippets.internal;

public class PluginRecord {

	protected String fPluginName = null;
	protected String fPluginVersion = null;


	/**
	 * @see Object#equals(Object)
	 */
	public boolean equals(Object obj) {
		PluginRecord record = (PluginRecord) obj;
		return record.getPluginName().equals(getPluginName()) && record.getPluginVersion().equals(getPluginVersion());
	}

	/**
	 * Gets the pluginName.
	 * 
	 * @return Returns a String
	 */
	public String getPluginName() {
		return fPluginName;
	}

	/**
	 * Gets the pluginVersion.
	 * 
	 * @return Returns a String
	 */
	public String getPluginVersion() {
		return fPluginVersion;
	}

	/**
	 * Sets the pluginName.
	 * 
	 * @param pluginName
	 *            The pluginName to set
	 */
	public void setPluginName(String pluginName) {
		fPluginName = pluginName;
	}

	/**
	 * Sets the pluginVersion.
	 * 
	 * @param pluginVersion
	 *            The pluginVersion to set
	 */
	public void setPluginVersion(String pluginVersion) {
		fPluginVersion = pluginVersion;
	}

	/**
	 * @see Object#toString()
	 */
	public String toString() {
		return getPluginName() + ":" + getPluginVersion(); //$NON-NLS-1$
	}

}