Narrative.java

  1. package org.jbehave.core.model;

  2. import org.apache.commons.lang3.builder.ToStringBuilder;
  3. import org.apache.commons.lang3.builder.ToStringStyle;
  4. import org.jbehave.core.configuration.Keywords;

  5. @SuppressWarnings("checkstyle:MemberName")
  6. public class Narrative {

  7.     public static final Narrative EMPTY = new Narrative("", "", "");

  8.     private static final String NL = "\n";
  9.     private static final String SPACE = " ";

  10.     private final String inOrderTo;
  11.     private final String asA;
  12.     private final String iWantTo;
  13.     private final String soThat;

  14.     @SuppressWarnings("checkstyle:ParameterName")
  15.     public Narrative(String inOrderTo, String asA, String iWantTo) {
  16.         this(inOrderTo, asA, iWantTo, "");
  17.     }

  18.     @SuppressWarnings("checkstyle:ParameterName")
  19.     public Narrative(String inOrderTo, String asA, String iWantTo, String soThat) {
  20.         this.inOrderTo = inOrderTo;
  21.         this.asA = asA;
  22.         this.iWantTo = iWantTo;
  23.         this.soThat = soThat;
  24.     }

  25.     public String inOrderTo() {
  26.         return inOrderTo;
  27.     }

  28.     public String asA() {
  29.         return asA;
  30.     }

  31.     @SuppressWarnings("checkstyle:MethodName")
  32.     public String iWantTo() {
  33.         return iWantTo;
  34.     }

  35.     public String soThat() {
  36.         return soThat;
  37.     }
  38.    
  39.     public boolean isEmpty() {
  40.         return EMPTY == this;
  41.     }

  42.     public boolean isAlternative() {
  43.         return inOrderTo.isEmpty();
  44.     }

  45.     public String asString(Keywords keywords) {
  46.         StringBuilder sb = new StringBuilder();
  47.         if (isAlternative()) {
  48.             sb.append(keywords.asA()).append(SPACE).append(asA).append(NL);
  49.             sb.append(keywords.iWantTo()).append(SPACE).append(iWantTo)
  50.                     .append(NL);
  51.             sb.append(keywords.soThat()).append(SPACE).append(soThat);
  52.         } else {
  53.             sb.append(keywords.inOrderTo()).append(SPACE).append(inOrderTo)
  54.                     .append(NL);
  55.             sb.append(keywords.asA()).append(SPACE).append(asA).append(NL);
  56.             sb.append(keywords.iWantTo()).append(SPACE).append(iWantTo);
  57.         }
  58.         return sb.toString();
  59.     }

  60.     @Override
  61.     public String toString() {
  62.         return ToStringBuilder.reflectionToString(this, ToStringStyle.SHORT_PREFIX_STYLE);
  63.     }


  64. }