@Override public Collection<LoadedBranchTemplateDefinition> getTemplateDefinitions(Project project) { return branchTemplateRepository.getTemplateDefinitions().stream() .map(btd -> new LoadedBranchTemplateDefinition( structureService.getBranch(btd.getBranchId()), btd.getTemplateDefinition() )) .filter(lbtd -> (lbtd.getBranch().projectId() == project.id())) .collect(Collectors.toList()); }
@Override public boolean isProjectFavourite(Project project) { return securityService.isProjectFunctionGranted(project, ProjectView.class) && securityService.getAccount().filter(account -> account.getId().isSet()) .map(account -> repository.isProjectFavourite( account.id(), project.id() )).orElse(false); }
@Override public void setProjectFavourite(Project project, boolean favourite) { if (securityService.isProjectFunctionGranted(project, ProjectView.class)) { securityService.getAccount().ifPresent(account -> repository.setProjectFavourite(account.id(), project.id(), favourite) ); } } }
@Override public void builds(Project project, Predicate<Build> buildPredicate) { getNamedParameterJdbcTemplate().execute( "SELECT B.* FROM BUILDS B INNER JOIN BRANCHES R ON R.ID = B.BRANCHID AND R.PROJECTID = :projectId ORDER BY B.ID DESC", params("projectId", project.id()), ps -> { ResultSet rs = ps.executeQuery(); boolean goingOn = true; while (rs.next() && goingOn) { // Gets the builds Build build = toBuild( rs, this::getBranch ); // Dealing with this build goingOn = buildPredicate.test(build); } return null; } ); }
@Override public Optional<Branch> getBranchByName(String project, String branch) { return getProjectByName(project) .map(p -> getFirstItem( "SELECT * FROM BRANCHES WHERE PROJECTID = :project AND NAME = :name", params("name", branch).addValue("project", p.id()), (rs, rowNum) -> toBranch(rs, id -> p) )); }
@Override public List<ValidationStampFilter> getProjectValidationStampFilters(Project project) { return getNamedParameterJdbcTemplate().query( "SELECT * FROM VALIDATION_STAMP_FILTERS WHERE PROJECT = :project AND BRANCH IS NULL", params("project", project.id()), (ResultSet rs, int rowNum) -> toValidationStampFilter(rs, pid -> project, bid -> null) ); }
@Override public Collection<AccountGroup> findAccountGroupsByProjectRole(Project project, ProjectRole projectRole, Function<ID, AccountGroup> accountGroupLoader) { return getNamedParameterJdbcTemplate().query( "SELECT G.* FROM ACCOUNT_GROUPS G " + "INNER JOIN GROUP_PROJECT_AUTHORIZATIONS A " + "ON A.ACCOUNTGROUP = G.ID " + "WHERE A.ROLE = :role " + "AND A.PROJECT = :project " + "ORDER BY G.NAME", params("role", projectRole.getId()).addValue("project", project.id()), (rs, num) -> accountGroupLoader.apply(id(rs)) ); }
@Override public Collection<Account> findAccountsByProjectRole(Project project, ProjectRole projectRole, Function<ID, Account> accountLoader) { return getNamedParameterJdbcTemplate().query( "SELECT G.* FROM ACCOUNTS G " + "INNER JOIN PROJECT_AUTHORIZATIONS A " + "ON A.ACCOUNT = G.ID " + "WHERE A.ROLE = :role " + "AND A.PROJECT = :project " + "ORDER BY G.NAME", params("role", projectRole.getId()).addValue("project", project.id()), (rs, num) -> accountLoader.apply(id(rs)) ); }
protected Branch doCreateBranch(Project project, NameDescription nameDescription) throws Exception { return asUser().with(project.id(), BranchCreate.class).call(() -> structureService.newBranch( Branch.of(project, nameDescription) )); }
public ValidationStamp doCreateValidationStamp(Branch branch, NameDescription nameDescription, ValidationDataTypeConfig<?> config) throws Exception { return asUser().with(branch.getProject().id(), ValidationStampCreate.class).call(() -> structureService.newValidationStamp( ValidationStamp.of( branch, nameDescription ).withDataType(config) ) ); }
@Override public Optional<ValidationStampFilter> getValidationStampFilterByName(Branch branch, String name) { // Branch first Optional<ValidationStampFilter> o = getOptional( "SELECT * FROM VALIDATION_STAMP_FILTERS WHERE PROJECT IS NULL AND BRANCH = :branch AND NAME = :name", params("branch", branch.id()).addValue("name", name), (ResultSet rs, int rowNum) -> toValidationStampFilter(rs, pid -> null, bid -> branch) ); // ... then project if (!o.isPresent()) { o = getOptional( "SELECT * FROM VALIDATION_STAMP_FILTERS WHERE PROJECT = :project AND BRANCH IS NULL AND NAME = :name", params("project", branch.getProject().id()).addValue("name", name), (ResultSet rs, int rowNum) -> toValidationStampFilter(rs, pid -> branch.getProject(), bid -> null) ); } // ... the global if (!o.isPresent()) { o = getOptional( "SELECT * FROM VALIDATION_STAMP_FILTERS WHERE PROJECT IS NULL AND BRANCH IS NULL AND NAME = :name", params("name", name), (ResultSet rs, int rowNum) -> toValidationStampFilter(rs, pid -> null, bid -> null) ); } // OK return o; }
@Override public void saveValidationStampFilter(ValidationStampFilter filter) { checkUnicity(filter); getNamedParameterJdbcTemplate().update( "UPDATE VALIDATION_STAMP_FILTERS SET NAME = :name, PROJECT = :project, BRANCH = :branch, VSNAMES = :vsNames WHERE ID = :id", params("name", filter.getName()) .addValue("project", filter.getProject() != null ? filter.getProject().id() : null) .addValue("branch", filter.getBranch() != null ? filter.getBranch().id() : null) .addValue("vsNames", saveVsNames(filter.getVsNames())) .addValue("id", filter.id()) ); }
@Override public ValidationStampFilter newValidationStampFilter(ValidationStampFilter filter) { // Check unicity checkUnicity(filter); // Creation int id = dbCreate( "INSERT INTO VALIDATION_STAMP_FILTERS(NAME, PROJECT, BRANCH, VSNAMES) VALUES (:name, :project, :branch, :vsNames)", params("name", filter.getName()) .addValue("project", filter.getProject() != null ? filter.getProject().id() : null) .addValue("branch", filter.getBranch() != null ? filter.getBranch().id() : null) .addValue("vsNames", saveVsNames(filter.getVsNames())) ); // Returns with ID return filter.withId(id(id)); }
.addValue("project", filter.getProject() != null ? filter.getProject().id() : null) .addValue("branch", filter.getBranch() != null ? filter.getBranch().id() : null) .addValue("id", filter.getId() != null && filter.getId().isSet() ? filter.id() : null);
@Override public Branch newBranch(Branch branch) { // Creation try { int id = dbCreate( "INSERT INTO BRANCHES(PROJECTID, NAME, DESCRIPTION, DISABLED, CREATION, CREATOR) VALUES (:projectId, :name, :description, :disabled, :creation, :creator)", params("name", branch.getName()) .addValue("description", branch.getDescription()) .addValue("disabled", branch.isDisabled()) .addValue("projectId", branch.getProject().id()) .addValue("creation", dateTimeForDB(branch.getSignature().getTime())) .addValue("creator", branch.getSignature().getUser().getName()) ); // Returns with ID return branch.withId(id(id)); } catch (DuplicateKeyException ex) { throw new BranchNameAlreadyDefinedException(branch.getName()); } }