int promotionLevelId = run.getPromotionLevel().id(); if (index.contains(promotionLevelId)) { index.remove(promotionLevelId);
@Override public PromotionRun getLastPromotionRunForPromotionLevel(PromotionLevel promotionLevel) { return getFirstItem( "SELECT PR.* FROM PROMOTION_RUNS PR" + " INNER JOIN BUILDS B ON B.ID = PR.BUILDID" + " WHERE PROMOTIONLEVELID = :promotionLevelId" + " ORDER BY B.ID DESC" + " LIMIT 1", params("promotionLevelId", promotionLevel.id()), (rs, rowNum) -> toPromotionRun(rs, this::getBuild, (promotionLevelId) -> promotionLevel) ); }
@Override public List<PromotionRun> getPromotionRunsForPromotionLevel(PromotionLevel promotionLevel) { return getNamedParameterJdbcTemplate().query( "SELECT * FROM PROMOTION_RUNS WHERE PROMOTIONLEVELID = :promotionLevelId ORDER BY CREATION DESC, ID DESC", params("promotionLevelId", promotionLevel.id()), (rs, rowNum) -> toPromotionRun(rs, this::getBuild, (id) -> promotionLevel ) ); }
@Override public Optional<PromotionRun> getLastPromotionRun(Build build, PromotionLevel promotionLevel) { return Optional.ofNullable( getFirstItem( "SELECT * FROM PROMOTION_RUNS " + "WHERE BUILDID = :buildId " + "AND PROMOTIONLEVELID = :promotionLevelId " + "ORDER BY CREATION DESC, ID DESC LIMIT 1", params("buildId", build.id()).addValue("promotionLevelId", promotionLevel.id()), (rs, rowNum) -> toPromotionRun(rs, (id) -> build, (id) -> promotionLevel ) ) ); }
@Override public Optional<PromotionRun> getEarliestPromotionRunAfterBuild(PromotionLevel promotionLevel, Build build) { return getOptional( "SELECT * FROM PROMOTION_RUNS WHERE PROMOTIONLEVELID = :promotionLevelId AND BUILDID >= :buildId ORDER BY CREATION ASC, ID ASC LIMIT 1", params("promotionLevelId", promotionLevel.id()) .addValue("buildId", build.id()), (rs, num) -> toPromotionRun( rs, this::getBuild, (x) -> promotionLevel ) ); }
@Override public List<PromotionRun> getPromotionRunsForBuildAndPromotionLevel(Build build, PromotionLevel promotionLevel) { return getNamedParameterJdbcTemplate().query( "SELECT * FROM PROMOTION_RUNS " + "WHERE BUILDID = :buildId " + "AND PROMOTIONLEVELID = :promotionLevelId " + "ORDER BY CREATION DESC, ID DESC", params("buildId", build.id()).addValue("promotionLevelId", promotionLevel.id()), (rs, rowNum) -> toPromotionRun(rs, (id) -> build, (id) -> promotionLevel ) ); }
@Override public void savePromotionLevel(PromotionLevel promotionLevel) { // Update try { getNamedParameterJdbcTemplate().update( "UPDATE PROMOTION_LEVELS SET NAME = :name, DESCRIPTION = :description WHERE ID = :id", params("name", promotionLevel.getName()) .addValue("description", promotionLevel.getDescription()) .addValue("id", promotionLevel.id()) ); } catch (DuplicateKeyException ex) { throw new PromotionLevelNameAlreadyDefinedException(promotionLevel.getName()); } }
@Override public PromotionRun newPromotionRun(PromotionRun promotionRun) { return promotionRun.withId( id( dbCreate( "INSERT INTO PROMOTION_RUNS(BUILDID, PROMOTIONLEVELID, CREATION, CREATOR, DESCRIPTION) VALUES (:buildId, :promotionLevelId, :creation, :creator, :description)", params("buildId", promotionRun.getBuild().id()) .addValue("promotionLevelId", promotionRun.getPromotionLevel().id()) .addValue("description", promotionRun.getDescription()) .addValue("creation", dateTimeForDB(promotionRun.getSignature().getTime())) .addValue("creator", promotionRun.getSignature().getUser().getName()) ) ) ); }