From 379497823c2551f00ce35eda4259787eb3adec42 Mon Sep 17 00:00:00 2001 From: Numbtus <matias.mennecart.etu@univ-lille.fr> Date: Fri, 29 Nov 2024 23:40:22 +0100 Subject: [PATCH] Fix issue with adding Pokemon data and Optimize import --- .../fr/univlille/sae/classification/Main.java | 6 --- .../controller/AddDataController.java | 11 ++--- .../controller/AxesSettingsController.java | 1 - .../ChooseAttributesController.java | 2 - .../controller/DataStageController.java | 7 ---- .../DataVisualizationController.java | 1 - .../controller/KNNController.java | 7 ---- .../controller/LoadDataController.java | 3 -- .../controller/MainStageController.java | 5 --- .../sae/classification/knn/MethodKNN.java | 4 +- .../distance/DistanceManhattanNormalisee.java | 1 - .../model/ClassificationModel.java | 6 ++- .../sae/classification/model/Iris.java | 2 - .../classification/model/LoadableData.java | 3 -- .../classification/model/PointFactory.java | 1 - .../sae/classification/model/Pokemon.java | 13 ++++-- .../sae/classification/utils/ViewUtil.java | 10 ++--- .../view/ChooseAttributesView.java | 2 - .../classification/view/DataStageView.java | 13 ------ .../view/DataVisualizationView.java | 42 ++++++++++++------- .../sae/classification/view/KNNView.java | 1 - .../sae/classification/view/LoadDataView.java | 2 - .../classification/view/MainStageView.java | 14 ++----- 23 files changed, 53 insertions(+), 104 deletions(-) diff --git a/src/main/java/fr/univlille/sae/classification/Main.java b/src/main/java/fr/univlille/sae/classification/Main.java index d30364d..d955ee2 100644 --- a/src/main/java/fr/univlille/sae/classification/Main.java +++ b/src/main/java/fr/univlille/sae/classification/Main.java @@ -1,11 +1,5 @@ package fr.univlille.sae.classification; -import fr.univlille.sae.classification.model.ClassificationModel; -import fr.univlille.sae.classification.view.MainStageView; -import javafx.application.Application; -import javafx.stage.Stage; - -import java.io.IOException; /** * Cette classe redirige l'exécution vers la classe principale de l'application, */ 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 c4c527e..6fcd487 100644 --- a/src/main/java/fr/univlille/sae/classification/controller/AddDataController.java +++ b/src/main/java/fr/univlille/sae/classification/controller/AddDataController.java @@ -1,6 +1,5 @@ package fr.univlille.sae.classification.controller; -import com.sun.scenario.effect.impl.state.HVSeparableKernel; import fr.univlille.sae.classification.model.ClassificationModel; import fr.univlille.sae.classification.view.MainStageView; import javafx.fxml.FXML; @@ -10,12 +9,10 @@ import javafx.scene.layout.HBox; import javafx.scene.layout.VBox; import javafx.stage.Stage; -import java.io.IOException; -import java.lang.reflect.Array; -import java.text.ParseException; -import java.time.temporal.Temporal; -import java.util.*; -import java.util.*; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.List; +import java.util.Map; import java.util.function.UnaryOperator; import java.util.regex.Pattern; 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 508057c..c536bab 100644 --- a/src/main/java/fr/univlille/sae/classification/controller/AxesSettingsController.java +++ b/src/main/java/fr/univlille/sae/classification/controller/AxesSettingsController.java @@ -3,7 +3,6 @@ package fr.univlille.sae.classification.controller; import fr.univlille.sae.classification.view.DataVisualizationView; import javafx.fxml.FXML; import javafx.scene.chart.NumberAxis; -import javafx.scene.control.Button; import javafx.scene.control.ChoiceBox; import javafx.scene.control.Spinner; import javafx.scene.control.SpinnerValueFactory; diff --git a/src/main/java/fr/univlille/sae/classification/controller/ChooseAttributesController.java b/src/main/java/fr/univlille/sae/classification/controller/ChooseAttributesController.java index e2105eb..618abf3 100644 --- a/src/main/java/fr/univlille/sae/classification/controller/ChooseAttributesController.java +++ b/src/main/java/fr/univlille/sae/classification/controller/ChooseAttributesController.java @@ -6,9 +6,7 @@ import javafx.fxml.FXML; import javafx.scene.control.ChoiceBox; import javafx.stage.Stage; -import java.awt.*; import java.util.ArrayList; -import java.util.Arrays; import java.util.List; public class ChooseAttributesController { diff --git a/src/main/java/fr/univlille/sae/classification/controller/DataStageController.java b/src/main/java/fr/univlille/sae/classification/controller/DataStageController.java index 49f0c70..8596d96 100644 --- a/src/main/java/fr/univlille/sae/classification/controller/DataStageController.java +++ b/src/main/java/fr/univlille/sae/classification/controller/DataStageController.java @@ -1,17 +1,10 @@ package fr.univlille.sae.classification.controller; -import fr.univlille.sae.classification.model.ClassificationModel; -import fr.univlille.sae.classification.view.AxesSettingsView; import fr.univlille.sae.classification.view.DataStageView; import javafx.fxml.FXML; -import javafx.scene.chart.NumberAxis; -import javafx.scene.chart.ScatterChart; -import javafx.scene.control.Label; import javafx.scene.control.ListView; import javafx.stage.Stage; -import java.io.IOException; - /** * Contrôleur pour le fichier FXML "data-view-stage", pour gérer la vue supplémentaire. */ diff --git a/src/main/java/fr/univlille/sae/classification/controller/DataVisualizationController.java b/src/main/java/fr/univlille/sae/classification/controller/DataVisualizationController.java index 471b4f1..57e9a70 100644 --- a/src/main/java/fr/univlille/sae/classification/controller/DataVisualizationController.java +++ b/src/main/java/fr/univlille/sae/classification/controller/DataVisualizationController.java @@ -7,7 +7,6 @@ import javafx.fxml.FXML; import javafx.scene.chart.NumberAxis; import javafx.scene.chart.ScatterChart; import javafx.scene.control.Label; -import javafx.scene.layout.HBox; import javafx.scene.layout.VBox; import javafx.stage.Stage; diff --git a/src/main/java/fr/univlille/sae/classification/controller/KNNController.java b/src/main/java/fr/univlille/sae/classification/controller/KNNController.java index 41ca889..e699db1 100644 --- a/src/main/java/fr/univlille/sae/classification/controller/KNNController.java +++ b/src/main/java/fr/univlille/sae/classification/controller/KNNController.java @@ -2,10 +2,7 @@ package fr.univlille.sae.classification.controller; import fr.univlille.sae.classification.knn.MethodKNN; import fr.univlille.sae.classification.knn.distance.Distance; -import fr.univlille.sae.classification.knn.distance.DistanceManhattanNormalisee; import fr.univlille.sae.classification.model.ClassificationModel; -import fr.univlille.sae.classification.model.LoadableData; -import javafx.collections.ObservableList; import javafx.concurrent.Task; import javafx.fxml.FXML; import javafx.geometry.Pos; @@ -15,10 +12,6 @@ import javafx.scene.layout.HBox; import javafx.scene.layout.VBox; import javafx.stage.Stage; -import java.util.ArrayList; -import java.util.Collections; -import java.util.List; - /** * Contrôleur pour la fenêtre de l'algorithme KNN. */ 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 78ebe50..9d59387 100644 --- a/src/main/java/fr/univlille/sae/classification/controller/LoadDataController.java +++ b/src/main/java/fr/univlille/sae/classification/controller/LoadDataController.java @@ -1,6 +1,5 @@ package fr.univlille.sae.classification.controller; -import com.opencsv.exceptions.CsvException; import com.opencsv.exceptions.CsvRequiredFieldEmptyException; import fr.univlille.sae.classification.model.ClassificationModel; import fr.univlille.sae.classification.model.DataType; @@ -9,14 +8,12 @@ import fr.univlille.sae.classification.view.ChooseAttributesView; import fr.univlille.sae.classification.view.DataVisualizationView; import javafx.fxml.FXML; import javafx.scene.control.Alert; -import javafx.scene.control.Button; import javafx.scene.control.ChoiceBox; import javafx.scene.control.TextField; import javafx.stage.FileChooser; import javafx.stage.Stage; import java.io.File; -import java.io.IOException; /** * Contrôleur pour la fenêtre de chargement des données. diff --git a/src/main/java/fr/univlille/sae/classification/controller/MainStageController.java b/src/main/java/fr/univlille/sae/classification/controller/MainStageController.java index 4fb823c..83f7851 100644 --- a/src/main/java/fr/univlille/sae/classification/controller/MainStageController.java +++ b/src/main/java/fr/univlille/sae/classification/controller/MainStageController.java @@ -3,14 +3,9 @@ package fr.univlille.sae.classification.controller; import fr.univlille.sae.classification.model.ClassificationModel; import fr.univlille.sae.classification.view.*; import javafx.fxml.FXML; -import javafx.scene.chart.NumberAxis; import javafx.scene.chart.ScatterChart; import javafx.scene.control.Button; -import javafx.scene.control.Label; import javafx.scene.control.ListView; -import javafx.stage.Stage; - -import java.io.IOException; /** * Contrôleur de la fenêtre principale du programme. diff --git a/src/main/java/fr/univlille/sae/classification/knn/MethodKNN.java b/src/main/java/fr/univlille/sae/classification/knn/MethodKNN.java index 19c4a13..4097ae7 100644 --- a/src/main/java/fr/univlille/sae/classification/knn/MethodKNN.java +++ b/src/main/java/fr/univlille/sae/classification/knn/MethodKNN.java @@ -1,12 +1,12 @@ package fr.univlille.sae.classification.knn; import com.opencsv.exceptions.CsvRequiredFieldEmptyException; -import fr.univlille.sae.classification.knn.distance.*; +import fr.univlille.sae.classification.knn.distance.Distance; +import fr.univlille.sae.classification.knn.distance.DistanceManhattanNormalisee; import fr.univlille.sae.classification.model.ClassificationModel; import fr.univlille.sae.classification.model.DataType; import fr.univlille.sae.classification.model.LoadableData; - import java.io.File; import java.util.*; diff --git a/src/main/java/fr/univlille/sae/classification/knn/distance/DistanceManhattanNormalisee.java b/src/main/java/fr/univlille/sae/classification/knn/distance/DistanceManhattanNormalisee.java index 1e30ace..47fb6ba 100644 --- a/src/main/java/fr/univlille/sae/classification/knn/distance/DistanceManhattanNormalisee.java +++ b/src/main/java/fr/univlille/sae/classification/knn/distance/DistanceManhattanNormalisee.java @@ -1,7 +1,6 @@ package fr.univlille.sae.classification.knn.distance; import fr.univlille.sae.classification.knn.MethodKNN; - import fr.univlille.sae.classification.model.LoadableData; public class DistanceManhattanNormalisee implements Distance{ diff --git a/src/main/java/fr/univlille/sae/classification/model/ClassificationModel.java b/src/main/java/fr/univlille/sae/classification/model/ClassificationModel.java index 950a6c2..b20fb97 100644 --- a/src/main/java/fr/univlille/sae/classification/model/ClassificationModel.java +++ b/src/main/java/fr/univlille/sae/classification/model/ClassificationModel.java @@ -6,13 +6,15 @@ import com.opencsv.exceptions.CsvRequiredFieldEmptyException; import fr.univlille.sae.classification.knn.MethodKNN; import fr.univlille.sae.classification.knn.distance.Distance; import fr.univlille.sae.classification.knn.distance.DistanceEuclidienne; -import fr.univlille.sae.classification.knn.distance.DistanceManhattan; import fr.univlille.sae.classification.utils.Observable; import java.io.File; import java.io.IOException; import java.nio.file.Files; -import java.util.*; +import java.util.ArrayList; +import java.util.Collections; +import java.util.List; +import java.util.Map; import java.util.concurrent.ConcurrentHashMap; /** 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 68a6f66..4218748 100644 --- a/src/main/java/fr/univlille/sae/classification/model/Iris.java +++ b/src/main/java/fr/univlille/sae/classification/model/Iris.java @@ -1,9 +1,7 @@ package fr.univlille.sae.classification.model; import com.opencsv.bean.CsvBindByName; -import javafx.scene.paint.Color; -import java.util.HashMap; import java.util.LinkedHashMap; import java.util.Map; 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 a9c3e17..2a2e7ed 100644 --- a/src/main/java/fr/univlille/sae/classification/model/LoadableData.java +++ b/src/main/java/fr/univlille/sae/classification/model/LoadableData.java @@ -1,11 +1,8 @@ package fr.univlille.sae.classification.model; -import javafx.scene.control.Label; import javafx.scene.paint.Color; import java.util.*; -import java.util.HashMap; -import java.util.Map; /** * Classe abstraite représentant des données pouvant être chargées. diff --git a/src/main/java/fr/univlille/sae/classification/model/PointFactory.java b/src/main/java/fr/univlille/sae/classification/model/PointFactory.java index afc7034..2b21cc7 100644 --- a/src/main/java/fr/univlille/sae/classification/model/PointFactory.java +++ b/src/main/java/fr/univlille/sae/classification/model/PointFactory.java @@ -1,6 +1,5 @@ package fr.univlille.sae.classification.model; -import java.text.ParseException; import java.util.Arrays; /** diff --git a/src/main/java/fr/univlille/sae/classification/model/Pokemon.java b/src/main/java/fr/univlille/sae/classification/model/Pokemon.java index 7f7e35e..ef2a4c1 100644 --- a/src/main/java/fr/univlille/sae/classification/model/Pokemon.java +++ b/src/main/java/fr/univlille/sae/classification/model/Pokemon.java @@ -3,7 +3,8 @@ package fr.univlille.sae.classification.model; import com.opencsv.bean.CsvBindByName; import java.lang.reflect.Field; -import java.util.*; +import java.util.LinkedHashMap; +import java.util.Map; /** * Représente un point Pokémon. @@ -86,9 +87,15 @@ public class Pokemon extends LoadableData{ Field[] fields = getClass().getDeclaredFields(); for(int i = 0; i<fields.length; i++) { if(i != LoadableData.classificationType) { - fields[i].set(this, list[i]); + System.out.println(" i : " + i + " field " + fields[i].getName()); + if(i < LoadableData.classificationType) { + fields[i].set(this, list[i]); + }else { + fields[i].set(this, list[i-1]); + } + }else if(fields[i].getType().equals(String.class)) { - fields[i].set(this, "undefinied"); + fields[i].set(this, "undefined"); } } diff --git a/src/main/java/fr/univlille/sae/classification/utils/ViewUtil.java b/src/main/java/fr/univlille/sae/classification/utils/ViewUtil.java index 29f9009..efcb6a1 100644 --- a/src/main/java/fr/univlille/sae/classification/utils/ViewUtil.java +++ b/src/main/java/fr/univlille/sae/classification/utils/ViewUtil.java @@ -2,21 +2,15 @@ package fr.univlille.sae.classification.utils; import fr.univlille.sae.classification.controller.DataStageController; import fr.univlille.sae.classification.controller.MainStageController; -import fr.univlille.sae.classification.model.ClassificationModel; import fr.univlille.sae.classification.model.LoadableData; import javafx.geometry.Pos; -import javafx.scene.chart.ScatterChart; -import javafx.scene.chart.XYChart; -import javafx.scene.control.ContextMenu; import javafx.scene.control.Label; -import javafx.scene.control.MenuItem; import javafx.scene.layout.HBox; import javafx.scene.layout.VBox; import javafx.scene.paint.Color; import javafx.scene.shape.Circle; import javafx.scene.shape.Rectangle; import javafx.scene.shape.Shape; -import javafx.stage.Stage; import java.util.HashMap; import java.util.Map; @@ -36,10 +30,12 @@ public class ViewUtil { */ public static Shape getForm(LoadableData dataLoaded, Shape form, Object controller) { try { + System.out.println(dataLoaded.getClassification()); + System.out.println(LoadableData.getClassifications()); Color color = LoadableData.getClassifications().get(dataLoaded.getClassification()); form.setFill(color); - + System.out.println(color); form.setOnMouseClicked(e -> { if(clickedForm!=null) { clickedForm.setStyle("-fx-stroke-width: 0;"); diff --git a/src/main/java/fr/univlille/sae/classification/view/ChooseAttributesView.java b/src/main/java/fr/univlille/sae/classification/view/ChooseAttributesView.java index 0262ac3..c798dab 100644 --- a/src/main/java/fr/univlille/sae/classification/view/ChooseAttributesView.java +++ b/src/main/java/fr/univlille/sae/classification/view/ChooseAttributesView.java @@ -1,7 +1,5 @@ package fr.univlille.sae.classification.view; -import fr.univlille.sae.classification.controller.AddDataController; -import fr.univlille.sae.classification.controller.ChooseAttributesController; import fr.univlille.sae.classification.model.ClassificationModel; import javafx.fxml.FXMLLoader; import javafx.scene.control.Alert; diff --git a/src/main/java/fr/univlille/sae/classification/view/DataStageView.java b/src/main/java/fr/univlille/sae/classification/view/DataStageView.java index 95a8fe8..8e72c4a 100644 --- a/src/main/java/fr/univlille/sae/classification/view/DataStageView.java +++ b/src/main/java/fr/univlille/sae/classification/view/DataStageView.java @@ -3,27 +3,14 @@ package fr.univlille.sae.classification.view; import fr.univlille.sae.classification.controller.DataStageController; import fr.univlille.sae.classification.controller.MainStageController; import fr.univlille.sae.classification.model.ClassificationModel; -import fr.univlille.sae.classification.model.LoadableData; -import fr.univlille.sae.classification.utils.Observable; import fr.univlille.sae.classification.utils.Observer; -import javafx.collections.ObservableList; -import fr.univlille.sae.classification.utils.ViewUtil; import javafx.fxml.FXMLLoader; -import javafx.scene.Node; -import javafx.scene.chart.ScatterChart; import javafx.scene.chart.XYChart; -import javafx.scene.layout.HBox; -import javafx.scene.shape.Circle; -import javafx.scene.shape.Rectangle; import javafx.stage.Stage; import java.io.File; import java.io.IOException; import java.net.URL; -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; -import java.util.Map; /** * Classe responsable de l'affichage et de la gestion de la vue des données. diff --git a/src/main/java/fr/univlille/sae/classification/view/DataVisualizationView.java b/src/main/java/fr/univlille/sae/classification/view/DataVisualizationView.java index 862a8d1..ceda629 100644 --- a/src/main/java/fr/univlille/sae/classification/view/DataVisualizationView.java +++ b/src/main/java/fr/univlille/sae/classification/view/DataVisualizationView.java @@ -1,8 +1,6 @@ package fr.univlille.sae.classification.view; -import fr.univlille.sae.classification.controller.DataStageController; import fr.univlille.sae.classification.controller.DataVisualizationController; -import fr.univlille.sae.classification.controller.MainStageController; import fr.univlille.sae.classification.model.ClassificationModel; import fr.univlille.sae.classification.model.LoadableData; import fr.univlille.sae.classification.utils.Observable; @@ -11,9 +9,9 @@ import javafx.scene.Node; import javafx.scene.chart.NumberAxis; import javafx.scene.chart.ScatterChart; import javafx.scene.chart.XYChart; -import javafx.scene.layout.HBox; import javafx.scene.layout.VBox; -import javafx.scene.shape.*; +import javafx.scene.shape.Circle; +import javafx.scene.shape.Rectangle; import java.util.*; @@ -215,24 +213,38 @@ public abstract class DataVisualizationView { controller.setAxesSelectedDisability(false); return; } - Object attrX = newData.getAttributesNames().get(actualX); - Object attrY = newData.getAttributesNames().get(actualY); - if (attrX instanceof Integer) { - attrX = ((Integer) attrX).doubleValue(); + Object xValue = newData.getAttributesNames().get(actualX); + Object yValue = newData.getAttributesNames().get(actualY); + + + + double x = 0; + if(xValue instanceof Number) { + x = ((Number) xValue).doubleValue(); } - if (attrY instanceof Integer) { - attrY = ((Integer) attrY).doubleValue(); + double y = 0; + if(yValue instanceof Number) { + y = ((Number) yValue).doubleValue(); } - XYChart.Data<Double, Double> dataPoint = new XYChart.Data<>( - (Double) attrX, - (Double) attrY - ); + ScatterChart.Data<Double, Double> dataPoint = new ScatterChart.Data<>(x, y); + dataPoint.setNode(ViewUtil.getForm(newData, new Rectangle(10, 10), controller)); if (!scatterChart.getData().isEmpty()) { - series4.getData().add(dataPoint); + System.out.append("Value " + dataPoint.getXValue() + " , " + dataPoint.getYValue()); + System.out.println("Add data: " + newData); + ScatterChart.Series<Double, Double> serie = serieList.get(newData.getClassification()); + if(serie == null){ + serie = new ScatterChart.Series<>(); + } + serie.getData().add(dataPoint); + serieList.put(newData.getClassification(), serie); + scatterChart.getData().add(serie); + /*series4.getData().add(dataPoint); series4.setName("indéfini"); scatterChart.getData().add(series4); + + */ } diff --git a/src/main/java/fr/univlille/sae/classification/view/KNNView.java b/src/main/java/fr/univlille/sae/classification/view/KNNView.java index 6e3272c..435dd9f 100644 --- a/src/main/java/fr/univlille/sae/classification/view/KNNView.java +++ b/src/main/java/fr/univlille/sae/classification/view/KNNView.java @@ -1,7 +1,6 @@ package fr.univlille.sae.classification.view; import fr.univlille.sae.classification.controller.KNNController; -import fr.univlille.sae.classification.controller.LoadDataController; import fr.univlille.sae.classification.model.ClassificationModel; import javafx.fxml.FXMLLoader; import javafx.stage.Modality; diff --git a/src/main/java/fr/univlille/sae/classification/view/LoadDataView.java b/src/main/java/fr/univlille/sae/classification/view/LoadDataView.java index f1693fe..2b5ed78 100644 --- a/src/main/java/fr/univlille/sae/classification/view/LoadDataView.java +++ b/src/main/java/fr/univlille/sae/classification/view/LoadDataView.java @@ -1,7 +1,5 @@ package fr.univlille.sae.classification.view; -import fr.univlille.sae.classification.controller.AxesSettingsController; -import fr.univlille.sae.classification.controller.LoadDataController; import fr.univlille.sae.classification.model.ClassificationModel; import javafx.fxml.FXMLLoader; import javafx.stage.Modality; 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 e451f23..498a1f0 100644 --- a/src/main/java/fr/univlille/sae/classification/view/MainStageView.java +++ b/src/main/java/fr/univlille/sae/classification/view/MainStageView.java @@ -2,25 +2,17 @@ package fr.univlille.sae.classification.view; import fr.univlille.sae.classification.controller.MainStageController; import fr.univlille.sae.classification.model.ClassificationModel; -import fr.univlille.sae.classification.model.LoadableData; -import fr.univlille.sae.classification.utils.Observable; import fr.univlille.sae.classification.utils.Observer; -import fr.univlille.sae.classification.utils.ViewUtil; import javafx.fxml.FXMLLoader; -import javafx.scene.Node; -import javafx.scene.chart.NumberAxis; import javafx.scene.chart.ScatterChart; -import javafx.scene.chart.XYChart; -import javafx.scene.control.*; -import javafx.scene.layout.HBox; -import javafx.scene.layout.VBox; -import javafx.scene.shape.*; +import javafx.scene.control.Alert; +import javafx.scene.control.ButtonType; import javafx.stage.Stage; import java.io.File; import java.io.IOException; import java.net.URL; -import java.util.*; +import java.util.Optional; /** * Classe représentant la vue principale de l'application de classification. -- GitLab