All Downloads are FREE. Search and download functionalities are using the official Maven repository.

net.kemitix.dependency.digraph.maven.plugin.DotFileFormatSimple Maven / Gradle / Ivy

There is a newer version: 0.9.1
Show newest version
package net.kemitix.dependency.digraph.maven.plugin;

import net.kemitix.node.Node;

/**
 * Generates a dot file dependency report as a simple digraph.
 *
 * @author pcampbell
 */
class DotFileFormatSimple extends AbstractDotFileFormat {

    DotFileFormatSimple(
            final Node base,
            final NodePathGenerator nodePathGenerator) {
        super(base, nodePathGenerator);
    }

    @Override
    String renderNode(final Node node) {
        final StringBuilder render = new StringBuilder();
        if (!node.equals(getBase())) {
            render.append("\"").append(getPath(node, ".")).append("\";");
        }
        node.getChildren().stream()
                .sorted(new NodePackageDataComparator())
                .forEach((n) -> render.append(this.renderNode(n)));
        return render.toString();
    }

    @Override
    String renderUsages(final Node node) {
        final StringBuilder render = new StringBuilder();
        render.append(renderUsage(node));
        node.getChildren().stream()
                .sorted(new NodePackageDataComparator())
                .forEach((n) -> render.append(this.renderUsages(n)));
        return render.toString();
    }

    private String renderUsage(final Node origin) {
        final StringBuilder render = new StringBuilder();
        final String originId = getPath(origin, ".");
        origin.getData().getUses().stream()
                .sorted(new NodePackageDataComparator())
                .forEach((Node destination) -> {
                    if (destination.isChildOf(getBase())) {
                        render.append("\"").append(originId).append("\"->\"")
                                .append(getPath(destination, "."))
                                .append("\";");
                    }
                });
        return render.toString();
    }

}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy