From b32395fbbb5a508bed1069e8450671b037df0fa2 Mon Sep 17 00:00:00 2001
From: "hugo.debuyser.etu" <hugo.debuyser.etu@univ-lille.fr>
Date: Mon, 21 Oct 2024 23:52:22 +0200
Subject: [PATCH] =?UTF-8?q?Test=20d'affichage=20de=20couleur=20pour=20Iris?=
 =?UTF-8?q?=20et=20modification=20des=20param=C3=A8tres=20des=20axes?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 .../controller/AxesSettingsController.java    |  2 ++
 .../sae/classification/model/Iris.java        | 24 +++++++++++--
 .../classification/model/LoadableData.java    |  7 +++-
 .../classification/view/MainStageView.java    | 35 ++++++++++++-------
 4 files changed, 52 insertions(+), 16 deletions(-)

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 4d46b66..16cae7a 100644
--- a/src/main/java/fr/univlille/sae/classification/controller/AxesSettingsController.java
+++ b/src/main/java/fr/univlille/sae/classification/controller/AxesSettingsController.java
@@ -25,11 +25,13 @@ public class AxesSettingsController{
     public void setSelectOrd(String[] fields){
         selectOrd.getItems().clear();
         selectOrd.getItems().addAll(fields);
+        selectOrd.setValue(mainStageView.getActualY());
     }
 
     public void setSelectAbs(String[] fields){
         selectAbs.getItems().clear();
         selectAbs.getItems().addAll(fields);
+        selectAbs.setValue(mainStageView.getActualX());
     }
 
     public void setMainStageView(MainStageView mainStageView) {
diff --git a/src/main/java/fr/univlille/sae/classification/model/Iris.java b/src/main/java/fr/univlille/sae/classification/model/Iris.java
index 8d4d2c0..20d5b2e 100644
--- a/src/main/java/fr/univlille/sae/classification/model/Iris.java
+++ b/src/main/java/fr/univlille/sae/classification/model/Iris.java
@@ -1,7 +1,7 @@
 package fr.univlille.sae.classification.model;
 
-import java.util.Set;
 import com.opencsv.bean.*;
+import javafx.scene.paint.Color;
 
 public class Iris extends LoadableData{
 
@@ -13,6 +13,8 @@ public class Iris extends LoadableData{
     private double petalWidth;
     @CsvBindByName(column = "petal.length")
     private double petalLength;
+    @CsvBindByName(column = "variety")
+    private String variety;
 
     public Iris(double sepalWidth, double sepalLength, double petalWidth, double petalLength) {
         this(sepalWidth, sepalLength, petalWidth, petalLength, "undefined");
@@ -22,12 +24,13 @@ public class Iris extends LoadableData{
         //
     }
 
-    public Iris(double sepalWidth, double sepalLength, double petalWidth, double petalLength, String classification) {
+    public Iris(double sepalWidth, double sepalLength, double petalWidth, double petalLength, String variety) {
         super();
         this.sepalWidth = sepalWidth;
         this.sepalLength = sepalLength;
         this.petalWidth = petalWidth;
         this.petalLength = petalLength;
+        this.variety = variety;
     }
 
     public double getSepalWidth() {
@@ -46,6 +49,10 @@ public class Iris extends LoadableData{
         return petalLength;
     }
 
+                        public String getVariety() {
+        return variety;
+    }
+
     public double getDataType(String axes){
         if(axes==null){
             return sepalWidth;
@@ -64,6 +71,19 @@ public class Iris extends LoadableData{
         }
     }
 
+    public Color getColor(){
+        switch (this.variety){
+            case "Setosa":
+                return Color.RED;
+            case "Versicolor":
+                return Color.BLUE;
+            case "Virginica":
+                return Color.GREEN;
+            default:
+                return Color.BLACK;
+        }
+    }
+
     public String[] getAttributesName() {
         String[] names = new String[]{
                 "sepalWidth",
diff --git a/src/main/java/fr/univlille/sae/classification/model/LoadableData.java b/src/main/java/fr/univlille/sae/classification/model/LoadableData.java
index 3e4743d..fba0fb7 100644
--- a/src/main/java/fr/univlille/sae/classification/model/LoadableData.java
+++ b/src/main/java/fr/univlille/sae/classification/model/LoadableData.java
@@ -8,13 +8,18 @@ public abstract class LoadableData {
 
     private String classification;
 
-
     protected LoadableData() {
 
     }
+
+    public void addClassification(String classificationType) {
+        this.classificationTypes.add(classificationType);
+    }
+
     public String getClassification() {
         return this.classification;
     }
+
     public static Set<String> getClassificationTypes() {
         return classificationTypes;
     }
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 4a74452..b06f124 100644
--- a/src/main/java/fr/univlille/sae/classification/view/MainStageView.java
+++ b/src/main/java/fr/univlille/sae/classification/view/MainStageView.java
@@ -13,11 +13,15 @@ import javafx.fxml.FXML;
 import javafx.fxml.FXMLLoader;
 import javafx.scene.chart.ScatterChart;
 import javafx.scene.chart.XYChart;
+import javafx.scene.paint.Color;
+import javafx.scene.shape.Circle;
 import javafx.stage.Stage;
 
 import java.io.File;
 import java.io.IOException;
 import java.net.URL;
+import java.util.ArrayList;
+import java.util.List;
 
 public class MainStageView implements Observer {
 
@@ -61,12 +65,17 @@ public class MainStageView implements Observer {
         scatterChart.getData().clear();
         if(!(observable instanceof ClassificationModel)) throw new IllegalStateException();
         XYChart.Series series1 = new XYChart.Series();
-        series1.setName("Dice Launch");
         scatterChart.getData().add(series1);
-        for(LoadableData i : model.getDatas()) {
-            if(model.getType() == DataType.IRIS) {
-                series1.getData().add(new XYChart.Data<>(((Iris)i).getDataType(actualX),
-                        ((Iris)i).getDataType(actualY)));
+        if(model.getType() == DataType.IRIS) {
+            series1.setName("Iris");
+            for(LoadableData i : model.getDatas()) {
+                Iris iris = (Iris)i;
+                XYChart.Data<Double, Double> dataPoint = new XYChart.Data<>(iris.getDataType(actualX),
+                        iris.getDataType(actualY));
+                Circle circle = new Circle(5);
+                circle.setFill(iris.getColor());
+                dataPoint.setNode(circle);
+                series1.getData().add(dataPoint);
             }
         }
     }
@@ -76,14 +85,6 @@ public class MainStageView implements Observer {
 
     }
 
-    public String getActualX() {
-        return actualX;
-    }
-
-    public String getActualY() {
-        return actualY;
-    }
-
     public void setActualX(String actualX) {
         this.actualX = actualX;
     }
@@ -92,6 +93,14 @@ public class MainStageView implements Observer {
         this.actualY = actualY;
     }
 
+    public String getActualX() {
+        return actualX;
+    }
+
+    public String getActualY() {
+        return actualY;
+    }
+
     public Observable getModel() {
         return this.model;
     }
-- 
GitLab