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