1 | |
package org.jbehave.core.embedder; |
2 | |
|
3 | |
import java.util.HashMap; |
4 | |
import java.util.Map; |
5 | |
|
6 | |
import org.jbehave.core.model.Meta; |
7 | |
import org.jbehave.core.model.Scenario; |
8 | |
import org.jbehave.core.model.Story; |
9 | |
|
10 | |
public class FilteredStory { |
11 | |
|
12 | |
private boolean alwaysAllowed; |
13 | |
private boolean storyAllowed; |
14 | |
private Map<Scenario, Boolean> scenariosAllowed; |
15 | |
|
16 | |
public FilteredStory(MetaFilter filter, Story story, StoryControls storyControls){ |
17 | 0 | this(filter, story, storyControls, false); |
18 | 0 | } |
19 | |
|
20 | 131 | public FilteredStory(MetaFilter filter, Story story, StoryControls storyControls, boolean givenStory) { |
21 | 131 | if ( givenStory && storyControls.ignoreMetaFiltersIfGivenStory() ){ |
22 | 1 | alwaysAllowed = true; |
23 | |
} |
24 | 131 | String storyMetaPrefix = storyControls.storyMetaPrefix(); |
25 | 131 | String scenarioMetaPrefix = storyControls.scenarioMetaPrefix(); |
26 | 131 | Meta storyMeta = story.getMeta().inheritFrom(story.asMeta(storyMetaPrefix)); |
27 | 130 | storyAllowed = filter.allow(storyMeta); |
28 | 130 | scenariosAllowed = new HashMap<Scenario, Boolean>(); |
29 | 130 | for (Scenario scenario : story.getScenarios()) { |
30 | 248 | Meta scenarioMeta = scenario.getMeta().inheritFrom( |
31 | 124 | scenario.asMeta(scenarioMetaPrefix).inheritFrom(storyMeta)); |
32 | 124 | boolean scenarioAllowed = filter.allow(scenarioMeta); |
33 | 124 | scenariosAllowed.put(scenario, scenarioAllowed); |
34 | 124 | } |
35 | 130 | } |
36 | |
|
37 | |
public boolean allowed() { |
38 | 130 | if ( alwaysAllowed ) return true; |
39 | 129 | return storyAllowed || scenariosAllowed.values().contains(true); |
40 | |
} |
41 | |
|
42 | |
public boolean allowed(Scenario scenario) { |
43 | 75 | if ( alwaysAllowed ) return true; |
44 | 74 | return scenariosAllowed.get(scenario); |
45 | |
} |
46 | |
} |