in cmdline/tool/src/org/netbeans/modules/jackpot30/cmdline/Main.java [589:631]
private static PatchDescription createPatchDescription(RootConfiguration rootConfiguration, File patchFile) throws IOException {
Map<FileObject, Set<Integer>> file2AddedLines = new HashMap<>();
DiffParser p = new UnifiedDiffParser();
List<Diff> diffs = p.parse(patchFile);
for (Diff diff : diffs) {
String fileName = diff.getToFileName();
FileObject resolvedTarget = null;
OUTER:
while (!fileName.isEmpty()) {
for (Folder f : rootConfiguration.rootFolders) {
resolvedTarget = f.getFileObject().getFileObject(fileName);
if (resolvedTarget != null) {
break OUTER;
}
}
int slash = fileName.indexOf("/");
if (slash == (-1)) break;
fileName = fileName.substring(slash + 1);
}
if (resolvedTarget == null) {
//TODO: warning?
continue;
}
Set<Integer> includedLines = new HashSet<>();
for (Hunk hunk : diff.getHunks()) {
int newLine = hunk.getToFileRange().getLineStart();
for (Line l : hunk.getLines()) {
switch (l.getLineType()) {
case FROM: break;
case NEUTRAL: newLine++; break;
case TO:
includedLines.add(newLine);
newLine++;
break;
}
}
}
file2AddedLines.put(resolvedTarget, includedLines);
}
return new PatchDescription(file2AddedLines);
}