Copyright (c) 2000, 2017 IBM Corporation and others. This program and the accompanying materials are made available under the terms of the Eclipse Public License 2.0 which accompanies this distribution, and is available at https://www.eclipse.org/legal/epl-2.0/ SPDX-License-Identifier: EPL-2.0 Contributors: IBM Corporation - initial API and implementation
/******************************************************************************* * Copyright (c) 2000, 2017 IBM Corporation and others. * * This program and the accompanying materials * are made available under the terms of the Eclipse Public License 2.0 * which accompanies this distribution, and is available at * https://www.eclipse.org/legal/epl-2.0/ * * SPDX-License-Identifier: EPL-2.0 * * Contributors: * IBM Corporation - initial API and implementation *******************************************************************************/
package org.eclipse.team.core.diff.provider; import org.eclipse.core.runtime.IPath; import org.eclipse.team.core.diff.IDiff; import org.eclipse.team.core.diff.IThreeWayDiff; import org.eclipse.team.core.diff.ITwoWayDiff; import org.eclipse.team.internal.core.mapping.SyncInfoToDiffConverter;
Abstract implementation of IDiff that can be subclassed by clients.
See Also:
Since:3.2
/** * Abstract implementation of {@link IDiff} that can be subclassed by * clients. * * @see ITwoWayDiff * @see IThreeWayDiff * @since 3.2 */
public abstract class Diff implements IDiff {
Constant (bit mask) that defines the area of the status that is reserved for use by this abstract class for encoding the kind of the diff.
See Also:
  • getStatus()
/** * Constant (bit mask) that defines the area of the status that is reserved * for use by this abstract class for encoding the kind of the diff. * * @see #getStatus() */
public static final int KIND_MASK = 0xFF; private final IPath path; private final int status;
Create a diff node.
Params:
  • path – the path of the diff
  • status – the status of the diff. The kind should be encoded in the status along with any additional flags required by a subclass.
/** * Create a diff node. * * @param path the path of the diff * @param status the status of the diff. The kind should be encoded in the * status along with any additional flags required by a subclass. */
protected Diff(IPath path, int status) { this.path = path; this.status = status; } @Override public IPath getPath() { return path; } @Override public int getKind() { return getStatus() & KIND_MASK; }
Return the status of the diff node. The status is a bit field that contains the kind and any additional status information that subclasses need to encode. The first byte of the status is reserved for use by this abstract class as indicated by the KIND_MASK.
Returns:the status of the diff node
/** * Return the status of the diff node. The status is a bit field that * contains the kind and any additional status information that subclasses * need to encode. The first byte of the status is reserved for use by this * abstract class as indicated by the <code>KIND_MASK</code>. * * @return the status of the diff node */
public final int getStatus() { return status; } @Override public String toDiffString() { int kind = getKind(); String label = SyncInfoToDiffConverter.diffKindToString(kind); return label; } @Override public int hashCode() { return getPath().hashCode(); } @Override public boolean equals(Object obj) { if (obj == this) return true; if (obj instanceof Diff) { Diff other = (Diff) obj; return other.getPath().equals(getPath()) && getStatus() == other.getStatus(); } return false; } }