PrintingStepdocReporter.java

  1. package org.jbehave.core.reporters;

  2. import java.util.List;

  3. import org.jbehave.core.steps.Stepdoc;

  4. public abstract class PrintingStepdocReporter implements StepdocReporter {

  5.     private static final String STEP_MATCHED_BY = "Step '%s' is matched by annotated patterns:";
  6.     private static final String STEP_NOT_MATCHED = "Step '%s' is not matched by any pattern";
  7.     private static final String STEPDOC = "'%s %s'";

  8.     @Override
  9.     public void stepdocsMatching(String stepAsString,
  10.             List<Stepdoc> stepdocs, List<Object> stepsInstances) {
  11.         if (stepdocs.size() > 0) {
  12.             output(STEP_MATCHED_BY, stepAsString);
  13.             outputStepdocs(stepdocs);
  14.         } else {
  15.             output(STEP_NOT_MATCHED, stepAsString);
  16.         }
  17.         outputStepsInstances(stepsInstances);
  18.     }

  19.     @Override
  20.     public void stepdocs(List<Stepdoc> stepdocs, List<Object> stepsInstances) {
  21.         outputStepdocs(stepdocs);
  22.         outputStepsInstances(stepsInstances);
  23.     }

  24.     private void outputStepdocs(List<Stepdoc> stepdocs) {
  25.         for (Stepdoc stepdoc : stepdocs) {
  26.             output(STEPDOC, stepdoc.getStartingWord(), stepdoc.getPattern());
  27.             output(stepdoc.getMethodSignature());
  28.         }
  29.     }

  30.     private void outputStepsInstances(List<Object> stepsInstances) {
  31.         if (stepsInstances.size() > 0) {
  32.             output("from steps instances:");
  33.             for (Object stepsInstance : stepsInstances) {
  34.                 output(stepsInstance.getClass().getName());
  35.             }
  36.         } else {
  37.             output("as no steps instances are provided");
  38.         }
  39.     }

  40.     protected abstract void output(String format, Object... args);
  41. }