package org.jbehave.core.model;
import static java.util.Collections.unmodifiableList;
import java.util.Arrays;
import java.util.List;
import java.util.Properties;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;
public class Scenario {
private final String title;
private final Meta meta;
private final GivenStories givenStories;
private final ExamplesTable examplesTable;
private final List<String> steps;
public Scenario() {
this(Arrays.<String>asList());
}
public Scenario(List<String> steps) {
this("", steps);
}
public Scenario(String title, Meta meta) {
this(title, meta, GivenStories.EMPTY, ExamplesTable.EMPTY, Arrays.<String>asList());
}
public Scenario(String title, List<String> steps) {
this(title, Meta.EMPTY, GivenStories.EMPTY, ExamplesTable.EMPTY, steps);
}
public Scenario(String title, Meta meta, GivenStories givenStories, ExamplesTable examplesTable, List<String> steps) {
this.title = title;
this.meta = meta;
this.givenStories = givenStories;
this.examplesTable = examplesTable;
this.steps = steps;
}
public String getTitle() {
return title;
}
public GivenStories getGivenStories() {
return givenStories;
}
public ExamplesTable getExamplesTable() {
return examplesTable;
}
public Meta asMeta(String prefix){
Properties p = new Properties();
p.setProperty(prefix+"title", title);
p.setProperty(prefix+"givenStories", givenStories.asString());
p.setProperty(prefix+"examplesTable", examplesTable.asString());
return new Meta(p);
}
public Meta getMeta(){
return meta;
}
public List<String> getSteps() {
return unmodifiableList(steps);
}
@Override
public String toString() {
return ToStringBuilder.reflectionToString(this, ToStringStyle.SHORT_PREFIX_STYLE);
}
}