private static PatchDescription createPatchDescription()

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);
    }