Version Differences for Per Project Deployment Log

Line 1:
    + 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 com.urbancode.anthill3.domain.userprofile.*;  
    + import java.text.SimpleDateFormat;  
    + import java.util.*;  
       
    + ReportMetaData rmd = new ReportMetaData();  
       
    + // Add some projects to choose from  
    + SelectParamMetaData params = new SelectParamMetaData();  
    + Project[] allMyProjectsArray = ProjectFactory.getInstance().restoreAllActive();  
    + String[] labels = new String[allMyProjectsArray.length + 1];  
    + String[] values = new String[allMyProjectsArray.length + 1];  
    + for (int i = 0; i < allMyProjectsArray.length; i++) {  
    + labels[i] = allMyProjectsArray[i].getName();  
    + values[i] = allMyProjectsArray[i].getId().toString();  
    + }  
    + labels[allMyProjectsArray.length] = "All";  
    + values[allMyProjectsArray.length] = "all";  
    + params.setLabels(labels);  
    + params.setValues(values);  
    + params.setName("project");  
    + params.setLabel("Project");  
    + params.setDescription("Select the project to evaluate successful and failed executions of that project. Or select 'All' to display all projects together.");  
    + rmd.addParameter(params);  
       
    + // Add the months to choose from  
    + SelectParamMetaData monthParams = new SelectParamMetaData();  
    + TimeZone timeZone = UserProfileFactory.getTimeZone();  
    + Calendar cal = Calendar.getInstance(timeZone);  
    + int monthsToHave = 12;  
    + String[] monthLabels = new String[monthsToHave];  
    + String[] monthValues = new String[monthsToHave];  
    + SimpleDateFormat monthOnly = new SimpleDateFormat("MMMM");  
    + for (int i = 1; i <= monthsToHave; i++) {  
    + monthLabels[monthsToHave - i] = monthOnly.format(cal.getTime());  
    + monthValues[monthsToHave - i] = "" + cal.get(Calendar.MONTH);  
    + cal.add(Calendar.MONTH, -1);  
    + }  
    + monthParams.setLabels(monthLabels);  
    + monthParams.setValues(monthValues);  
    + monthParams.setName("month");  
    + monthParams.setLabel("Month");  
    + monthParams.setDescription("Select the month to run this report against.");  
    + rmd.addParameter(monthParams);  
       
    + // Configure columns  
    + rmd.addColumn("Action");  
    + rmd.addColumn("Environment");  
    + rmd.addColumn("Latest Stamp");  
    + rmd.addColumn("Build Life");  
    + rmd.addColumn("Agent(s)");  
    + rmd.addColumn("Status");  
    + rmd.addColumn("Build Date");  
    + rmd.addColumn("Deploy Date");  
       
    + return rmd;  
    + </pre>  
       
    + ----  
       
    + ''Report Script:''  
       
    + <pre>import com.urbancode.anthill3.dashboard.*;  
    + import com.urbancode.anthill3.domain.reporting.*;  
    + import com.urbancode.anthill3.domain.userprofile.*;  
    + import com.urbancode.anthill3.domain.workflow.*;  
    + import com.urbancode.anthill3.domain.buildlife.*;  
    + import com.urbancode.commons.util.Duration;  
    + import java.util.*;  
    +  
    + // Get the timezone for the current user  
    + TimeZone timeZone = UserProfileFactory.getTimeZone();  
    + Calendar cal = Calendar.getInstance(timeZone);  
       
    + // Figure out the project to use. "project" is the name of the parameter in the meta data script. It's provided here.  
       
    + Long projectId = null;  
    + if (project == null || project.equals("all")) {  
    + // leave as null;  
    + }  
    + else {  
    + projectId = Long.parseLong(project);  
    + }  
       
    + // Get workflows for the last month  
    + int monthId = Integer.parseInt(month);  
       
    + // Get workflows for the last month  
    + int monthId = Integer.parseInt(month);  
    + if (monthId > cal.get(Calendar.MONTH) ) {  
    + // We are looking at last year not the future  
    + cal.add(Calendar.YEAR, -1);  
    + }  
       
    + cal.set(Calendar.MONTH, monthId);  
    + cal.set(Calendar.DAY_OF_MONTH, 1);  
    + cal.set(Calendar.HOUR, 0);  
    + cal.set(Calendar.MINUTE, 0);  
    + cal.set(Calendar.SECOND, 0);  
    + cal.set(Calendar.MILLISECOND, 0);  
       
    + startDate = cal.getTime();  
    + cal.add(Calendar.MONTH, 1);  
    + endDate = cal.getTime();  
       
    + BuildLifeWorkflowCaseSummary[] summaries = DashboardFactory.getInstance().getBuildLifeWorkflowSummaries(projectId, startDate, endDate);  
       
    + ReportOutput output = new ReportOutput(metaData);  
       
    + for (int i = 0; i < summaries.length; i++) {  
    + try {  
    + buildLife = BuildLifeFactory.getInstance().restore(summaries[i].getBuildLifeId());  
    + workflow = WorkflowCaseFactory.getInstance().restore(summaries[i].getCaseId());  
    + originating = WorkflowCaseFactory.getInstance().restoreOriginatingForBuildLife(buildLife);  
    +  
    + // Only include non-originating workflows  
    + if (!workflow.getWorkflow().isOriginating() &&  
    + workflow.getServerGroup().getShortName() != null &&  
    + !workflow.getServerGroup().getShortName().equals("DEV")) {  
    + // Calculate Duration  
    + Duration duration = new Duration(summaries[i].getStartDate(),summaries[i].getEndDate());  
       
       
    + // calculate the agent(s) invloved  
    + jobs = workflow.getJobTraceArray();  
    + String agents = "";  
    + for (int j = 0; j < jobs.length; j++) {  
    + agents += (jobs[j].getAgent().getName() + " ");  
    + }  
       
    + ReportRow row = new ReportRow(output, "1");  
    + row.setColumnValue("Action", summaries[i].getWorkflowName());  
    + row.setColumnValue("Environment", workflow.getServerGroup().getName());  
    + row.setColumnValue("Latest Stamp", summaries[i].getLatestStamp());  
    + row.setColumnValue("Build Life", summaries[i].getBuildLifeId().toString());  
    + row.setColumnValue("Agent(s)",agents);  
    + row.setColumnValue("Status", summaries[i].getStatus().getName());  
    + row.setColumnValue("Build Date", originating.getEndDate() == null ? "Running": String.valueOf(originating.getEndDate()));  
    + row.setColumnValue("Deploy Date", summaries[i].getEndDate() == null ? "Running": String.valueOf(summaries[i].getEndDate()) + "\n");  
    +  
       
    + output.addRow(row);  
    + }  
    + }  
    + catch (Exception e) {  
    + ReportRow row = new ReportRow(output, "1");  
    + row.setColumnValue("Action", summaries[i].getWorkflowName());  
    + row.setColumnValue("Environment", "Error");  
    + row.setColumnValue("Latest Stamp", "Error");  
    + row.setColumnValue("Build Life", summaries[i].getBuildLifeId().toString());  
    + row.setColumnValue("Agent(s)","Error");  
    + row.setColumnValue("Status", "Error");  
    + row.setColumnValue("Build Date", originating.getEndDate() == null ? "Running": String.valueOf(originating.getEndDate()));  
    + row.setColumnValue("Deploy Date", "Error" + "\n");  
    + output.addRow(row);  
    + }  
    + }  
    + return output;  
    + </pre>  
       
    + ----  
       
    + '''Related Content'''  
       
    + [[AnthillPro Template Reports]]<br/>  
    + [[Report Templates]]