1 package org.openecomp.sdc.vendorsoftwareproduct.utils;
3 import java.util.HashMap;
4 import java.util.HashSet;
8 public class ComponentDependencyTracker {
9 Map<String, Set<String>> store = new HashMap<>();
14 * @param dependent the dependent
15 * @param dependsOn the depends on
17 public void addDependency(String dependent, String dependsOn) {
18 if (dependent != null && dependsOn != null && dependent.trim().length() > 0 && dependsOn.trim()
20 dependent = dependent.toLowerCase();
21 dependsOn = dependsOn.toLowerCase();
22 Set<String> dependsOnList = store.get(dependent);
23 if (dependsOnList == null) {
24 dependsOnList = new HashSet<>();
25 store.put(dependent, dependsOnList);
27 dependsOnList.add(dependsOn);
32 * Is cyclic dependency present boolean.
36 public boolean isCyclicDependencyPresent() {
37 Set<Map.Entry<String, Set<String>>> entries = store.entrySet();
38 for (Map.Entry<String, Set<String>> entry : entries) {
39 for (String dependentOn : entry.getValue()) {
40 if (!entry.getKey().equals(dependentOn) && isCyclicDependencyPresent(entry.getKey(),
49 private boolean isCyclicDependencyPresent(String root, String dependentOn) {
50 Set<String> dependentOnList = store.get(dependentOn);
51 if (dependentOnList != null && dependentOnList.contains(root)) {
53 } else if (dependentOnList != null) {
54 for (String item : dependentOnList) {
55 return isCyclicDependencyPresent(root, item);