blob: 5239340c5169f30262f5ac345cbc97a367035ed2 [file] [log] [blame]
/*
* (c) Copyright IBM Corp. 2000, 2001.
* All Rights Reserved.
*/
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((Hunk[]) 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();
}
}