1 package org.kuali.rice.krms.framework.engine;
2
3 import java.util.ArrayList;
4 import java.util.Collections;
5 import java.util.List;
6
7 import org.kuali.rice.krms.api.engine.ExecutionEnvironment;
8 import org.kuali.rice.krms.api.engine.TermResolver;
9
10 public final class BasicContext implements Context {
11
12 private final List<Agenda> agendas;
13 private final List<TermResolver<?>> termResolvers;
14
15 public BasicContext(List<Agenda> agendas, List<TermResolver<?>> termResolvers) {
16 this.agendas = agendas;
17 this.termResolvers = termResolvers;
18 }
19
20 @Override
21 public void execute(ExecutionEnvironment environment) {
22 if (termResolvers != null) for (TermResolver<?> termResolver : termResolvers) {
23 environment.addTermResolver(termResolver);
24 }
25 List<Agenda> matchingAgendas = findMatchingAgendas(environment);
26 for (Agenda matchingAgenda : matchingAgendas) {
27 matchingAgenda.execute(environment);
28 }
29 }
30
31 private List<Agenda> findMatchingAgendas(ExecutionEnvironment environment) {
32 List<Agenda> matchingAgendas = new ArrayList<Agenda>();
33 for (Agenda agenda : agendas) {
34 if (agenda.appliesTo(environment)) {
35 matchingAgendas.add(agenda);
36 }
37 }
38 return matchingAgendas;
39 }
40
41 public List<TermResolver<?>> getTermResolvers() {
42 return Collections.unmodifiableList(termResolvers);
43 }
44
45 }