@Override public void replaceTargetItem(PromotionLevel sourcePromotionLevel, PromotionLevel targetPromotionLevel) { structureService.savePromotionLevel( targetPromotionLevel.withDescription(replacementFn.apply(sourcePromotionLevel.getDescription())) ); copyPromotionLevelContent(sourcePromotionLevel, targetPromotionLevel); }
@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 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) ); }
@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()); } }