diff --git a/.idea/workspace.xml b/.idea/workspace.xml
index 194e554..f598c83 100644
--- a/.idea/workspace.xml
+++ b/.idea/workspace.xml
@@ -4,9 +4,7 @@
-
-
-
+
@@ -23,6 +21,9 @@
+
+
+
{
"associatedIndex": 1
}
@@ -35,6 +36,7 @@
"keyToString": {
"RunOnceActivity.ShowReadmeOnStart": "true",
"git-widget-placeholder": "dev__v1",
+ "ignore.virus.scanning.warn.message": "true",
"kotlin-language-version-configured": "true",
"last_opened_file_path": "C:/Users/vumin/Desktop/M1/ALO/cartailor",
"node.js.detected.package.eslint": "true",
@@ -90,6 +92,7 @@
+
diff --git a/src/fr/impl/CompatibilityCheckerImpl.java b/src/fr/impl/CompatibilityCheckerImpl.java
index 0b99b22..eaae86e 100644
--- a/src/fr/impl/CompatibilityCheckerImpl.java
+++ b/src/fr/impl/CompatibilityCheckerImpl.java
@@ -2,27 +2,26 @@ package src.fr.impl;
import java.util.HashMap;
import java.util.Set;
+
import src.fr.api.PartType;
+import src.fr.api.CompatibilityManager;
public class CompatibilityCheckerImpl implements src.fr.api.CompatibilityChecker {
+ private CompatibilityManager compatibilityManager;
- private HashMap> incompatibilities;
- private HashMap> requirements;
-
- public CompatibilityCheckerImpl( HashMap> incompatibilities, HashMap> requirements){
- this.incompatibilities=incompatibilities;
- this.requirements= requirements;
+ public CompatibilityCheckerImpl( CompatibilityManager compatibilityManager){
+ this.compatibilityManager=compatibilityManager;
}
@Override
public Set getIncompatibilities(PartType reference) {
- return this.incompatibilities.get(reference);
+ return this.compatibilityManager.getIncompatibilities(reference);
}
@Override
public Set getRequirements(PartType reference) {
- return this.requirements.get(reference);
+ return this.compatibilityManager.getRequirements(reference);
}
diff --git a/src/fr/impl/CompatibilityManagerImpl.java b/src/fr/impl/CompatibilityManagerImpl.java
index 7b43a28..77148db 100644
--- a/src/fr/impl/CompatibilityManagerImpl.java
+++ b/src/fr/impl/CompatibilityManagerImpl.java
@@ -1,6 +1,7 @@
package src.fr.impl;
import java.util.HashMap;
+import java.util.Map;
import java.util.HashSet;
import java.util.Set;
import java.util.Objects;
@@ -128,48 +129,54 @@ 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());
+ // A -> B -> C -> A, D -> B
+ //bool verify requirement (1) or incompatible (0)
+ private void Femeture_Transivite(PartType reference, Set result, Set visited, boolean bool){
+ //Condition de quitter la boucle
+ if(visited.contains(reference)){
+ return;
+ }else {
+ visited.add(reference);
+ }
+
+ Set list = null;
+ if(bool==true){ // requirement
+ //Get all requirement of A (in example is B)
+ list = this.requirements.get(reference);
+ }else{ //incompatible
+ list = this.incompatibilities.get(reference);
+ }
+
+ if(list != null){ // list = {B}
+ for(PartType pt: list){
+ if(!result.contains(pt)){
+ result.add(pt);
+ }
+ Femeture_Transivite(pt,result,visited,bool);
+ }
+
+ }
+ }
+
+ private void check_All_Catalog(PartType reference, Set result, boolean bool){
+ if(bool){ //
+
+ }
}
@Override
public Set getIncompatibilities(PartType reference) {
- // Il faut verifier ref est existé dans Hashmap
- //return this.incompatibilities.get(reference);
+ Set result = new HashSet<>();
+ Femeture_Transivite(reference, result,new HashSet<>(),false);
+ return result;
+ }
- //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) {
- 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;
+ Set result = new HashSet<>();
+ Femeture_Transivite(reference, result,new HashSet<>(),true);
+ return result;
}
}
\ No newline at end of file