org.eclipse.team.core/src/org/eclipse/team/core/diff/IThreeWayDiff.java

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1.11 - (download) (annotate)
Wed Jun 4 15:59:35 2008 UTC (17 months, 3 weeks ago) by tzarna
Branch: MAIN
CVS Tags: I20080604, I20080605, I20090323-1100, I20081202, I20090306-1030, I20090311-0800, I20080819, I20091006-0800, I20090427-0800, I20091013-0800, I20090407-0800, I20090721-0750, I20090803-1300, r34x_20080827, I20090630-2000, I20090224-0800, I20091028-0800, r34x_20080115, I20090331-0800, I20090929-0800, I20080803, I20090303-0800, I20080804, r34x_20090115, I20090825-0800, I20081014, r34x_20080107, I20090514-0808, I20090126-0800, R3_4, R3_5, I20080715, I20090714-0800, r34x_20080808, I20090521-1750, I20090522-1010, I20081021, I20090922-0800, r34x_20080723, I20090113, I20080820, I20080722, I20080826, I20090309-1300, I20090421, I20090916-0800, I20090428, I20090211, I20090106, I20080923, R3_5_1, I20090429-0800, I20091124-0800, I20090210-0800, I20081029, I20090309-1800, I20081125, I20090527-0620, I20091020-0800, I20080930, I20090217-0800, I20091117-0800, I20081216, I20081210, r34x_20081015, I20081118, I20090508-2000, r34x_20080902, I20090120, r35x_20090930-0800, I20090511-2000, I20090128-0800, I20080909, I20091026-1300, R3_4_2, R3_4_1, v20090210-0615, I20090430-0408, I20080915, I20080917, I20090317-1800, HEAD
Branch point for: R3_4_maintenance, R3_5_maintenance
Changes since 1.10: +12 -13 lines
bug 234375: Additional adopting of API Tooling by Team/Core
/*******************************************************************************
 * Copyright (c) 2000, 2008 IBM Corporation and others.
 * 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:
 *     IBM Corporation - initial API and implementation
 *******************************************************************************/
package org.eclipse.team.core.diff;

import org.eclipse.team.core.diff.provider.ThreeWayDiff;

/**
 * A three-way delta that describe the synchronization state between two
 * contributors and an ancestor. For simplicity, we refer to one of the
 * contributors as the local and the other as the remote. A three-way delta is
 * represented as a combination of two two-way deltas, one between the ancestor
 * and local and the other between the ancestor and remote. For a three-way
 * delta, clients can assume that the before state of both the local and remote
 * changes are the same.
 * 
 * @since 3.2
 * @noimplement This interface is not intended to be implemented by clients.
 *              Clients that need to create deltas should instead use
 *              {@link ThreeWayDiff}.
 */
public interface IThreeWayDiff extends IDiff {
	
	/*====================================================================
	 * Constants defining synchronization direction: 
	 *====================================================================*/
	
	/**
	 * Constant (bit mask) indicating that there is a local change.
	 * 
	 * @see IThreeWayDiff#getDirection()
	 */
	public static final int OUTGOING = 0x100;
	
	/**
	 * Constant (bit mask) indicating that there is a local change.
	 * 
	 * @see IThreeWayDiff#getDirection()
	 */
	public static final int INCOMING = 0x200;
	
	/**
	 * Constant (bit mask) indicating that there is both a local change
	 * and a remote change. 
	 * This flag is equivalent
	 * to <code>OUTGOING | INCOMING</code>.
	 * 
	 * @see IThreeWayDiff#getDirection()
	 */
	public static final int CONFLICTING = OUTGOING | INCOMING;
	
	/**
	 * Bit mask for extracting the synchronization direction. 
	 */
	public static final int DIRECTION_MASK = CONFLICTING;
	
	/**
	 * Return the local change associated with this delta.
	 * If there is no local change, either a delta with kind 
	 * {@link IDiff#NO_CHANGE} is returned or <code>null</code>
	 * may be returned.
	 * @return the local change associated with this delta or <code>null</code>
	 */
	public ITwoWayDiff getLocalChange();
	
	/**
	 * Return the remote change associated with this delta.
	 * If there is no remote change, either a delta with kind 
	 * {@link IDiff#NO_CHANGE} is returned or <code>null</code>
	 * may be returned.
	 * @return the remote change associated with this delta or <code>null</code>
	 */
	public ITwoWayDiff getRemoteChange();
	
	/**
	 * Return the direction of this three-way delta.
	 * @return the direction of this three-way delta
	 * @see IThreeWayDiff#INCOMING
	 * @see IThreeWayDiff#OUTGOING
	 * @see IThreeWayDiff#CONFLICTING
	 */
	public int getDirection();

}