| /******************************************************************************* |
| * Copyright (c) 2000, 2004 IBM Corporation and others. |
| * All rights reserved. This program and the accompanying materials |
| * are made available under the terms of the Common Public License v1.0 |
| * which accompanies this distribution, and is available at |
| * http://www.eclipse.org/legal/cpl-v10.html |
| * |
| * Contributors: |
| * IBM Corporation - initial API and implementation |
| *******************************************************************************/ |
| package org.eclipse.compare.internal.patch; |
| |
| import java.util.*; |
| |
| import org.eclipse.core.runtime.IPath; |
| |
| import org.eclipse.compare.structuremergeviewer.Differencer; |
| |
| |
| /* package */ class Diff { |
| |
| IPath fOldPath, fNewPath; |
| long fOldDate, fNewDate; // if 0: no file |
| List fHunks= new ArrayList(); |
| boolean fMatches= false; |
| private boolean fIsEnabled2= true; |
| String fRejected; |
| |
| |
| /* package */ Diff(IPath oldPath, long oldDate, IPath newPath, long newDate) { |
| fOldPath= oldPath; |
| fOldDate= oldPath == null ? 0 : oldDate; |
| fNewPath= newPath; |
| fNewDate= newPath == null ? 0 : newDate; |
| } |
| |
| boolean isEnabled() { |
| return fIsEnabled2; |
| } |
| |
| void setEnabled(boolean b) { |
| fIsEnabled2= b; |
| } |
| |
| void reverse() { |
| IPath tp= fOldPath; |
| fOldPath= fNewPath; |
| fNewPath= tp; |
| |
| long t= fOldDate; |
| fOldDate= fNewDate; |
| fNewDate= t; |
| |
| Iterator iter= fHunks.iterator(); |
| while (iter.hasNext()) { |
| Hunk hunk= (Hunk) iter.next(); |
| hunk.reverse(); |
| } |
| } |
| |
| Hunk[] getHunks() { |
| return (Hunk[]) fHunks.toArray(new Hunk[fHunks.size()]); |
| } |
| |
| IPath getPath() { |
| if (fOldPath != null) |
| return fOldPath; |
| return fNewPath; |
| } |
| |
| void finish() { |
| if (fHunks.size() == 1) { |
| Hunk h= (Hunk) fHunks.get(0); |
| if (h.fNewLength == 0) { |
| fNewDate= 0; |
| fNewPath= fOldPath; |
| } |
| } |
| } |
| |
| /* package */ void add(Hunk hunk) { |
| fHunks.add(hunk); |
| } |
| |
| /* package */ int getType() { |
| if (fOldDate == 0) |
| return Differencer.ADDITION; |
| if (fNewDate == 0) |
| return Differencer.DELETION; |
| return Differencer.CHANGE; |
| } |
| |
| /* package */ String getDescription(int strip) { |
| IPath path= fOldPath; |
| if (fOldDate == 0) |
| path= fNewPath; |
| if (strip > 0 && strip < path.segmentCount()) |
| path= path.removeFirstSegments(strip); |
| return path.toOSString(); |
| } |
| } |
| |