public void serialize() { if (!this.buildsToBeInspected.isEmpty()) { List<SerializedData> allData = new ArrayList<>(); for (ScannedBuildStatus status : ScannedBuildStatus.values()) { for (BuildToBeInspected buildToBeInspected : this.buildsToBeInspected.get(status)) { allData.add(new SerializedData(this.serializeAsList(buildToBeInspected), this.serializeAsJson(buildToBeInspected))); } } for (SerializerEngine engine : this.getEngines()) { engine.serialize(allData, this.getType()); } } }
private Map<ScannedBuildStatus, List<BuildToBeInspected>> runScanner() throws IOException { Launcher.LOGGER.info("Start to scan projects in Travis..."); ProjectScanner scanner = new ProjectScanner(this.config.getLookFromDate(), this.config.getLookToDate(), this.config.getRunId()); Map<ScannedBuildStatus, List<BuildToBeInspected>> buildsToBeInspected = scanner.getListOfBuildsToBeInspectedFromProjects(this.config.getInputPath()); ProcessSerializer scannerSerializer; if (this.config.getLauncherMode() == LauncherMode.REPAIR) { scannerSerializer = new ScannerSerializer(this.engines, scanner); } else { scannerSerializer = new ScannerSerializer4Bears(this.engines, scanner); ScannerDetailedDataSerializer scannerDetailedDataSerializer = new ScannerDetailedDataSerializer(this.engines, buildsToBeInspected); scannerDetailedDataSerializer.serialize(); } scannerSerializer.serialize(); Launcher.LOGGER.info("---------------------------------------------------------------"); Launcher.LOGGER.info("Scanner results."); Launcher.LOGGER.info("---------------------------------------------------------------"); if (buildsToBeInspected.isEmpty()) { Launcher.LOGGER.info("No build interesting to be inspected has been found ("+scanner.getTotalScannedBuilds()+" scanned builds.)"); } else { Launcher.LOGGER.info(buildsToBeInspected.size()+" builds interesting to be inspected have been found ("+scanner.getTotalScannedBuilds()+" scanned builds.)"); } return buildsToBeInspected; }
private JsonElement serializeAsJson(BuildToBeInspected buildToBeInspected) { JsonObject result = new JsonObject(); Build build = buildToBeInspected.getPatchedBuild(); Build previousBuild = buildToBeInspected.getBuggyBuild(); long previousBuildId = (previousBuild != null) ? previousBuild.getId() : -1; String committerEmail = "nobody@github.com"; if (build.getCommitter().isPresent()) { committerEmail = build.getCommitter().get().getEmail(); } Date date = new Date(); result.addProperty("buildId", build.getId()); result.addProperty("previousBuildId", previousBuildId); result.addProperty("scannedStatus", buildToBeInspected.getStatus().name()); result.addProperty("repositoryName", build.getRepository().getSlug()); result.addProperty("dateScannedStr", Utils.formatCompleteDate(date)); this.addDate(result, "dateScanned", date); result.addProperty("dayScanned", Utils.formatOnlyDay(date)); result.addProperty("hostname", Utils.getHostname()); result.addProperty("travisBuildUrl", Utils.getTravisUrl(build.getId(), build.getRepository().getSlug())); result.addProperty("travisPreviousBuildUrl", Utils.getTravisUrl(previousBuildId, build.getRepository().getSlug())); result.addProperty("committerEmail", committerEmail); result.addProperty("runId", buildToBeInspected.getRunId()); return result; }