Latest Builds for a Status

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:

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;

Context Script:

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;

Related Content

AnthillPro Template Reports
Report Templates