From c7d4c0cb5eb00249646479d6fbb031dc3dfc4a14 Mon Sep 17 00:00:00 2001
From: Matias Mennecart <matias.mennecart.etu@univ-lille.fr>
Date: Thu, 24 Oct 2024 09:58:23 +0200
Subject: [PATCH] Fix d'exceptions

---
 .../controller/AddDataController.java              |  1 -
 .../controller/AxesSettingsController.java         |  4 +++-
 .../controller/LoadDataController.java             | 14 +++++++++-----
 .../sae/classification/view/AddDataView.java       | 11 +++++++++++
 .../sae/classification/view/AxesSettingsView.java  | 13 ++++++++++++-
 .../sae/classification/view/MainStageView.java     | 11 ++++-------
 6 files changed, 39 insertions(+), 15 deletions(-)

diff --git a/src/main/java/fr/univlille/sae/classification/controller/AddDataController.java b/src/main/java/fr/univlille/sae/classification/controller/AddDataController.java
index 6bfce0f..fe5fd7a 100644
--- a/src/main/java/fr/univlille/sae/classification/controller/AddDataController.java
+++ b/src/main/java/fr/univlille/sae/classification/controller/AddDataController.java
@@ -57,7 +57,6 @@ public class AddDataController {
     public void validate() throws IOException {
         System.out.println("validé");
         ClassificationModel.getClassificationModel().ajouterDonnee(sepalLengthSpinner.getValue(), sepalWidthSpinner.getValue(), petalLengthSpinner.getValue(), petalWidthSpinner.getValue());
-        mainStageView.update(mainStageView.getModel(),new Iris(sepalWidthSpinner.getValue(),sepalLengthSpinner.getValue(),petalWidthSpinner.getValue(),petalLengthSpinner.getValue()));
         stage.close();
     }
 
diff --git a/src/main/java/fr/univlille/sae/classification/controller/AxesSettingsController.java b/src/main/java/fr/univlille/sae/classification/controller/AxesSettingsController.java
index 16cae7a..ed9dce6 100644
--- a/src/main/java/fr/univlille/sae/classification/controller/AxesSettingsController.java
+++ b/src/main/java/fr/univlille/sae/classification/controller/AxesSettingsController.java
@@ -1,5 +1,6 @@
 package fr.univlille.sae.classification.controller;
 
+import fr.univlille.sae.classification.model.ClassificationModel;
 import fr.univlille.sae.classification.view.MainStageView;
 import javafx.fxml.FXML;
 import javafx.scene.control.Button;
@@ -41,7 +42,8 @@ public class AxesSettingsController{
     public void validate(){
         mainStageView.setActualX(selectAbs.getValue().toString());
         mainStageView.setActualY(selectOrd.getValue().toString());
-        mainStageView.update(mainStageView.getModel());
+
+        mainStageView.update(ClassificationModel.getClassificationModel());
         stage.close();
     }
 }
diff --git a/src/main/java/fr/univlille/sae/classification/controller/LoadDataController.java b/src/main/java/fr/univlille/sae/classification/controller/LoadDataController.java
index cf27808..902fb93 100644
--- a/src/main/java/fr/univlille/sae/classification/controller/LoadDataController.java
+++ b/src/main/java/fr/univlille/sae/classification/controller/LoadDataController.java
@@ -2,6 +2,7 @@ package fr.univlille.sae.classification.controller;
 
 import fr.univlille.sae.classification.model.ClassificationModel;
 import javafx.fxml.FXML;
+import javafx.scene.control.Alert;
 import javafx.scene.control.Button;
 import javafx.scene.control.Label;
 import javafx.scene.control.TextField;
@@ -29,10 +30,6 @@ public class LoadDataController {
     File file;
 
 
-    public void loadData() {
-        System.out.println("Loading data");
-        stage.close();
-    }
 
 
     public void openFileChooser() {
@@ -49,7 +46,14 @@ public class LoadDataController {
     public void validate() throws IOException {
 
         if (file == null) {
-            stage.close();
+            Alert alert = new Alert(Alert.AlertType.ERROR);
+            alert.setTitle("Erreur de chargement du fichier");
+            alert.setHeaderText(null);
+            alert.initOwner(stage);
+            alert.setContentText("Le chargement du fichier à echoué, veuillez reessayer !");
+            alert.showAndWait();
+            openFileChooser();
+            return;
             //throw exception
         }
         ClassificationModel.getClassificationModel().loadData(file);
diff --git a/src/main/java/fr/univlille/sae/classification/view/AddDataView.java b/src/main/java/fr/univlille/sae/classification/view/AddDataView.java
index 3519b8f..5ab2287 100644
--- a/src/main/java/fr/univlille/sae/classification/view/AddDataView.java
+++ b/src/main/java/fr/univlille/sae/classification/view/AddDataView.java
@@ -4,6 +4,7 @@ import fr.univlille.sae.classification.controller.AddDataController;
 import fr.univlille.sae.classification.controller.AxesSettingsController;
 import fr.univlille.sae.classification.model.ClassificationModel;
 import javafx.fxml.FXMLLoader;
+import javafx.scene.control.Alert;
 import javafx.stage.Modality;
 import javafx.stage.Stage;
 
@@ -41,6 +42,16 @@ public class AddDataView {
 
         controller.setMainStageView(mainStageView);
 
+        if(model.getDatas().isEmpty()) {
+            Alert alert = new Alert(Alert.AlertType.WARNING);
+            alert.setTitle("Erreur");
+            alert.setHeaderText(null);
+            alert.setContentText("Veuillez d'abord charger les données avant pouvoir ajouter un point");
+            alert.showAndWait();
+            return;
+        }
+
+
         root.setResizable(false);
         root.initOwner(owner);
         root.initModality(Modality.APPLICATION_MODAL);
diff --git a/src/main/java/fr/univlille/sae/classification/view/AxesSettingsView.java b/src/main/java/fr/univlille/sae/classification/view/AxesSettingsView.java
index d5cc72f..48ca4ce 100644
--- a/src/main/java/fr/univlille/sae/classification/view/AxesSettingsView.java
+++ b/src/main/java/fr/univlille/sae/classification/view/AxesSettingsView.java
@@ -5,6 +5,7 @@ import fr.univlille.sae.classification.controller.MainStageController;
 import fr.univlille.sae.classification.model.ClassificationModel;
 import fr.univlille.sae.classification.model.LoadableData;
 import javafx.fxml.FXMLLoader;
+import javafx.scene.control.Alert;
 import javafx.stage.Modality;
 import javafx.stage.Stage;
 
@@ -43,9 +44,19 @@ public class AxesSettingsView {
         root.setTitle("Configuration des axes");
         AxesSettingsController controller = loader.getController();
 
+        controller.setMainStageView(mainStageView);
+
+        if(model.getDatas().isEmpty()) {
+            Alert alert = new Alert(Alert.AlertType.WARNING);
+            alert.setTitle("Erreur");
+            alert.setHeaderText(null);
+            alert.setContentText("Veuillez d'abord charger les données avant de modifier les parametres");
+            alert.showAndWait();
+            return;
+        }
+
         LoadableData dataType = model.getDatas().get(0);
 
-        controller.setMainStageView(mainStageView);
 
         controller.setSelectAbs(dataType.getAttributesName());
         controller.setSelectOrd(dataType.getAttributesName());
diff --git a/src/main/java/fr/univlille/sae/classification/view/MainStageView.java b/src/main/java/fr/univlille/sae/classification/view/MainStageView.java
index c6ec0e9..fdf814f 100644
--- a/src/main/java/fr/univlille/sae/classification/view/MainStageView.java
+++ b/src/main/java/fr/univlille/sae/classification/view/MainStageView.java
@@ -20,9 +20,7 @@ import javafx.stage.Stage;
 import java.io.File;
 import java.io.IOException;
 import java.net.URL;
-import java.util.ArrayList;
-import java.util.List;
-import java.util.Random;
+import java.util.*;
 
 public class MainStageView implements Observer {
 
@@ -75,7 +73,9 @@ public class MainStageView implements Observer {
             }
             else{
                 scatterChart.getData().add(series1);
-                for(LoadableData i : model.getDatas()) {
+                List<LoadableData> points = new ArrayList<>(model.getDatas());
+                points.addAll(model.getDataToClass());
+                for(LoadableData i : points) {
                     Iris iris = (Iris)i;
                     XYChart.Data<Double, Double> dataPoint = new XYChart.Data<>(iris.getDataType(actualX),
                             iris.getDataType(actualY));
@@ -128,7 +128,4 @@ public class MainStageView implements Observer {
         return actualY;
     }
 
-    public Observable getModel() {
-        return this.model;
-    }
 }
-- 
GitLab