StoryLanes.java
- package org.jbehave.core.model;
- import java.util.ArrayList;
- import java.util.Collections;
- import java.util.Comparator;
- import java.util.List;
- import org.jbehave.core.io.StoryNameResolver;
- /**
- * Represents a <a href="http://en.wikipedia.org/wiki/Swim_lane">Swim Lane</a>
- * view of {@link StoryMaps}.
- */
- public class StoryLanes {
- private final StoryMaps storyMaps;
- private final StoryNameResolver nameResolver;
- public StoryLanes(StoryMaps storyMaps, StoryNameResolver nameResolver) {
- this.storyMaps = storyMaps;
- this.nameResolver = nameResolver;
- }
- public List<Story> getStories() {
- List<Story> stories = new ArrayList<>(laneStories("")); // returns all stories
- Collections.sort(stories, new Comparator<Story>() {
- @Override
- public int compare(Story o1, Story o2) {
- return o1.getName().compareTo(o2.getName());
- }
- });
- return stories;
- }
- public List<String> getLanes() {
- List<String> lanes = storyMaps.getMetaFilters();
- lanes.remove(""); // don't want to display all stories again
- Collections.sort(lanes);
- return lanes;
- }
- public boolean inLane(String lane, Story story) {
- for (Story laneStory : laneStories(lane)) {
- if (laneStory.getPath().equals(story.getPath())) {
- return true;
- }
- }
- return false;
- }
- private List<Story> laneStories(String lane) {
- StoryMap storyMap = storyMaps.getMap(lane);
- List<Story> stories = new ArrayList<>();
- if (storyMap == null) {
- for (StoryMap map : storyMaps.getMaps()) {
- stories.addAll(map.getStories());
- }
- } else {
- stories.addAll(storyMap.getStories());
- }
- nameStories(stories);
- return stories;
- }
- private void nameStories(List<Story> stories) {
- for (Story story : stories) {
- story.namedAs(nameResolver.resolveName(story.getPath()));
- }
-
- }
- }