/*******************************************************************************
 * Copyright (c) 2006, 2008 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;

/**
 * 
 * 
 * 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.
 */
public interface BasicMapping extends AttributeMapping, ColumnMapping, Fetchable, Nullable
{
	FetchType DEFAULT_FETCH_TYPE = FetchType.EAGER;

	boolean isLob();

	void setLob(boolean value);
		String LOB_PROPERTY = "lobProperty";
	
	EnumType getEnumerated();
	
	EnumType getDefaultEnumerated();
		String DEFAULT_ENUMERATED_PROPERTY = "defaultEnumeratedProperty";
		EnumType DEFAULT_ENUMERATED = EnumType.ORDINAL;

	EnumType getSpecifiedEnumerated();
	void setSpecifiedEnumerated(EnumType newSpecifiedEnumerated);
		String SPECIFIED_ENUMERATED_PROPERTY = "specifiedEnumeratedProperty";

}
