View Javadoc

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  }