* @throws DmcValueException
* @throws DmcValueExceptionSet
*/
void addRuleCategory(RuleCategory rc) throws ResultException, DmcValueException {
if (checkAndAdd(rc.getObjectName(),rc,ruleCategoryDefs) == false){
ResultException ex = new ResultException();
ex.addError(clashMsg(rc.getObjectName(),rc,ruleCategoryDefs,"rule categories"));
throw(ex);
}
if (checkAndAdd(rc.getObjectName(),rc,allDefs) == false){
ResultException ex = new ResultException();
ex.addError(clashMsg(rc.getObjectName(),rc,allDefs,"definition names"));
throw(ex);
}
if (performIDChecks){
// Bump up the rule category ID by the amount of schemaBaseID
int base = rc.getDefinedIn().getSchemaBaseID();
int range = rc.getDefinedIn().getSchemaIDRange();
int current = rc.getRuleCategoryID();
if (current >= range){
ResultException ex = new ResultException("Number of rule categories exceeds schema ID range: " + rc.getName());
throw(ex);
}
rc.setRuleCategoryID(base + current);
}
if (ruleCategoriesByID.get(rc.getRuleCategoryID()) != null){
ResultException ex = new ResultException();
ex.addError(clashMsg(rc.getRuleCategoryID(),rc,ruleCategoriesByID,"ruleCategoryID"));
throw(ex);
}
}