Line 1: |
|
|
+ |
Report on all the hashes in build lives based on time periods.. 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.project.*;
|
|
|
+ |
import com.urbancode.anthill3.domain.reporting.*;
|
|
|
+ |
import java.text.*;
|
|
|
+ |
import java.util.*;
|
|
|
|
|
|
|
+ |
ReportMetaData rmd = new ReportMetaData();
|
|
|
|
|
|
|
+ |
SimpleDateFormat DATE_FORMAT = new SimpleDateFormat("yyyy-MM-dd kk:mm:ss z");
|
|
|
|
|
|
|
+ |
TextParamMetaData startDateParam = new TextParamMetaData();
|
|
|
|
|
|
|
+ |
startDateParam.setName("startDateStr");
|
|
|
+ |
startDateParam.setLabel("Start Date");
|
|
|
+ |
startDateParam.setDescription("The Interval Start Date yyyy-MM-dd kk:mm:ss z");
|
|
|
+ |
startDateParam.setRequired(true);
|
|
|
|
|
|
|
+ |
Calendar cal = Calendar.getInstance();
|
|
|
+ |
cal.add(Calendar.MONTH, -1);
|
|
|
|
|
|
|
+ |
startDateParam.setDefaultValue(DATE_FORMAT.format(cal.getTime()));
|
|
|
|
|
|
|
+ |
rmd.addParameter(startDateParam);
|
|
|
|
|
|
|
+ |
TextParamMetaData endDateParam = new TextParamMetaData();
|
|
|
|
|
|
|
+ |
endDateParam.setName("endDateStr");
|
|
|
+ |
endDateParam.setLabel("End Date");
|
|
|
+ |
endDateParam.setDescription("The Interval End Date yyyy-MM-dd kk:mm:ss z");
|
|
|
+ |
endDateParam.setRequired(true);
|
|
|
+ |
endDateParam.setDefaultValue(DATE_FORMAT.format(new Date()));
|
|
|
|
|
|
|
+ |
rmd.addParameter(endDateParam);
|
|
|
|
|
|
|
+ |
Project[] projects = ProjectFactory.getInstance().restoreAllActive();
|
|
|
+ |
String[] labels = new String[projects.length + 1];
|
|
|
+ |
String[] values = new String[projects.length + 1];
|
|
|
|
|
|
|
+ |
labels[0] = "All";
|
|
|
+ |
values[0] = "all";
|
|
|
|
|
|
|
+ |
for (int i = 1; i < projects.length + 1; i++) {
|
|
|
+ |
labels[i] = projects[i - 1].getName();
|
|
|
+ |
values[i] = projects[i - 1].getId().toString();
|
|
|
+ |
}
|
|
|
|
|
|
|
+ |
SelectParamMetaData projectParams = new SelectParamMetaData();
|
|
|
|
|
|
|
+ |
projectParams.setLabels(labels);
|
|
|
+ |
projectParams.setValues(values);
|
|
|
+ |
projectParams.setName("projectId");
|
|
|
+ |
projectParams.setLabel("Project");
|
|
|
+ |
projectParams.setDescription("The Project To Report On Or All");
|
|
|
+ |
projectParams.setRequired(true);
|
|
|
|
|
|
|
+ |
rmd.addParameter(projectParams);
|
|
|
|
|
|
|
+ |
// Configure columns
|
|
|
+ |
rmd.addColumn("Build Life Id");
|
|
|
+ |
rmd.addColumn("Project");
|
|
|
+ |
rmd.addColumn("Workflow");
|
|
|
+ |
rmd.addColumn("Artifact Set");
|
|
|
+ |
rmd.addColumn("File");
|
|
|
+ |
rmd.addColumn("Hash");
|
|
|
|
|
|
|
+ |
// Lastly, return the meta data
|
|
|
+ |
return rmd;
|
|
|
+ |
</pre>
|
|
|
|
|
|
|
+ |
----
|
|
|
|
|
|
|
+ |
''Report Script:''
|
|
|
|
|
|
|
+ |
<pre>import com.urbancode.anthill3.dashboard.*;
|
|
|
+ |
import com.urbancode.anthill3.domain.reporting.*;
|
|
|
+ |
import com.urbancode.anthill3.domain.project.*;
|
|
|
+ |
import com.urbancode.anthill3.domain.workflow.*;
|
|
|
+ |
import com.urbancode.anthill3.domain.buildlife.*;
|
|
|
+ |
import com.urbancode.codestation2.server.*;
|
|
|
+ |
import com.urbancode.codestation2.domain.artifacts.*;
|
|
|
+ |
import com.urbancode.anthill3.domain.workflow.WorkflowStatusEnum;
|
|
|
+ |
import com.urbancode.commons.fileutils.digest.*;
|
|
|
+ |
import com.urbancode.anthill3.runtime.paths.*;
|
|
|
+ |
import com.urbancode.devilfish.services.var.*;
|
|
|
+ |
import java.util.*;
|
|
|
+ |
import java.text.*;
|
|
|
|
|
|
|
+ |
BuildLifeWorkflowCaseSummary[] retrieveBuildLifeWorkflowCaseSummary() {
|
|
|
+ |
BuildLifeWorkflowCaseSummary[] result = null;
|
|
|
|
|
|
|
+ |
SimpleDateFormat DATE_FORMAT = new SimpleDateFormat("yyyy-MM-dd kk:mm:ss z");
|
|
|
|
|
|
|
+ |
Date startDate = DATE_FORMAT.parse(startDateStr);
|
|
|
+ |
Date endDate = DATE_FORMAT.parse(endDateStr);
|
|
|
|
|
|
|
+ |
if (projectId.equals("all")) {
|
|
|
+ |
result = DashboardFactory.getInstance().getBuildLifeWorkflowSummaries(null, startDate, endDate);
|
|
|
+ |
}
|
|
|
+ |
else {
|
|
|
+ |
result = DashboardFactory.getInstance().getBuildLifeWorkflowSummaries(new Long(projectId), startDate, endDate);
|
|
|
+ |
}
|
|
|
|
|
|
|
+ |
return result;
|
|
|
+ |
}
|
|
|
+ |
void createBuildLifeRow(BuildLife buildLife,
|
|
|
+ |
BuildLifeWorkflowCaseSummary summary,
|
|
|
+ |
CodestationCompatableArtifactSet set,
|
|
|
+ |
File file,
|
|
|
+ |
DigestProperties digestProperties,
|
|
|
+ |
ReportOutput output) {
|
|
|
+ |
ReportRow row = new ReportRow(output, "Build Life");
|
|
|
+ |
row.setColumnValue("Build Life Id", summary.getBuildLifeId().toString());
|
|
|
+ |
row.setColumnValue("Project", summary.getProjectName());
|
|
|
+ |
row.setColumnValue("Workflow", summary.getWorkflowName());
|
|
|
+ |
row.setColumnValue("Artifact Set", set.getName());
|
|
|
+ |
row.setColumnValue("File", file.getName());
|
|
|
+ |
row.setColumnValue("Hash", digestProperties.getDigestInfo(file));
|
|
|
|
|
|
|
+ |
output.addRow(row);
|
|
|
+ |
}
|
|
|
|
|
|
|
+ |
void createBuildLifeRows(BuildLife buildLife,
|
|
|
+ |
BuildLifeWorkflowCaseSummary summary,
|
|
|
+ |
ReportOutput output) {
|
|
|
+ |
CodestationRepositoryFileHelper repo = CodestationRepositoryFileHelper.getInstance();
|
|
|
+ |
CodestationCompatableArtifactSet[] setNames = repo.getPopulatedBuildLifeArtifactSetList(buildLife);
|
|
|
+ |
for (int i = 0; i < setNames.length; i++) {
|
|
|
+ |
CodestationCompatableArtifactSet set = setNames[i];
|
|
|
+ |
String rawRepoLifeSetPath = CodestationPathHelper.getInstance().getSetPath(buildLife, set);
|
|
|
+ |
String repoLifeSetPath = VarService.getInstance().resolve(rawRepoLifeSetPath);
|
|
|
+ |
File baseSetDir = new File(repoLifeSetPath);
|
|
|
|
|
|
|
+ |
File[] fileArray = repo.getBuildLifeArtifactSetFileInfo(buildLife, set);
|
|
|
+ |
File digestFile = repo.getBuildLifeArtifactSetDigestFile(buildLife, set);
|
|
|
|
|
|
|
+ |
DigestProperties digestProperties = new DigestProperties(digestFile);
|
|
|
|
|
|
|
+ |
for (int j = 0; j < fileArray.length; j++) {
|
|
|
+ |
File file = fileArray[j];
|
|
|
+ |
if (!".ahs.dig".equals(file.getName())) {
|
|
|
+ |
createBuildLifeRow(buildLife, summary, set, file, digestProperties, output);
|
|
|
+ |
}
|
|
|
+ |
}
|
|
|
+ |
}
|
|
|
+ |
}
|
|
|
|
|
|
|
+ |
ReportOutput output = new ReportOutput(metaData);
|
|
|
+ |
BuildLifeWorkflowCaseSummary[] summaries = retrieveBuildLifeWorkflowCaseSummary();
|
|
|
|
|
|
|
+ |
for (int i = 0; i < summaries.length; i++) {
|
|
|
+ |
BuildLifeWorkflowCaseSummary summary = summaries[i];
|
|
|
|
|
|
|
+ |
boolean failed = (summary.getStatus() == WorkflowStatusEnum.FAILED || summary.getStatus() == WorkflowStatusEnum.ERROR);
|
|
|
+ |
|
|
|
+ |
if (!failed) {
|
|
|
+ |
Workflow workflow = WorkflowFactory.getInstance().restore(summary.getWorkflowId());
|
|
|
+ |
if (workflow.isOriginating()) {
|
|
|
+ |
BuildLife buildLife = BuildLifeFactory.getInstance().restore(summary.getBuildLifeId());
|
|
|
+ |
createBuildLifeRows(buildLife, summary, output);
|
|
|
+ |
}
|
|
|
+ |
}
|
|
|
+ |
}
|
|
|
|
|
|
|
+ |
return output; </pre>
|
|
|
|
|
|
|
+ |
----
|
|
|
|
|
|
|
+ |
'''Related Content'''
|
|
|
|
|
|
|
+ |
[[AnthillPro Template Reports]]<br/>
|
|
|
+ |
[[Report Templates]]
|