private UpdateInfo findUpdateInfoToAddDependency()

in org.apache.ivyde.eclipse/src/java/org/apache/ivyde/common/ivyfile/IvyFileUpdater.java [99:141]


    private UpdateInfo findUpdateInfoToAddDependency(String content, ModuleRevisionId depId,
            String confMapping) {
        UpdateInfo info = new UpdateInfo();
        info.insert = getDependencyToAdd(depId, confMapping);

        Pattern dependenciesClose = Pattern.compile("<\\s*/dependencies");
        Matcher depsCloseMatcher = dependenciesClose.matcher(content);
        if (depsCloseMatcher.find()) {
            info.insertFromIndex = findLastDependencyEnd(content, depsCloseMatcher.start());
            if (info.insertFromIndex == -1) {
                info.insertFromIndex = getLastMatchIndex(Pattern.compile("<\\s*dependencies.*?>"),
                    content, depsCloseMatcher.start());
                if (info.insertFromIndex == -1) {
                    info.insertFromIndex = depsCloseMatcher.start();
                } else {
                    info.prefix = NL;
                }
            } else {
                info.prefix = NL;
            }
            info.insertToIndex = info.insertFromIndex;
            return info;
        }
        Pattern depsOpenClose = Pattern.compile("<\\s*dependencies\\s*/>");
        Matcher depsOpenCloseMatcher = depsOpenClose.matcher(content);
        if (depsOpenCloseMatcher.find()) {
            info.insertFromIndex = depsOpenCloseMatcher.start();
            info.insertToIndex = depsOpenCloseMatcher.end();
            info.prefix = "<dependencies>" + NL;
            info.suffix = NL + "    </dependencies>";
            return info;
        }
        Pattern moduleClose = Pattern.compile("</\\s*ivy-module\\s*>");
        Matcher moduleCloseMatcher = moduleClose.matcher(content);
        if (moduleCloseMatcher.find()) {
            info.insertFromIndex = moduleCloseMatcher.start();
            info.insertToIndex = info.insertFromIndex;
            info.prefix = "    <dependencies>" + NL;
            info.suffix = NL + "    </dependencies>" + NL;
            return info;
        }
        return info;
    }