@Override
public ID newPredefinedPromotionLevel(PredefinedPromotionLevel stamp) {
try {
Integer orderNbValue = getFirstItem(
"SELECT MAX(ORDERNB) FROM PREDEFINED_PROMOTION_LEVELS",
noParams(),
Integer.class
);
int orderNb = orderNbValue != null ? orderNbValue + 1 : 0;
return ID.of(
dbCreate(
"INSERT INTO PREDEFINED_PROMOTION_LEVELS(NAME, ORDERNB, DESCRIPTION) VALUES (:name, :orderNb, :description)",
params("name", stamp.getName())
.addValue("description", stamp.getDescription())
.addValue("orderNb", orderNb)
)
);
} catch (DuplicateKeyException ex) {
throw new PredefinedPromotionLevelNameAlreadyDefinedException(stamp.getName());
}
}