/*******************************************************************************
 * Copyright (c) 2005, 2007 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.core.context;


public enum EnumType {

	ORDINAL,
	STRING;
	

	public static EnumType fromJavaResourceModel(org.eclipse.jpt.core.resource.java.EnumType javaEnumType) {
		if (javaEnumType == org.eclipse.jpt.core.resource.java.EnumType.ORDINAL) {
			return ORDINAL;
		}
		else if (javaEnumType == org.eclipse.jpt.core.resource.java.EnumType.STRING) {
			return STRING;
		}
		return null;
	}
	
	public static org.eclipse.jpt.core.resource.java.EnumType toJavaResourceModel(EnumType enumType) {
		if (enumType == ORDINAL)  {
			return org.eclipse.jpt.core.resource.java.EnumType.ORDINAL;
		}
		else if (enumType == STRING) {
			return org.eclipse.jpt.core.resource.java.EnumType.STRING;
		}
		return null;
	}
	

	public static EnumType fromOrmResourceModel(org.eclipse.jpt.core.resource.orm.EnumType ormEnumType) {
		if (ormEnumType == org.eclipse.jpt.core.resource.orm.EnumType.ORDINAL) {
			return ORDINAL;
		}
		else if (ormEnumType == org.eclipse.jpt.core.resource.orm.EnumType.STRING) {
			return STRING;
		}
		return null;
	}
	
	public static org.eclipse.jpt.core.resource.orm.EnumType toOrmResourceModel(EnumType enumType) {
		if (enumType == ORDINAL)  {
			return org.eclipse.jpt.core.resource.orm.EnumType.ORDINAL;
		}
		else if (enumType == STRING) {
			return org.eclipse.jpt.core.resource.orm.EnumType.STRING;
		}
		return null;
	}
}
