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]]
|