|
|
| Line 1: | |||
| + | This report is based on a date interval and lists out successes and failures. 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.*; | ||
| + | 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; </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.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; | ||
| + | </pre> | ||
| + | ---- | ||
| + | '''Related Content''' | ||
| + | [[AnthillPro Template Reports]]<br/> | ||
| + | [[Report Templates]] | ||