@Override public String getItemId(PromotionLevel item) { return item.getName(); }
@Override public void createTargetItem(PromotionLevel sourcePromotionLevel) { PromotionLevel targetPromotionLevel = structureService.newPromotionLevel( PromotionLevel.of( targetBranch, NameDescription.nd( sourcePromotionLevel.getName(), replacementFn.apply(sourcePromotionLevel.getDescription()) ) ) ); copyPromotionLevelContent(sourcePromotionLevel, targetPromotionLevel); }
@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 String getEntityDisplayName() { return String.format("Promotion run %s/%s/%s/%s", build.getBranch().getProject().getName(), build.getBranch().getName(), build.getName(), promotionLevel.getName() ); }
@Override public String render(ProjectEntity projectEntity, Event event) { switch (projectEntity.getProjectEntityType()) { case PROJECT: return ((Project) projectEntity).getName(); case BRANCH: return ((Branch) projectEntity).getName(); case PROMOTION_LEVEL: return ((PromotionLevel) projectEntity).getName(); case VALIDATION_STAMP: return ((ValidationStamp) projectEntity).getName(); case BUILD: return ((Build) projectEntity).getName(); case VALIDATION_RUN: return "#" + ((ValidationRun) projectEntity).getRunOrder(); case PROMOTION_RUN: PromotionRun promotionRun = (PromotionRun) projectEntity; return String.format( "%s->%s", promotionRun.getBuild().getName(), promotionRun.getPromotionLevel().getName() ); default: throw new EventCannotRenderEntityException(event.getEventType().getTemplate(), projectEntity); } }
@Override public Event deletePromotionLevel(PromotionLevel promotionLevel) { return Event.of(DELETE_PROMOTION_LEVEL) .withBranch(promotionLevel.getBranch()) .with("promotion_level", promotionLevel.getName()) .with("promotion_level_id", promotionLevel.getId().toString()) .get(); }
@Override public PromotionLevel newPromotionLevel(PromotionLevel promotionLevel) { // Creation try { // Order nb = max + 1 Integer orderNbValue = getFirstItem( "SELECT MAX(ORDERNB) FROM promotion_levels WHERE BRANCHID = :branchId", params("branchId", promotionLevel.getBranch().id()), Integer.class ); int orderNb = orderNbValue != null ? orderNbValue + 1 : 0; // Insertion int id = dbCreate( "INSERT INTO PROMOTION_LEVELS(BRANCHID, NAME, DESCRIPTION, ORDERNB, CREATION, CREATOR) VALUES (:branchId, :name, :description, :orderNb, :creation, :creator)", params("name", promotionLevel.getName()) .addValue("description", promotionLevel.getDescription()) .addValue("branchId", promotionLevel.getBranch().id()) .addValue("orderNb", orderNb) .addValue("creation", dateTimeForDB(promotionLevel.getSignature().getTime())) .addValue("creator", promotionLevel.getSignature().getUser().getName()) ); return promotionLevel.withId(id(id)); } catch (DuplicateKeyException ex) { throw new PromotionLevelNameAlreadyDefinedException(promotionLevel.getName()); } }
@Override public void bulkUpdatePromotionLevels(ID promotionLevelId) { // Description & name PromotionLevel promotionLevel = getPromotionLevel(promotionLevelId); String description = promotionLevel.getDescription(); String name = promotionLevel.getName(); // Image Document image = getPromotionLevelImage(promotionLevelId); // Bulk update getNamedParameterJdbcTemplate().update( "UPDATE PROMOTION_LEVELS SET IMAGETYPE = :type, IMAGEBYTES = :content, DESCRIPTION = :description " + "WHERE ID <> :id AND NAME = :name", params("id", promotionLevelId.getValue()) .addValue("name", name) .addValue("description", description) .addValue("type", Document.isValid(image) ? image.getType() : null) .addValue("content", Document.isValid(image) ? image.getContent() : null) ); }