From 193290c9a575a1e92fd14b97c56556df2e11fad6 Mon Sep 17 00:00:00 2001
From: Alan Birchler De Allende <alan.birchler@telecom-paris.fr>
Date: Tue, 9 Apr 2024 16:31:08 +0200
Subject: [PATCH] Finished integrating drawing of ATs from AI responses.

---
 capectracer/requirements_capec_tracer.txt   |  3 +-
 capectracer/requirements_model_training.txt |  4 +--
 src/main/java/ai/AIAttackPatternTree1.java  |  2 +-
 src/main/java/ui/window/JFrameAI.java       | 35 +++++----------------
 4 files changed, 13 insertions(+), 31 deletions(-)

diff --git a/capectracer/requirements_capec_tracer.txt b/capectracer/requirements_capec_tracer.txt
index 205667098d..354c7e3f16 100644
--- a/capectracer/requirements_capec_tracer.txt
+++ b/capectracer/requirements_capec_tracer.txt
@@ -2,4 +2,5 @@ scikit-learn==1.0.2
 gensim==4.1.2
 spacy==3.7.2
 xmltodict==0.13.0
-nltk==3.7
\ No newline at end of file
+nltk==3.7
+scipy==1.10.1
diff --git a/capectracer/requirements_model_training.txt b/capectracer/requirements_model_training.txt
index 46d9d49fec..9a9fd05fba 100644
--- a/capectracer/requirements_model_training.txt
+++ b/capectracer/requirements_model_training.txt
@@ -1,4 +1,4 @@
 tqdm==4.64.0
-numpy==1.21.5
+numpy==1.22.4
 bayesian-optimization==1.4.3
-pandas==1.4.2
\ No newline at end of file
+pandas==1.4.2
diff --git a/src/main/java/ai/AIAttackPatternTree1.java b/src/main/java/ai/AIAttackPatternTree1.java
index 4d965d7fb5..bd11221c5a 100644
--- a/src/main/java/ai/AIAttackPatternTree1.java
+++ b/src/main/java/ai/AIAttackPatternTree1.java
@@ -299,7 +299,7 @@ public class AIAttackPatternTree1 extends AIInteract {
         }
     }
 
-    public Object applyAnswer(Object input) { return at; }
+    public Object applyAnswer(Object input) { return atList; }
 
     private void initKnowledge() {
         chatData.aiinterface.clearKnowledge();
diff --git a/src/main/java/ui/window/JFrameAI.java b/src/main/java/ui/window/JFrameAI.java
index ddede95b58..cbed87d77c 100644
--- a/src/main/java/ui/window/JFrameAI.java
+++ b/src/main/java/ui/window/JFrameAI.java
@@ -640,13 +640,6 @@ public class JFrameAI extends JFrame implements ActionListener {
     }
 
     private void applyAttackTree(Object spec) {
-//        TDiagramPanel tdp = mgui.getCurrentTDiagramPanel();
-//
-//        if (!(tdp instanceof AttackTreeDiagramPanel)) {
-//            error("An attack tree diagram must be selected first");
-//            return;
-//        }
-
         if (spec == null) {
             error("Empty attack tree diagram generated by AI");
             return;
@@ -656,8 +649,7 @@ public class JFrameAI extends JFrame implements ActionListener {
             error("Invalid attack tree diagram generated by AI");
             return;
         }
-
-//        AttackTreeDiagramPanel atpanel = (AttackTreeDiagramPanel) tdp;
+        
         AttackTree at = (AttackTree) spec;
 
         inform("Drawing attack tree diagram with ai answer, please wait\n");
@@ -669,32 +661,21 @@ public class JFrameAI extends JFrame implements ActionListener {
     }
 
     private void applyAttackTrees(Object spec) {
-//        TDiagramPanel tdp = mgui.getCurrentTDiagramPanel();
-//
-//        if (!(tdp instanceof AttackTreeDiagramPanel)) {
-//            error("An attack tree diagram must be selected first");
-//            return;
-//        }
-
         if (spec == null) {
-            error("Empty attack tree diagram generated by AI");
+            error("Empty attack tree diagram list generated by AI");
             return;
         }
 
-        if (!(spec instanceof AttackTree)) {
-            error("Invalid attack tree diagram generated by AI");
+        if (!(spec instanceof Iterable)) {
+            error("Invalid attack tree diagram list generated by AI");
             return;
         }
 
-//        AttackTreeDiagramPanel atpanel = (AttackTreeDiagramPanel) tdp;
-        AttackTree at = (AttackTree) spec;
-
-        inform("Drawing attack tree diagram with ai answer, please wait\n");
-        TraceManager.addDev("Considered AT: " + at.toString());
+        Iterable<Object> atList = (Iterable<Object>) spec;
 
-        mgui.drawAttackTreeDiagram(at);
-
-        inform("Enhancing attack tree diagram with ai answer: done\n");
+        for (Object at : atList) {
+            applyAttackTree(at);
+        }
     }
 
     private void applyIdentifySystemBlocks(Object input) {
-- 
GitLab