public Requirement withChild(Requirement child) { List<Requirement> newChildren = new ArrayList(children); newChildren.remove(child); newChildren.add(child); return new Requirement(name, id, displayName,cardNumber,parent, type, narrative, newChildren, examples,releaseVersions).withTags(this.tags); }
public Requirement setTo(String value, String renderedValue) { List<CustomFieldValue> customFields = new ArrayList(requirement.getCustomFieldValues()); customFields.add(new CustomFieldValue(fieldName, value, renderedValue)); return new Requirement(requirement.name, requirement.id, requirement.displayName, requirement.cardNumber, requirement.parent, requirement.type, requirement.path, requirement.narrative, requirement.children, requirement.examples, requirement.releaseVersions, customFields).withTags(requirement.tags); }
public Requirement merge(Requirement newRequirement) { String mergedCardNumber = isEmpty(cardNumber) ? newRequirement.cardNumber : cardNumber; String mergedDisplayName= (isEmpty(displayName) || name.equalsIgnoreCase(displayName)) ? newRequirement.displayName : displayName; String mergedNarrativeText = isEmpty(narrative.getText()) ? newRequirement.narrative.getText() : narrative.getText(); String mergedPath = isEmpty(path) ? newRequirement.path : path; String mergedFeatureFileName = isEmpty(featureFileName) ? newRequirement.featureFileName : featureFileName; List<String> mergedReleasVersions = ListUtils.union(releaseVersions, newRequirement.releaseVersions) ; List<Example> mergedExamples = ListUtils.union(examples, newRequirement.examples); List<CustomFieldValue> mergedCustomFields = ListUtils.union(customFields, newRequirement.customFields); List<Requirement> mergedChildren = mergeRequirementLists(children, newRequirement.children); return Requirement.named(name) .withOptionalParent(parent) .withOptionalCardNumber(mergedCardNumber) .withType(type) .withNarrative(mergedNarrativeText) .withPath(mergedPath) .withDisplayName(mergedDisplayName) .withReleaseVersions(mergedReleasVersions) .withExamples(mergedExamples) .withCustomFields(mergedCustomFields) .withFeatureFileyName(mergedFeatureFileName) .withChildren(mergedChildren) .withTags(tags); }
private Requirement leafRequirementWithNarrative(String shortName, String path, Narrative requirementNarrative) { String displayName = getTitleFromNarrativeOrDirectoryName(requirementNarrative, shortName); String cardNumber = requirementNarrative.getCardNumber().orElse(null); String type = requirementNarrative.getType(); List<String> releaseVersions = requirementNarrative.getVersionNumbers(); return Requirement.named(shortName) .withId(requirementNarrative.getId().orElse(path)) .withOptionalDisplayName(displayName) .withOptionalCardNumber(cardNumber) .withType(type) .withNarrative(requirementNarrative.getText()) .withPath(relativeDirectoryOf(path)) .withReleaseVersions(releaseVersions) .withTags(requirementNarrative.getTags()); }