Detailed Dependency Graph

This report shows a user the total number of Dependencies in a detailed form. This report has to be used in conjunction with a report template such as the HTML Template.


Meta-Data Script:

import com.urbancode.anthill3.domain.reporting.*;

ReportMetaData rmd = new ReportMetaData();

rmd.addColumn("Project");
rmd.addColumn("Workflow");
rmd.addColumn("Dependencies");

return rmd;


Context Script:

import com.urbancode.anthill3.domain.profile.*;
import com.urbancode.anthill3.domain.project.*;
import com.urbancode.anthill3.domain.reporting.*;
import com.urbancode.anthill3.domain.workflow.*;
import com.urbancode.anthill3.persistence.*;
import com.urbancode.codestation2.domain.artifacts.*;

Project[] projects = ProjectFactory.getInstance().restoreAll();

ReportOutput output = new ReportOutput(metaData);

for (int i = 0; i < projects.length; i++) {
    Workflow[] workflows = projects[i].getOriginatingWorkflowArray();
    for (int j = 0; j < workflows.length; j++) {
        ReportRow row = new ReportRow(output, "1");
        row.setColumnValue("Project", projects[i].getName());
        row.setColumnValue("Workflow", workflows[j].getName());
        StringBuffer depBuf = new StringBuffer();
        Dependency[] deps = workflows[j].getBuildProfile().getDependencyArray();
        for (int k = 0; k < deps.length; k++) {
            depBuf.append(deps[k].getDependency().toString());
            int buildCondition = deps[k].getBuildConditionId();
            switch (buildCondition) {
                case Dependency.PULL_BUILD:
                    depBuf.append(" - Pull");
                    break;
                case Dependency.PUSH_BUILD:
                    depBuf.append(" - Push");
                    break;
                case Dependency.LATEST_BUILD:
                    if (deps[k].getStatus() != null) {
                        depBuf.append(" - Use Latest ");
                        depBuf.append(deps[k].getStatus().toString());
                    }
                    else if (deps[k].getStampValue() != null) {
                        depBuf.append(" - Use ");
                        depBuf.append(deps[k].getStampValue());
                    }
                    else {
                        depBuf.append(" - Use Latest ");
                    }
                    break;
            }
            depBuf.append("<br><ul>");
            CodestationCompatableArtifactSet[] sets = deps[k].getArtifactSets();
            for (int l = 0; l < sets.length; l++) {
                depBuf.append("<li>");
                depBuf.append("'" + sets[l].getName() + "' to '");
                String[] setDirs = deps[k].getSetDirs(sets[l]);
                for (int m=0; m<setDirs.length; m++) {
                    depBuf.append(setDirs[m]);
                    if (m < setDirs.length - 1) {
                        depBuf.append(", ");
                    }
                }
                depBuf.append("'");
                if (deps[k].isSetTransitive(sets[l])) {
                    depBuf.append(" with transitive dependencies");
                }
                depBuf.append("</li>");
            }
               depBuf.append("</ul>");
            if (k < deps.length - 1) {
                depBuf.append("<br>");
            }
        }
        row.setColumnValue("Dependencies", depBuf.toString());

        output.addRow(row);
    }
}

return output;


Related Content

AnthillPro Template Reports
Report Templates