Skip to content
Snippets Groups Projects
Commit 37949782 authored by Matias Mennecart's avatar Matias Mennecart
Browse files

Fix issue with adding Pokemon data and Optimize import

parent 614bfaf2
Branches
Tags
No related merge requests found
Showing
with 50 additions and 90 deletions
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,
*/
......
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;
......
......@@ -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;
......
......@@ -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 {
......
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.
*/
......
......@@ -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;
......
......@@ -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.
*/
......
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.
......
......@@ -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.
......
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.*;
......
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{
......
......@@ -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;
/**
......
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;
......
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.
......
package fr.univlille.sae.classification.model;
import java.text.ParseException;
import java.util.Arrays;
/**
......
......@@ -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");
}
}
......
......@@ -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;");
......
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;
......
......@@ -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.
......
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);
*/
}
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment