Coverage Report - org.jbehave.core.model.GivenStory
 
Classes in this File Line Coverage Branch Coverage Complexity
GivenStory
100%
28/28
83%
10/12
1.364
 
 1  
 package org.jbehave.core.model;
 2  
 
 3  
 import java.util.HashMap;
 4  
 import java.util.Map;
 5  
 import java.util.regex.Matcher;
 6  
 import java.util.regex.Pattern;
 7  
 
 8  
 import org.apache.commons.lang.StringUtils;
 9  
 import org.apache.commons.lang.builder.ToStringBuilder;
 10  
 import org.apache.commons.lang.builder.ToStringStyle;
 11  
 
 12  
 import static java.util.regex.Pattern.DOTALL;
 13  
 import static java.util.regex.Pattern.compile;
 14  
 
 15  
 public class GivenStory {
 16  
 
 17  
     private static final String PATH_REGEX = "(.*)\\#\\{(.*?)\\}";
 18  
     private static final String PARAMETERS_REGEX = ".*(\\:|\\;).*";
 19  
     private final String givenStoryAsString;
 20  59
     private Map<String, String> parameters = new HashMap<String, String>();
 21  
     private String path;
 22  
     private String anchor;
 23  
 
 24  59
     public GivenStory(String givenStoryAsString) {
 25  59
         this.givenStoryAsString = givenStoryAsString.trim();
 26  59
         parse();
 27  59
     }
 28  
 
 29  
     private void parse() {
 30  59
         Pattern pattern = compile(PATH_REGEX, DOTALL);
 31  59
         Matcher matcher = pattern.matcher(givenStoryAsString.trim());
 32  59
         if (matcher.matches()) {
 33  5
             path = matcher.group(1).trim();
 34  5
             anchor = matcher.group(2).trim();
 35  
         } else {
 36  54
             path = givenStoryAsString;
 37  54
             anchor = "";
 38  
         }
 39  59
     }
 40  
 
 41  
     public String getPath() {
 42  12
         return path;
 43  
     }
 44  
 
 45  
     public String getAnchor() {
 46  67
         return anchor;
 47  
     }
 48  
 
 49  
     public boolean hasAnchor() {
 50  46
         return !StringUtils.isBlank(anchor);
 51  
     }
 52  
 
 53  
     public boolean hasAnchorParameters() {
 54  4
         return hasAnchor() && anchor.matches(PARAMETERS_REGEX);
 55  
     }
 56  
 
 57  
     public Map<String, String> getAnchorParameters() {
 58  1
         Map<String,String> parameters = new HashMap<String, String>();
 59  3
         for ( String pair : anchor.trim().split(";") ){
 60  2
             String[] split = pair.split(":");
 61  2
             if ( split.length > 1 ){
 62  2
                 parameters.put(split[0], split[1]);
 63  
             }
 64  
         }
 65  1
         return parameters;
 66  
     }
 67  
 
 68  
     public Map<String, String> getParameters() {
 69  10
         return parameters;
 70  
     }
 71  
 
 72  
     public void useParameters(Map<String, String> parameters) {
 73  62
         this.parameters = parameters;
 74  62
     }
 75  
 
 76  
     public String asString() {
 77  45
         return givenStoryAsString;
 78  
     }
 79  
 
 80  
     public String toString() {
 81  17
         return ToStringBuilder.reflectionToString(this, ToStringStyle.SHORT_PREFIX_STYLE);
 82  
     }
 83  
 
 84  
 }