blob: 77dc42e285d5fb7b11a69e1dc634bbb37e0fdc8b (
plain) (
blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
|
/*
* (c) Copyright IBM Corp. 2000, 2001.
* All Rights Reserved.
*/
package org.eclipse.compare.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 fIsEnabled= 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;
}
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();
}
}
|