@Override public Build saveBuild(Build build) { // Update try { getNamedParameterJdbcTemplate().update( "UPDATE BUILDS SET NAME = :name, DESCRIPTION = :description, CREATION = :creation, CREATOR = :creator WHERE ID = :id", params("name", build.getName()) .addValue("description", build.getDescription()) .addValue("creation", dateTimeForDB(build.getSignature().getTime())) .addValue("creator", build.getSignature().getUser().getName()) .addValue("id", build.id()) ); return build; } catch (DuplicateKeyException ex) { throw new BuildNameAlreadyDefinedException(build.getName()); } }
protected SearchResult toSearchResult(Build build) { return new SearchResult( build.getEntityDisplayName(), String.format("%s -> %s", build.getProject().getName(), build.getName()), uriBuilder.getEntityURI(build), uriBuilder.getEntityPage(build), 100 ); } }
@Override public Project getProject() { return getBranch().getProject(); }
@Override public Build newBuild(Build build) { // Creation try { int id = dbCreate( "INSERT INTO BUILDS(BRANCHID, NAME, DESCRIPTION, CREATION, CREATOR) VALUES (:branchId, :name, :description, :creation, :creator)", params("name", build.getName()) .addValue("description", build.getDescription()) .addValue("branchId", build.getBranch().id()) .addValue("creation", dateTimeForDB(build.getSignature().getTime())) .addValue("creator", build.getSignature().getUser().getName()) ); return build.withId(id(id)); } catch (DuplicateKeyException ex) { throw new BuildNameAlreadyDefinedException(build.getName()); } }
@Override @Transactional public SVNChangeLog changeLog(BuildDiffRequest request) { try (Transaction ignored = transactionService.start()) { // Gets the two builds Build buildFrom = structureService.getBuild(request.getFrom()); Build buildTo = structureService.getBuild(request.getTo()); // Ordering of builds if (buildFrom.id() > buildTo.id()) { Build t = buildFrom; buildFrom = buildTo; buildTo = t; } // Gets the two branches, for each build Branch branchFrom = buildFrom.getBranch(); Branch branchTo = buildTo.getBranch(); // Checks the branch is the same if (branchFrom.id() != branchTo.id()) { throw new SVNChangeLogDifferentBranchException(); } SVNRepository svnRepository = getSVNRepository(branchFrom); return new SVNChangeLog( UUID.randomUUID().toString(), branchFrom.getProject(), svnRepository, getSCMBuildView(svnRepository, buildFrom.getId()), getSCMBuildView(svnRepository, buildTo.getId()) ); } }
@NotNull @Override @JsonIgnore public String getRunMetricName() { return build.getName(); }
@Override public List<LinkDefinition<Build>> getLinkDefinitions() { return Arrays.asList( LinkDefinitions.link( "_changeLog", build -> { BuildDiffRequest request = new BuildDiffRequest(); request.setFrom(build.getId()); return MvcUriComponentsBuilder.on(SVNController.class).changeLog(request); }, (build, rc) -> rc.isProjectFunctionGranted(build, ProjectView.class) && svnService.getSVNRepository(build.getBranch()).isPresent() ), LinkDefinitions.page( "_changeLogPage", (build, resourceContext) -> resourceContext.isProjectFunctionGranted(build, ProjectView.class) && svnService.getSVNRepository(build.getBranch()).isPresent(), "extension/svn/changelog" ) ); }
public EventBuilder withBuild(Build build) { return withBranch(build.getBranch()).with(build).with(build.getSignature()); }
protected Build doCreateBuild(Branch branch, NameDescription nameDescription, Signature signature) throws Exception { return asUser().with(branch.projectId(), BuildCreate.class).call(() -> structureService.newBuild( Build.of( branch, nameDescription, signature ) )); }
private boolean isPassed(Build build, ValidationStamp validationStamp) { List<ValidationRun> runs = structureService.getValidationRunsForBuildAndValidationStamp( build.getId(), validationStamp.getId(), 0, 1 ); if (runs.isEmpty()) { return false; } else { ValidationRun run = runs.get(0); return Objects.equals( run.getLastStatus().getStatusID(), ValidationRunStatusID.STATUS_PASSED ); } }
@Override public Project getProject() { return getBuild().getProject(); }
@Override public List<PromotionRun> getLastPromotionRunsForBuild(Build build) { // Branch Branch branch = build.getBranch(); // Promotion levels for the branch List<PromotionLevel> promotionLevels = getPromotionLevelListForBranch(branch.getId()); // Gets the last promotion run for each promotion level return promotionLevels.stream() .map(promotionLevel -> getLastPromotionRun(build, promotionLevel)) .filter(Optional::isPresent) .map(Optional::get) .collect(Collectors.toList()); }
@Override public int getValidationRunsCountForBuild(Build build) { return getNamedParameterJdbcTemplate().queryForObject( "SELECT COUNT(ID) FROM VALIDATION_RUNS WHERE BUILDID = :buildId", params("buildId", build.id()), Integer.class ); }