Story.java
- package org.jbehave.core.model;
- import static java.util.Collections.unmodifiableList;
- import static org.apache.commons.lang3.StringUtils.EMPTY;
- import java.io.File;
- import java.util.Arrays;
- import java.util.List;
- import java.util.Properties;
- import java.util.UUID;
- import org.apache.commons.lang3.builder.ToStringBuilder;
- import org.apache.commons.lang3.builder.ToStringStyle;
- public class Story {
- private final String id = UUID.randomUUID().toString();
- private final String path;
- private final Description description;
- private final Narrative narrative;
- private final Meta meta;
- private final GivenStories givenStories;
- private final Lifecycle lifecycle;
- private final List<Scenario> scenarios;
- private String name;
- public Story() {
- this(Arrays.<Scenario>asList());
- }
- public Story(String path) {
- this(path, null, null, Arrays.<Scenario>asList());
- }
- public Story(String path, List<Scenario> scenarios) {
- this(path, null, null,null, scenarios);
- }
- public Story(List<Scenario> scenarios) {
- this(null, null, scenarios);
- }
- public Story(Description description, Narrative narrative, List<Scenario> scenarios) {
- this(null, description, narrative, scenarios);
- }
- public Story(String path, Description description, Narrative narrative, List<Scenario> scenarios) {
- this(path, description, null, narrative, scenarios);
- }
- public Story(String path, Description description, Meta meta, Narrative narrative, List<Scenario> scenarios) {
- this(path, description, meta, narrative, null, scenarios);
- }
- public Story(String path, Description description, Meta meta, Narrative narrative, GivenStories givenStories,
- List<Scenario> scenarios) {
- this(path, description, meta, narrative, givenStories, null, scenarios);
- }
- public Story(String path, Description description, Meta meta, Narrative narrative, GivenStories givenStories,
- Lifecycle lifecycle, List<Scenario> scenarios) {
- this.path = path;
- if (path != null) {
- this.name = new File(path).getName();
- }
- this.description = description;
- this.narrative = narrative;
- this.meta = meta;
- this.givenStories = givenStories;
- this.lifecycle = lifecycle;
- this.scenarios = scenarios;
- }
- public Story(Story story, String path, Lifecycle lifecycle) {
- this(path, story.description, story.meta, story.narrative, story.givenStories, lifecycle, story.scenarios);
- }
- public String getPath() {
- if (path == null) {
- return EMPTY;
- }
- return path;
- }
- public boolean hasDescription() {
- return description != null;
- }
- public Description getDescription() {
- if (!hasDescription()) {
- return Description.EMPTY;
- }
- return description;
- }
- public boolean hasNarrative() {
- return narrative != null;
- }
- public Narrative getNarrative() {
- if (!hasNarrative()) {
- return Narrative.EMPTY;
- }
- return narrative;
- }
- public boolean hasMeta() {
- return meta != null;
- }
- public Meta getMeta() {
- if (!hasMeta()) {
- return Meta.EMPTY;
- }
- return meta;
- }
- public Meta asMeta(String prefix) {
- Properties p = new Properties();
- p.setProperty(prefix + "path", getPath());
- p.setProperty(prefix + "description", getDescription().asString());
- p.setProperty(prefix + "narrative", getNarrative().toString());
- return new Meta(p);
- }
- public boolean hasGivenStories() {
- return givenStories != null;
- }
- public GivenStories getGivenStories() {
- if (!hasGivenStories()) {
- return GivenStories.EMPTY;
- }
- return givenStories;
- }
- public boolean hasLifecycle() {
- return lifecycle != null;
- }
- public Lifecycle getLifecycle() {
- if (!hasLifecycle()) {
- return Lifecycle.EMPTY;
- }
- return lifecycle;
- }
-
- public List<Scenario> getScenarios() {
- return unmodifiableList(scenarios);
- }
- public String getName() {
- return (name != null ? name : getPath());
- }
- public String getId() {
- return id;
- }
- public void namedAs(String name) {
- this.name = name;
- }
- public Story cloneWithScenarios(List<Scenario> scenarios) {
- Story story = new Story(path, description, meta, narrative, givenStories, lifecycle, scenarios);
- story.namedAs(name);
- return story;
- }
- @Override
- public String toString() {
- return ToStringBuilder.reflectionToString(this, ToStringStyle.SHORT_PREFIX_STYLE);
- }
- }