diff --git a/src/fr/impl/CompatibilityManagerImpl.java b/src/fr/impl/CompatibilityManagerImpl.java index 94b30e4..7b43a28 100644 --- a/src/fr/impl/CompatibilityManagerImpl.java +++ b/src/fr/impl/CompatibilityManagerImpl.java @@ -127,18 +127,49 @@ public class CompatibilityManagerImpl implements src.fr.api.CompatibilityManager } } } + + // A - incompatible B + B require C => A incompatbile C + // This is B require C + protected Set getIncompability_middle(PartType reference){ + return this.requirements.getOrDefault(reference, new HashSet()); + } @Override public Set getIncompatibilities(PartType reference) { // Il faut verifier ref est existé dans Hashmap //return this.incompatibilities.get(reference); + + //A incompatible B + Set parts = this.incompatibilities.getOrDefault(reference, new HashSet()); + + // A incompatible C + //Get all incomptability with transivity + if (parts != null){ + for( PartType p: parts){ + parts.addAll(this.getIncompability_middle(p)); + } + } + return parts; + } + + + //Same but B incompatible C + protected Set getRequirement_middle(PartType reference){ return this.incompatibilities.getOrDefault(reference, new HashSet()); } @Override public Set getRequirements(PartType reference) { - //return this.requirements.get(reference); - return this.requirements.getOrDefault(reference, new HashSet()); + Set parts = this.requirements.getOrDefault(reference, new HashSet()); + + // A incompatible C + //Get all incomptability with transivity + if (parts != null){ + for( PartType p: parts){ + parts.addAll(this.getRequirement_middle(p)); + } + } + return parts; } } \ No newline at end of file