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