From 5848c58d2106b417ac37f680c559966eba1a9a18 Mon Sep 17 00:00:00 2001 From: Matias Mennecart <matias.mennecart.etu@univ-lille.fr> Date: Fri, 18 Oct 2024 10:27:07 +0200 Subject: [PATCH] Ajouts des methodes de ClassificationModel --- pom.xml | 2 +- .../fr/univlille/sae/classification/Main.java | 3 -- .../model/ClassificationModel.java | 36 +++++++++++++------ .../sae/classification/model/DataType.java | 7 ++++ .../classification/model/LoadableData.java | 13 ++++--- .../classification/model/PointFactory.java | 21 +++++++++++ 6 files changed, 64 insertions(+), 18 deletions(-) create mode 100644 src/main/java/fr/univlille/sae/classification/model/DataType.java create mode 100644 src/main/java/fr/univlille/sae/classification/model/PointFactory.java diff --git a/pom.xml b/pom.xml index 73ba586..fcff1e2 100644 --- a/pom.xml +++ b/pom.xml @@ -31,7 +31,7 @@ <artifactId>javafx-maven-plugin</artifactId> <version>0.0.4</version> <configuration> - <mainClass>fr.univlille.sae.classification.view.MainStage</mainClass> + <mainClass>fr.univlille.sae.classification.Main</mainClass> </configuration> </plugin> </plugins> diff --git a/src/main/java/fr/univlille/sae/classification/Main.java b/src/main/java/fr/univlille/sae/classification/Main.java index 77fa80b..e3ee041 100644 --- a/src/main/java/fr/univlille/sae/classification/Main.java +++ b/src/main/java/fr/univlille/sae/classification/Main.java @@ -3,12 +3,9 @@ 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.fxml.FXMLLoader; import javafx.stage.Stage; -import java.io.File; import java.io.IOException; -import java.net.URL; public class Main extends Application { 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 2cdac80..b01a2d2 100644 --- a/src/main/java/fr/univlille/sae/classification/model/ClassificationModel.java +++ b/src/main/java/fr/univlille/sae/classification/model/ClassificationModel.java @@ -3,14 +3,12 @@ package fr.univlille.sae.classification.model; import com.opencsv.bean.CsvToBeanBuilder; import fr.univlille.sae.classification.utils.Observable; +import javax.xml.crypto.Data; import java.io.File; import java.io.IOException; import java.nio.file.Files; import java.nio.file.Paths; -import java.util.ArrayList; -import java.util.List; -import java.util.Random; -import java.util.Set; +import java.util.*; public class ClassificationModel extends Observable { @@ -18,18 +16,28 @@ public class ClassificationModel extends Observable { private List<LoadableData> datas; private List<LoadableData> dataToClass; + private DataType type; + public ClassificationModel() { - this.datas = new ArrayList<>(); + this(DataType.IRIS); + } + public ClassificationModel(DataType type) { + this.datas = new ArrayList<>(); + this.dataToClass = new ArrayList<>(); + this.type = type; } + /** - * TODO - * @param x - * @param y + * Ajoute un point au nuage de points avec toutes les données de ce point + * @param coords toutes les données du points + * @throws IllegalArgumentException Exception levée si le nombre de parametres est insuffisant pour creer un point du type du model */ - private void ajouterDonnee(double x, double y) { - + private void ajouterDonnee(double... coords) { + LoadableData newData = PointFactory.createPoint(type, coords); + this.dataToClass.add(newData); + notifyObservers(newData); } @@ -42,6 +50,13 @@ public class ClassificationModel extends Observable { .withSeparator(',') .withType(Iris.class) .build().parse(); + Set<String> types = new HashSet<>(); + for (LoadableData d : datas) { + types.add(d.getClassification()); + } + + LoadableData.setClassificationTypes(types); + notifyObservers(); } /** @@ -53,6 +68,7 @@ public class ClassificationModel extends Observable { List<String> classes = new ArrayList<>(data.getClassificationTypes()); Random rdm = new Random(); data.setClassification(classes.get(rdm.nextInt(classes.size()))); + notifyObservers(data); } } diff --git a/src/main/java/fr/univlille/sae/classification/model/DataType.java b/src/main/java/fr/univlille/sae/classification/model/DataType.java new file mode 100644 index 0000000..1f775b4 --- /dev/null +++ b/src/main/java/fr/univlille/sae/classification/model/DataType.java @@ -0,0 +1,7 @@ +package fr.univlille.sae.classification.model; + +public enum DataType { + + IRIS; + +} 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 4de0abe..27678aa 100644 --- a/src/main/java/fr/univlille/sae/classification/model/LoadableData.java +++ b/src/main/java/fr/univlille/sae/classification/model/LoadableData.java @@ -2,23 +2,28 @@ package fr.univlille.sae.classification.model; import java.util.Set; -public class LoadableData { +public abstract class LoadableData { private static Set<String> classificationTypes; private String classification; - public LoadableData() { + protected LoadableData() { } public String getClassification() { return this.classification; } - Set<String> getClassificationTypes() { + public static Set<String> getClassificationTypes() { return classificationTypes; } - void setClassification(String classification) { + + public static void setClassificationTypes(Set<String> classificationTypes) { + LoadableData.classificationTypes = classificationTypes; + } + + public void setClassification(String classification) { this.classification = classification; } diff --git a/src/main/java/fr/univlille/sae/classification/model/PointFactory.java b/src/main/java/fr/univlille/sae/classification/model/PointFactory.java new file mode 100644 index 0000000..7ee05ec --- /dev/null +++ b/src/main/java/fr/univlille/sae/classification/model/PointFactory.java @@ -0,0 +1,21 @@ +package fr.univlille.sae.classification.model; + +public class PointFactory { + + + public static LoadableData createPoint(DataType type, double[] coords) { + + int size = coords.length; + LoadableData data; + switch (type) { + case IRIS: + if(size != 4) throw new IllegalArgumentException(); + data = new Iris(coords[0],coords[1],coords[2],coords[3]); + break; + default: + throw new IllegalArgumentException(); + } + + return data; + } +} -- GitLab