private Requirement newParentRequirement(String requirementPath, Requirement parentRequirement, String packageName, int level, String defaultRequirementType) { String requirementTitle = packageName; String requirementType = defaultRequirementType; String narrativeText = ""; String cardNumber = ""; Class candidateClass = null; java.util.Optional<Narrative> narrative = java.util.Optional.empty(); try { candidateClass = Class.forName(rootPackage + "." + requirementPath + ".package-info"); narrative = NarrativeFinder.forClass(candidateClass); } catch (ClassNotFoundException ignore) { } Requirement newRequirement = getRequirement(candidateClass, packageName, level, requirementTitle, requirementType, narrativeText, cardNumber, narrative); if (parentRequirement != null) { newRequirement = newRequirement.withParent(parentRequirement.getName()); } return newRequirement; }
private List<Requirement> addParentsTo(List<Requirement> requirements, String parent) { List<Requirement> augmentedRequirements = Lists.newArrayList(); for (Requirement requirement : requirements) { List<Requirement> children = requirement.hasChildren() ? addParentsTo(requirement.getChildren(), requirement.getName()) : NO_REQUIREMENTS; augmentedRequirements.add(requirement.withParent(parent).withChildren(children)); } return augmentedRequirements; }
protected List<Requirement> addParentsTo(List<Requirement> requirements, String parent) { List<Requirement> augmentedRequirements = new ArrayList<>(); for(Requirement requirement : requirements) { List<Requirement> children = requirement.hasChildren() ? addParentsTo(requirement.getChildren(),requirement.getName()) : NO_REQUIREMENTS; augmentedRequirements.add(requirement.withParent(parent).withChildren(children)); } return augmentedRequirements; }
private List<Requirement> addParentsTo(List<Requirement> requirements, String parent) { List<Requirement> augmentedRequirements = new ArrayList<>(); for (Requirement requirement : requirements) { List<Requirement> children = requirement.hasChildren() ? addParentsTo(requirement.getChildren(), requirement.getName()) : NO_REQUIREMENTS; augmentedRequirements.add(requirement.withParent(parent).withChildren(children)); } return augmentedRequirements; }
private List<Requirement> addParentsTo(List<Requirement> requirements, String parent) { List<Requirement> augmentedRequirements = Lists.newArrayList(); for(Requirement requirement : requirements) { List<Requirement> children = requirement.hasChildren() ? addParentsTo(requirement.getChildren(),requirement.getName()) : NO_REQUIREMENTS; augmentedRequirements.add(requirement.withParent(parent).withChildren(children)); } return augmentedRequirements; }
private List<Requirement> addParentsTo(List<Requirement> requirements, String parent) { List<Requirement> augmentedRequirements = Lists.newArrayList(); for (Requirement requirement : requirements) { List<Requirement> children = requirement.hasChildren() ? addParentsTo(requirement.getChildren(), requirement.getName()) : NO_REQUIREMENTS; augmentedRequirements.add(requirement.withParent(parent).withChildren(children)); } return augmentedRequirements; }
private List<Requirement> addParentsTo(List<Requirement> requirements, String parent) { List<Requirement> augmentedRequirements = Lists.newArrayList(); for(Requirement requirement : requirements) { List<Requirement> children = requirement.hasChildren() ? addParentsTo(requirement.getChildren(),requirement.getName()) : NO_REQUIREMENTS; augmentedRequirements.add(requirement.withParent(parent).withChildren(children)); } return augmentedRequirements; }
private Requirement newRequirement(Class candidateClass, String currentPath, Requirement parentRequirement, String packageName, int level, String defaultRequirementType) { String requirementTitle = packageName; String requirementType = defaultRequirementType; String narrativeText = ""; String cardNumber = ""; java.util.Optional<Narrative> narrative = NarrativeFinder.forClass(candidateClass); Requirement newRequirement = getRequirement(candidateClass, packageName, level, requirementTitle, requirementType, narrativeText, cardNumber, narrative); if (parentRequirement != null) { newRequirement = newRequirement.withParent(parentRequirement.getName()); } return newRequirement; }
private Requirement requirementDefinedByNarrativeAt(String path, Collection<Requirement> knownRequirements) { List<String> pathElements = elementsOf(path, rootPackage); List<String> featurePathElements = allButLast(pathElements); String featureName = humanize(lastOf(featurePathElements)); String parent = null; if (featurePathElements.size() >= 2) { parent = humanize(secondLastOf(featurePathElements)); } int startFromRequirementLevel = requirementsConfiguration.startLevelForADepthOf(requirementsDepth); String typeByLevel = requirementsConfiguration.getRequirementType(startFromRequirementLevel + featurePathElements.size() - 1); String type = PackageInfoNarrative.type().definedInPath(path).orElse(typeByLevel); Optional<Requirement> knownMatchingRequirement = findMatchingRequirementWithName(knownRequirements, featureName, type); if (knownMatchingRequirement.isPresent()) { knownRequirements.remove(knownMatchingRequirement); } return knownMatchingRequirement.orElse(Requirement.named(featureName).withTypeOf(type)) .withNarrative(PackageInfoNarrative.text().definedInPath(path).orElse("")) .withParent(parent) .withPath(Joiner.on("/").join(featurePathElements)); }
public void to(Collection<Requirement> allRequirements) { List<String> parentElements = PackageInfoClass.isDefinedIn(path) ? allButLast(allButLast(elementsOf(path, rootPackage))) : allButLast(elementsOf(path, rootPackage)); int startFromRequirementLevel = getRequirementTypes().size() - requirementsDepth; int level = startFromRequirementLevel; Requirement parent = null; StringBuilder fullPath = new StringBuilder(rootPackage); for (String pathElement : parentElements) { String type = requirementsConfiguration.getRequirementType(level++); fullPath.append(".").append(pathElement); Requirement nextRequirement; String parentName = (parent != null) ? parent.getName() : null; if (requirementExistsCalled(humanize(pathElement), allRequirements)) { nextRequirement = requirementCalled(humanize(pathElement), allRequirements).withParent(parentName); } else { String narrativeText = PackageInfoNarrative.text().definedInPath(fullPath.toString()).orElse(NarrativeTitle.definedIn(fullPath.toString(), type)); String narrativeType = PackageInfoNarrative.type().definedInPath(fullPath.toString()).orElse(type); nextRequirement = (Requirement.named(humanize(pathElement)).withType(narrativeType).withNarrative(narrativeText)).withParent(parentName); allRequirements.add(nextRequirement); } if (parent != null) { addChild(nextRequirement).toParent(parent).in(allRequirements); } parent = nextRequirement; } addChild(leafRequirement).toParent(parent).in(allRequirements); }
private Requirement requirementDefinedByClassNameAt(String path) { List<String> pathElements = elementsOf(path, rootPackage); String storyName = humanize(lastOf(pathElements)); String parent = null; if (pathElements.size() >= 2) { parent = humanize(secondLastOf(pathElements)); } String narrativeText = PackageInfoNarrative.text().definedInPath(path) .orElse(ClassNarrative.text().definedInPath(path).orElse("")); String narrativeType = PackageInfoNarrative.type().definedInPath(path) .orElse(ClassNarrative.type().definedInPath(path).orElse(leafRequirementTypeFrom(pathElements))); Requirement story = Requirement.named(storyName) .withType(narrativeType) .withNarrative(narrativeText) .withParent(parent) .withPath(Joiner.on("/").join(allButLast(pathElements))); return story; }