This only report on the successes and the failures for a provided time interval. This report has to be used in conjunction with a report template such as the Bar Chart Template.
Meta-Data Script:
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); // Configure columns rmd.addColumn("Project"); rmd.addColumn("Workflow"); rmd.addColumn("Successes"); rmd.addColumn("Failures"); // Lastly, return the meta data return rmd;
Context Script:
import com.urbancode.anthill3.dashboard.*; import com.urbancode.anthill3.domain.reporting.*; import com.urbancode.anthill3.domain.project.*; import com.urbancode.anthill3.domain.workflow.WorkflowStatusEnum; import java.util.*; import java.text.*; class WorkflowSummary { Long id = null; String name = null; int successes = 0; int failures = 0; } ReportOutput output = new ReportOutput(metaData); SimpleDateFormat DATE_FORMAT = new SimpleDateFormat("yyyy-MM-dd kk:mm:ss z"); Date startDate = DATE_FORMAT.parse(startDateStr); Date endDate = DATE_FORMAT.parse(endDateStr); Project[] projects = ProjectFactory.getInstance().restoreAllActive(); for (int i = 0; i < projects.length; i++) { Project project = projects[i]; Map workflowNameToSummary = new HashMap(); BuildLifeWorkflowCaseSummary[] summaries = DashboardFactory.getInstance().getBuildLifeWorkflowSummaries(project.getId(), startDate, endDate); for (int j = 0; j < summaries.length; j++) { BuildLifeWorkflowCaseSummary summary = summaries[j]; boolean failed = (summary.getStatus() == WorkflowStatusEnum.FAILED || summary.getStatus() == WorkflowStatusEnum.ERROR); WorkflowSummary wfSummary = null; if (workflowNameToSummary.containsKey(summary.getWorkflowName())) { wfSummary = (WorkflowSummary) workflowNameToSummary.get(summary.getWorkflowName()); } else { wfSummary = new WorkflowSummary(); wfSummary.name = summary.getWorkflowName(); wfSummary.id = summary.getWorkflowId(); workflowNameToSummary.put(summary.getWorkflowName(), wfSummary); } if (failed) { wfSummary.failures++; } else { wfSummary.successes++; } } Iterator itr = workflowNameToSummary.values().iterator(); while (itr.hasNext()) { WorkflowSummary summary = (WorkflowSummary) itr.next(); if (project.getWorkflow(summary.id).isOriginating()) { ReportRow row = new ReportRow(output, project.getName() + "-" + summary.name); row.setColumnValue("Project", project.getName()); row.setColumnValue("Workflow", summary.name); row.setColumnValue("Successes", summary.successes + ""); row.setColumnValue("Failures", summary.failures + ""); output.addRow(row); } } } return output;
Related Content