/***********************************************************************
 * Copyright (c) 2008, 2010 by SAP AG, Walldorf. 
 * 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:
 *     SAP AG - initial API and implementation
 ***********************************************************************/
package org.eclipse.jst.jee.model.internal.mergers;

import java.util.List;

import org.eclipse.jst.javaee.core.JavaEEObject;

/**
 * Model element merger is bease class for Java EE mergers. 
 * It contains the base and toMerge elements.
 * 
 * Base element is the main element that values will be taken with highest priority.
 * toMerge element will give all of his extra values to base.
 * 
 * @author Dimitar Giormov
 */
public abstract class ModelElementMerger implements IMerger {
	
	public static int ADD = 0x1;
	
	public static int CHANGE = 0x2;
	
	public static int REMOVE = 0x4;
	
	public static int COPY = 0x8;

	JavaEEObject base;
	JavaEEObject toMerger;

	private int kind;

	
	/**
	 * Constructor of the class.
	 * 
	 * @param _base element is the main element that values will be taken with highest priority.
	 * @param _toMerge element will give all of his extra values to base.
	 * @param _kind
	 */
	public ModelElementMerger(JavaEEObject _base, JavaEEObject _toMerge, int _kind) {
		base = _base;
		toMerger = _toMerge;
		kind = _kind;
	}

	/**
	 * Returns the base element, which is also the merged result.
	 * 
	 * @return base element.
	 */
	protected JavaEEObject getBase() {
		return base;
	}

	/**
	 * 
	 * @return toMerge element, which will be merged in base.
	 */
	protected JavaEEObject getToMerge() {
		return toMerger;
	}

	/* (non-Javadoc)
	 * @see org.eclipse.jst.javaee.ejb.model.mergers.Merger#process()
	 */
	public abstract List process() throws ModelException;
	
	public int getKind() {
		return kind;
	}
	
}
