Skip to content
Snippets Groups Projects
Commit 55af0193 authored by Hugo Desmons's avatar Hugo Desmons
Browse files

Refacto

parent 29c9c8de
Branches
Tags
No related merge requests found
...@@ -32,10 +32,10 @@ import java.util.Map; ...@@ -32,10 +32,10 @@ import java.util.Map;
*/ */
public class DataStageView extends DataVisualizationView implements Observer { public class DataStageView extends DataVisualizationView implements Observer {
private ClassificationModel model;
private DataStageController controller; private DataStageController controller;
private Map<String, ScatterChart.Series<Double, Double>> serieList;
private XYChart.Series series1; private XYChart.Series series1;
private XYChart.Series series2; private XYChart.Series series2;
...@@ -49,9 +49,9 @@ public class DataStageView extends DataVisualizationView implements Observer { ...@@ -49,9 +49,9 @@ public class DataStageView extends DataVisualizationView implements Observer {
* @param model le modèle de classification utilisé pour gérer les données. * @param model le modèle de classification utilisé pour gérer les données.
*/ */
public DataStageView(ClassificationModel model) { public DataStageView(ClassificationModel model) {
super(); super(model);
this.serieList = new HashMap<String, ScatterChart.Series<Double, Double>>();
this.model = model;
this.series1 = new XYChart.Series(); this.series1 = new XYChart.Series();
this.series2 = new XYChart.Series(); this.series2 = new XYChart.Series();
this.series3 = new XYChart.Series(); this.series3 = new XYChart.Series();
...@@ -93,118 +93,6 @@ public class DataStageView extends DataVisualizationView implements Observer { ...@@ -93,118 +93,6 @@ public class DataStageView extends DataVisualizationView implements Observer {
} }
} }
/**
* Met à jour l'affichage des données en fonction des changements dans le modèle.
* @param observable modèle observé.
*/
@Override
public void update(Observable observable) {
try {
if (scatterChart == null || !(observable instanceof ClassificationModel)) {
System.err.println("Erreur de mise à jour.");
return;
}
scatterChart.getData().clear();
serieList.clear();
if (actualX == null && actualY == null) {
controller.setAxesSelected("Aucuns axes sélectionnés");
} else {
controller.setAxesSelected("");
controller.setAxesSelectedDisable();
List<LoadableData> points = new ArrayList<>(model.getDatas());
points.addAll(model.getDataToClass().keySet());
for (LoadableData data : points) {
Object xValue = data.getAttributesNames().get(actualX);
Object yValue = data.getAttributesNames().get(actualY);
Double x = 0.0;
if (xValue instanceof Integer) {
x = ((Integer) xValue).doubleValue();
} else if (xValue instanceof Double) {
x = (Double) xValue;
}
Double y = 0.0;
if (yValue instanceof Integer) {
y = ((Integer) yValue).doubleValue();
} else if (yValue instanceof Double) {
y = (Double) yValue;
}
ScatterChart.Data<Double, Double> dataPoint = new ScatterChart.Data<>(x, y);
Node nodePoint = ViewUtil.getForm(data, new Circle(5), controller);
ScatterChart.Series<Double, Double> editSerie = serieList.get(data.getClassification());
if(editSerie == null){
editSerie = new ScatterChart.Series<Double, Double>();
}
if(data.getClassification().equals("undefined") || model.getDataToClass().containsKey(data)) {
nodePoint = ViewUtil.getForm(data, new Rectangle(10,10), controller);
}
dataPoint.setNode(nodePoint);
editSerie.getData().add(dataPoint);
serieList.put(data.getClassification(), editSerie);
}
for(String serie : serieList.keySet()) {
serieList.get(serie).setName(serie);
}
scatterChart.getData().addAll(serieList.values());
HBox hBox = ViewUtil.loadLegend();
controller.loadLegend(hBox);
}
} catch (Exception e) {
System.err.println("Erreur de mise à jour : " + e.getMessage());
}
}
/**
* Met à jour l'affichage en ajoutant un nouveau point de données.
* @param observable modèle observé.
* @param data point de données à ajouter.
*/
@Override
public void update(Observable observable, Object data) {
try {
if (scatterChart == null || !(observable instanceof ClassificationModel)) {
System.err.println("Erreur de mise à jour.");
return;
}
LoadableData newData = (LoadableData) data;
if (actualX == null || actualY == null) {
controller.setAxesSelected("Aucuns axes sélectionnés");
return;
}
Object attrX = newData.getAttributesNames().get(actualX);
Object attrY = newData.getAttributesNames().get(actualY);
if (attrX instanceof Integer) {
attrX = ((Integer) attrX).doubleValue();
}
if (attrY instanceof Integer) {
attrY = ((Integer) attrY).doubleValue();
}
XYChart.Data<Double, Double> dataPoint = new XYChart.Data<>(
(Double) attrX,
(Double) attrY
);
dataPoint.setNode(ViewUtil.getForm(newData, new Rectangle(10, 10), controller));
if (!scatterChart.getData().isEmpty()) {
series4.getData().add(dataPoint);
series4.setName("indéfini");
scatterChart.getData().add(series4);
}
HBox hBox = ViewUtil.loadLegend();
controller.loadLegend(hBox);
} catch (Exception e) {
System.err.println("Erreur de mise à jour : " + e.getMessage());
}
}
/** /**
* Renvoie le contrôleur associé à cette vue. * Renvoie le contrôleur associé à cette vue.
......
...@@ -5,10 +5,17 @@ import fr.univlille.sae.classification.model.ClassificationModel; ...@@ -5,10 +5,17 @@ import fr.univlille.sae.classification.model.ClassificationModel;
import fr.univlille.sae.classification.model.LoadableData; import fr.univlille.sae.classification.model.LoadableData;
import fr.univlille.sae.classification.utils.Observable; import fr.univlille.sae.classification.utils.Observable;
import fr.univlille.sae.classification.utils.ViewUtil; import fr.univlille.sae.classification.utils.ViewUtil;
import javafx.scene.Node;
import javafx.scene.chart.ScatterChart; import javafx.scene.chart.ScatterChart;
import javafx.scene.chart.XYChart; import javafx.scene.chart.XYChart;
import javafx.scene.layout.HBox;
import javafx.scene.shape.*; import javafx.scene.shape.*;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/** /**
* Classe abstraite représentant une vue de visualisation des données. * Classe abstraite représentant une vue de visualisation des données.
* Elle gère les axes actuels et le graphique de dispersion. * Elle gère les axes actuels et le graphique de dispersion.
...@@ -23,10 +30,16 @@ public abstract class DataVisualizationView { ...@@ -23,10 +30,16 @@ public abstract class DataVisualizationView {
protected String actualY; protected String actualY;
protected ScatterChart scatterChart; protected ScatterChart scatterChart;
private MainStageController controller; private MainStageController controller;
private Map<String, ScatterChart.Series<Double, Double>> serieList;
public ClassificationModel model;
/** /**
* Constructeur par défaut. * Constructeur par défaut.
*/ */
protected DataVisualizationView() {} protected DataVisualizationView(ClassificationModel model) {
this.serieList = new HashMap<String, ScatterChart.Series<Double, Double>>();
this.model = model;
}
/** /**
* Renvoie le nom de l'axe X actuel. * Renvoie le nom de l'axe X actuel.
...@@ -74,17 +87,97 @@ public abstract class DataVisualizationView { ...@@ -74,17 +87,97 @@ public abstract class DataVisualizationView {
public abstract void reload(); public abstract void reload();
public void update(Observable observable) {
try {
if (scatterChart == null || !(observable instanceof ClassificationModel)) {
System.err.println("Erreur de mise à jour.");
return;
}
scatterChart.getData().clear();
serieList.clear();
if (actualX == null && actualY == null) {
controller.setAxesSelected("Aucuns axes sélectionnés");
} else {
controller.setAxesSelected("");
controller.setAxesSelectedDisable();
List<LoadableData> points = new ArrayList<>(model.getDatas());
points.addAll(model.getDataToClass().keySet());
for (LoadableData data : points) {
Object xValue = data.getAttributesNames().get(actualX);
Object yValue = data.getAttributesNames().get(actualY);
double x = 0;
if(xValue instanceof Number) {
x = ((Number) xValue).doubleValue();
}
double y = 0;
if(yValue instanceof Number) {
y = ((Number) yValue).doubleValue();
}
/** /**
* Met à jour l'affichage en ajoutant un nouveau point de données. Double x = 0.0;
* @param observable modèle observé. if (xValue instanceof Integer) {
* @param data point de données à ajouter. x = ((Integer) xValue).doubleValue();
*/ } else if (xValue instanceof Double) {
x = (Double) xValue;
}
Double y = 0.0;
if (yValue instanceof Integer) {
y = ((Integer) yValue).doubleValue();
} else if (yValue instanceof Double) {
y = (Double) yValue;
}
**/
ScatterChart.Data<Double, Double> dataPoint = new ScatterChart.Data<>(x, y);
Node nodePoint = ViewUtil.getForm(data, new Circle(5), controller);
ScatterChart.Series<Double, Double> editSerie = serieList.get(data.getClassification());
if(editSerie == null){
editSerie = new ScatterChart.Series<Double, Double>();
}
if(data.getClassification().equals("undefined") || model.getDataToClass().containsKey(data)) {
nodePoint = ViewUtil.getForm(data, new Rectangle(10,10), controller);
}
dataPoint.setNode(nodePoint);
editSerie.getData().add(dataPoint);
serieList.put(data.getClassification(), editSerie);
}
for(String serie : serieList.keySet()) {
serieList.get(serie).setName(serie);
}
scatterChart.getData().addAll(serieList.values());
HBox hBox = ViewUtil.loadLegend();
controller.loadLegend(hBox);
}
} catch (Exception e) {
System.err.println("Erreur de mise à jour : " + e.getMessage());
}
}
public void update(Observable observable, Object data) { public void update(Observable observable, Object data) {
try { try {
if (scatterChart == null || !(observable instanceof ClassificationModel)) { if (scatterChart == null || !(observable instanceof ClassificationModel)) {
System.err.println("Erreur de mise à jour."); System.err.println("Erreur de mise à jour.");
return; return;
} }
LoadableData newData = (LoadableData) data; LoadableData newData = (LoadableData) data;
if (actualX == null || actualY == null) { if (actualX == null || actualY == null) {
controller.setAxesSelected("Aucuns axes sélectionnés"); controller.setAxesSelected("Aucuns axes sélectionnés");
...@@ -104,15 +197,14 @@ public abstract class DataVisualizationView { ...@@ -104,15 +197,14 @@ public abstract class DataVisualizationView {
); );
dataPoint.setNode(ViewUtil.getForm(newData, new Rectangle(10, 10), controller)); dataPoint.setNode(ViewUtil.getForm(newData, new Rectangle(10, 10), controller));
if (!scatterChart.getData().isEmpty()) { if (!scatterChart.getData().isEmpty()) {
if (series4 == null) {
series4 = new ScatterChart.Series<>();
}
series4.getData().add(dataPoint); series4.getData().add(dataPoint);
series4.setName("indéfini"); series4.setName("indéfini");
scatterChart.getData().add(series4); scatterChart.getData().add(series4);
} }
controller.loadLegend(ViewUtil.loadLegend());
} catch (Exception e) { } catch (Exception e) {
System.err.println("Erreur de mise à jour : " + e.getMessage()); System.err.println("Erreur de mise à jour : " + e.getMessage());
} }
......
...@@ -26,12 +26,12 @@ import java.util.*; ...@@ -26,12 +26,12 @@ import java.util.*;
*/ */
public class MainStageView extends DataVisualizationView implements Observer { public class MainStageView extends DataVisualizationView implements Observer {
private ClassificationModel model;
private MainStageController controller; private MainStageController controller;
private Stage root; private Stage root;
private Map<String, ScatterChart.Series<Double, Double>> serieList;
private ScatterChart.Series series1; private ScatterChart.Series series1;
private ScatterChart.Series series2; private ScatterChart.Series series2;
...@@ -43,13 +43,13 @@ public class MainStageView extends DataVisualizationView implements Observer { ...@@ -43,13 +43,13 @@ public class MainStageView extends DataVisualizationView implements Observer {
* @param model modèle de classification à utiliser. * @param model modèle de classification à utiliser.
*/ */
public MainStageView(ClassificationModel model) { public MainStageView(ClassificationModel model) {
super(); super(model);
this.serieList = new HashMap<String, ScatterChart.Series<Double, Double>>();
this.series1 = new ScatterChart.Series(); this.series1 = new ScatterChart.Series();
this.series2 = new ScatterChart.Series(); this.series2 = new ScatterChart.Series();
this.series3 = new ScatterChart.Series(); this.series3 = new ScatterChart.Series();
this.series4 = new ScatterChart.Series(); this.series4 = new ScatterChart.Series();
this.model = model;
model.attach(this); model.attach(this);
} }
...@@ -98,128 +98,7 @@ public class MainStageView extends DataVisualizationView implements Observer { ...@@ -98,128 +98,7 @@ public class MainStageView extends DataVisualizationView implements Observer {
} }
} }
@Override
public void update(Observable observable) {
try {
if (scatterChart == null || !(observable instanceof ClassificationModel)) {
System.err.println("Erreur de mise à jour.");
return;
}
scatterChart.getData().clear();
serieList.clear();
if (actualX == null && actualY == null) {
controller.setAxesSelected("Aucuns axes sélectionnés");
} else {
controller.setAxesSelected("");
controller.setAxesSelectedDisable();
List<LoadableData> points = new ArrayList<>(model.getDatas());
points.addAll(model.getDataToClass().keySet());
for (LoadableData data : points) {
Object xValue = data.getAttributesNames().get(actualX);
Object yValue = data.getAttributesNames().get(actualY);
double x = 0;
if(xValue instanceof Number) {
x = ((Number) xValue).doubleValue();
}
double y = 0;
if(yValue instanceof Number) {
y = ((Number) yValue).doubleValue();
}
/**
Double x = 0.0;
if (xValue instanceof Integer) {
x = ((Integer) xValue).doubleValue();
} else if (xValue instanceof Double) {
x = (Double) xValue;
}
Double y = 0.0;
if (yValue instanceof Integer) {
y = ((Integer) yValue).doubleValue();
} else if (yValue instanceof Double) {
y = (Double) yValue;
}
**/
ScatterChart.Data<Double, Double> dataPoint = new ScatterChart.Data<>(x, y);
Node nodePoint = ViewUtil.getForm(data, new Circle(5), controller);
ScatterChart.Series<Double, Double> editSerie = serieList.get(data.getClassification());
if(editSerie == null){
editSerie = new ScatterChart.Series<Double, Double>();
}
if(data.getClassification().equals("undefined") || model.getDataToClass().containsKey(data)) {
nodePoint = ViewUtil.getForm(data, new Rectangle(10,10), controller);
}
dataPoint.setNode(nodePoint);
editSerie.getData().add(dataPoint);
serieList.put(data.getClassification(), editSerie);
}
for(String serie : serieList.keySet()) {
serieList.get(serie).setName(serie);
}
scatterChart.getData().addAll(serieList.values());
HBox hBox = ViewUtil.loadLegend();
controller.loadLegend(hBox);
}
} catch (Exception e) {
System.err.println("Erreur de mise à jour : " + e.getMessage());
}
}
@Override
public void update(Observable observable, Object data) {
try {
if (scatterChart == null || !(observable instanceof ClassificationModel)) {
System.err.println("Erreur de mise à jour.");
return;
}
LoadableData newData = (LoadableData) data;
if (actualX == null || actualY == null) {
controller.setAxesSelected("Aucuns axes sélectionnés");
return;
}
Object attrX = newData.getAttributesNames().get(actualX);
Object attrY = newData.getAttributesNames().get(actualY);
if (attrX instanceof Integer) {
attrX = ((Integer) attrX).doubleValue();
}
if (attrY instanceof Integer) {
attrY = ((Integer) attrY).doubleValue();
}
XYChart.Data<Double, Double> dataPoint = new XYChart.Data<>(
(Double) attrX,
(Double) attrY
);
dataPoint.setNode(ViewUtil.getForm(newData, new Rectangle(10, 10), controller));
if (!scatterChart.getData().isEmpty()) {
series4.getData().add(dataPoint);
series4.setName("indéfini");
scatterChart.getData().add(series4);
}
controller.loadLegend(ViewUtil.loadLegend());
} catch (Exception e) {
System.err.println("Erreur de mise à jour : " + e.getMessage());
}
}
public MainStageController getController() { public MainStageController getController() {
return controller; return controller;
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment