private PrologEnvironment getPrologEnvironment(CurrentUser user) throws RuleEvalException { ProjectState projectState = control.getProjectControl().getProjectState(); PrologEnvironment env; try { if (rule == null) { env = projectState.newPrologEnvironment(); } else { env = projectState.newPrologEnvironment("stdin", new StringReader(rule)); } } catch (CompileException err) { String msg; if (rule == null && control.getProjectControl().isOwner()) { msg = String.format("Cannot load rules.pl for %s: %s", getProjectName(), err.getMessage()); } else if (rule != null) { msg = err.getMessage(); } else { msg = String.format("Cannot load rules.pl for %s", getProjectName()); } throw new RuleEvalException(msg, err); } env.set(StoredValues.REVIEW_DB, cd.db()); env.set(StoredValues.CHANGE_DATA, cd); env.set(StoredValues.CHANGE_CONTROL, control); if (user != null) { env.set(StoredValues.CURRENT_USER, user); } return env; }