StoryMaps.java

  1. package org.jbehave.core.model;

  2. import java.util.ArrayList;
  3. import java.util.LinkedHashMap;
  4. import java.util.List;
  5. import java.util.Map;

  6. import org.apache.commons.lang3.builder.ToStringBuilder;
  7. import org.apache.commons.lang3.builder.ToStringStyle;

  8. /**
  9.  * Provides an view of a list of {@link StoryMap}s, indexed by meta filters.
  10.  */
  11. public class StoryMaps {
  12.    
  13.     private Map<String, StoryMap> indexed = new LinkedHashMap<>();

  14.     public StoryMaps(List<StoryMap> maps) {
  15.         index(maps);
  16.     }

  17.     private void index(List<StoryMap> storyMaps) {
  18.         for (StoryMap storyMap : storyMaps) {
  19.             indexed.put(storyMap.getMetaFilter(), storyMap);
  20.         }
  21.     }

  22.     public List<String> getMetaFilters() {
  23.         return new ArrayList<>(indexed.keySet());
  24.     }

  25.     public StoryMap getMap(String metaFilter) {
  26.         return indexed.get(metaFilter);
  27.     }

  28.     public List<StoryMap> getMaps() {
  29.         return new ArrayList<>(indexed.values());
  30.     }

  31.     @Override
  32.     public String toString() {
  33.         return new ToStringBuilder(this, ToStringStyle.SHORT_PREFIX_STYLE).append("metaFilters", indexed.keySet())
  34.                 .toString();
  35.     }

  36. }