blob: e86355e2660ddd48d804f8082f275db8d88a9f67 [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2009, 2010 Oracle. 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:
* Oracle - initial API and implementation
******************************************************************************/
package org.eclipse.jpt.common.core;
import org.eclipse.core.runtime.content.IContentType;
/**
* Describes the file content type and version for JPA resources.
* This is a value object that defines an {@link #equals(Object)} method.
* <p>
* Provisional API: This interface is part of an interim API that is still
* under development and expected to change significantly before reaching
* stability. It is available at this early stage to solicit feedback from
* pioneering adopters on the understanding that any code that uses this API
* will almost certainly be broken (repeatedly) as the API evolves.
*
* @version 2.3
* @since 2.3
*/
public class JptResourceType
{
private final IContentType contentType;
private final String version;
/**
* Version used when version can not be determined or when there is no
* sense of version (e.g. Java).
*/
public static final String UNDETERMINED_VERSION = "<undetermined>"; //$NON-NLS-1$
public JptResourceType(IContentType contentType) {
this(contentType, UNDETERMINED_VERSION);
}
public JptResourceType(IContentType contentType, String version) {
super();
if (contentType == null) {
throw new NullPointerException("content type"); //$NON-NLS-1$
}
if (version == null) {
throw new NullPointerException("version"); //$NON-NLS-1$
}
this.contentType = contentType;
this.version = version;
}
public IContentType getContentType() {
return this.contentType;
}
public String getVersion() {
return this.version;
}
@Override
public boolean equals(Object obj) {
if (obj == this) {
return true;
}
if ((obj == null) || (obj.getClass() != this.getClass())) {
return false;
}
JptResourceType other = (JptResourceType) obj;
return this.contentType.equals(other.contentType) && this.version.equals(other.version);
}
@Override
public int hashCode() {
final int prime = 31;
int hash = 17;
hash = hash * prime + this.contentType.hashCode();
hash = hash * prime + this.version.hashCode();
return hash;
}
@Override
public String toString() {
StringBuilder sb = new StringBuilder();
sb.append(this.getClass().getSimpleName());
sb.append("(content = "); //$NON-NLS-1$
sb.append(this.contentType);
sb.append(", "); //$NON-NLS-1$
sb.append("version = "); //$NON-NLS-1$
sb.append(this.version);
sb.append(')');
return sb.toString();
}
}