throw new IllegalArgumentException("Unable to update the rule of type (" + memberType.getName() +
") because an update was requested for id (" + dto.getId() + "), which does not exist.");
}
} else {
//Create a new Criteria
QuantityBasedRule quantityBasedRule;
try {
quantityBasedRule = (QuantityBasedRule) memberType.newInstance();
quantityBasedRule.setQuantity(dto.getQuantity());
quantityBasedRule.setMatchRule(translator.createMVEL(entityKey, dto,
ruleBuilderFieldServiceFactory.createInstance(fieldService)));
if (StringUtils.isEmpty(quantityBasedRule.getMatchRule()) && !StringUtils.isEmpty(dw.getRawMvel())) {
quantityBasedRule.setMatchRule(dw.getRawMvel());
}
} catch (Exception e) {
throw new RuntimeException(e);
}
sandBoxHelper.setupSandBoxState(quantityBasedRule, em);
em.persist(quantityBasedRule);
criteriaList.add(quantityBasedRule);
updatedRules.add(quantityBasedRule);
dirty = true;
}
}
//if an item was not included in the comprehensive submit from the client, we can assume that the
//listing was deleted, so we remove it here.
Iterator<QuantityBasedRule> itr = criteriaList.iterator();
while(itr.hasNext()) {
checkForRemove: {
QuantityBasedRule original = itr.next();
for (QuantityBasedRule quantityBasedRule : updatedRules) {
if (String.valueOf(original.getId()).equals(String.valueOf(quantityBasedRule.getId()))) {
break checkForRemove;
}
}
sandBoxHelper.archiveObject(original, em);
itr.remove();