private void addDependency()

in codeanalyzer/src/main/java/nl/obren/sokrates/sourcecode/dependencies/DependenciesFinderExtractor.java [96:135]


    private void addDependency(List<ComponentDependency> dependencies, Map<String, ComponentDependency> dependenciesMap, SourceFile sourceFile, String toComponent, String line) {
        if (StringUtils.isBlank(toComponent)) {
            return;
        }

        if (!logicalDecomposition.isIncludeExternalComponents() && logicalDecomposition.getComponentByName(toComponent) == null) {
            return;
        }

        if (isInDuplicatedDependecies(sourceFile, toComponent)) return;

        ComponentDependency componentDependency = new ComponentDependency();
        String group = logicalDecomposition.getName();
        List<NamedSourceCodeAspect> logicalComponents = sourceFile.getLogicalComponents(group);

        if (logicalComponents.size() == 0) {
            return;
        }

        NamedSourceCodeAspect firstAspect = logicalComponents.get(0);
        String fromComponent = firstAspect.getName();
        componentDependency.setFromComponent(fromComponent);
        componentDependency.setToComponent(toComponent);

        addFileDepedency(sourceFile, fromComponent, toComponent, line, firstAspect);

        if (!componentDependency.getFromComponent().equalsIgnoreCase(componentDependency.getToComponent())) {
            String key = componentDependency.getDependencyString();
            if (dependenciesMap.containsKey(key)) {
                componentDependency = dependenciesMap.get(key);
                componentDependency.setCount(componentDependency.getCount() + 1);
            } else {
                dependencies.add(componentDependency);
                dependenciesMap.put(key, componentDependency);
            }

            componentDependency.setLocFrom(componentDependency.getLocFrom() + sourceFile.getLinesOfCode());
            componentDependency.getEvidence().add(new DependencyEvidence(sourceFile.getRelativePath(), line));
        }
    }