/*******************************************************************************
 * Copyright (c) 2012, 2013 Oracle and/or its affiliates. All rights reserved.
 * This program and the accompanying materials are made available under the
 * terms of the Eclipse Public License v1.0 and Eclipse Distribution License v. 1.0
 * which accompanies this distribution.
 * The Eclipse Public License is available at http://www.eclipse.org/legal/epl-v10.html
 * and the Eclipse Distribution License is available at
 * http://www.eclipse.org/org/documents/edl-v10.php.
 *
 * Contributors:
 *     Oracle - initial API and implementation
 *
 ******************************************************************************/
package org.eclipse.persistence.tools.db;

import org.eclipse.persistence.tools.db.model.ELColumnPair;
import org.eclipse.persistence.tools.gen.db.Column;
import org.eclipse.persistence.tools.gen.db.ForeignKey.ColumnPair;

/**
 * The concrete implementation of {@link ColumnPair}.
 * <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.<p>
 *
 * @version 2.6
 */
public class EclipseLinkColumnPair implements ColumnPair {

	private ELColumnPair columnPair;
	private EclipseLinkTable table;

	public EclipseLinkColumnPair(EclipseLinkTable table, ELColumnPair columnPair) {
		super();
		this.table = table;
		this.columnPair = columnPair;
	}

	/**
	 * {@inheritDoc}
	 */
	@Override
	public Column getBaseColumn() {
		return new EclipseLinkColumn(this.table, this.columnPair.getSourceColumn());
	}

	/**
	 * {@inheritDoc}
	 */
	@Override
	public Column getReferencedColumn() {
		return new EclipseLinkColumn(this.table, this.columnPair.getSourceColumn());
	}
}