Version Differences for Latest Builds for a Status

Line 1:
    + This report will prompt the user for a status to look for, and then search the anthill server for any results based upon that status. This report has to be used in conjunction with a report template such as the [[HTML Template]].  
       
    + ----  
       
    + ''Meta-Data Script:''  
       
    + <pre>import com.urbancode.anthill3.domain.reporting.*;  
       
    + ReportMetaData rmd = new ReportMetaData();  
       
    + TextParamMetaData statusName = new TextParamMetaData();  
    + statusName.setName("statusName");  
    + statusName.setLabel("Status to Find");  
    + statusName.setDescription("Look up the latest build of each project that have achieved this status");  
    + statusName.setRequired(true);  
       
    + rmd.addParameter(statusName);  
       
    + rmd.addColumn("Project");  
    + rmd.addColumn("Build WF");  
    + rmd.addColumn("Latest Stamp");  
    + rmd.addColumn("Latest Status");  
       
    + return rmd;</pre>  
       
    + ----  
       
    + ''Context Script:''  
       
    + <pre>import com.urbancode.anthill3.domain.buildlife.*;  
    + import com.urbancode.anthill3.domain.profile.*;  
    + import com.urbancode.anthill3.domain.project.*;  
    + import com.urbancode.anthill3.domain.reporting.*;  
    + import com.urbancode.anthill3.domain.security.*;  
    + import com.urbancode.anthill3.domain.workflow.*;  
       
    + import com.urbancode.anthill3.persistence.*;  
    + import com.urbancode.anthill3.runtime.scripting.helpers.*;  
    + import com.urbancode.codestation2.domain.artifacts.*;  
    + import com.urbancode.codestation2.domain.buildlife.*;  
    + import com.urbancode.codestation2.domain.project.*;  
    + import com.urbancode.codestation2.server.*;  
       
    + ReportOutput output = new ReportOutput(metaData);  
       
    + buildFactory = BuildLifeFactory.getInstance();  
    + Project[] projects = ProjectFactory.getInstance().restoreAllActive();  
       
    + for (int i = 0; i < projects.length; i++) {  
    + buildWorkflowArray = projects[i].getOriginatingWorkflowArray();  
    + for (int j = 0; j < buildWorkflowArray.length; j++) {  
    + status = StatusLookup.getStatusForProjectByName(projects[i], statusName);  
    + bl = null;  
    + if (status != null) {  
    + bl = buildFactory.restoreMostRecentForProfileAndStatusAndStampValue(buildWorkflowArray[j].getBuildProfile(), status, null);  
    + }  
    +  
    + //bl = BuildLifeLookup.mostRecentForProjectWorkflowAndStatus(projects[i], buildWorkflowArray[j].getName(), statusName);  
    +  
       
    + if (bl != null) {  
    + ReportRow row = new ReportRow(output, projects[i].getName());  
    + row.setColumnValue("Project", projects[i].getName());  
    + row.setColumnValue("Build WF", buildWorkflowArray[j].getName());  
    + row.setColumnValue("Latest Stamp", (bl.getLatestStamp() != null) ? bl.getLatestStamp().getStampValue() : "-");  
    + row.setColumnValue("Latest Status", bl.getLatestStatusName());  
    + output.addRow(row);  
    + }  
    + }  
    + }  
       
       
    + return output;</pre>  
       
    + ----  
       
    + '''Related Content'''  
       
    + [[AnthillPro Template Reports]]<br/>  
    + [[Report Templates]]