diff --git a/pom.xml b/pom.xml index 73ba586b72e5ccd72df7c7b069c45ee4e590bfe4..fcff1e2da45ce1213d95d7b937472878250c88bb 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 77fa80b1a00b346d7ece5f116224b02c1127dd38..e3ee04134e704ffe875e30c540c285cc17821777 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 2cdac800ab947cc7b8c3cc23840c06cdad3173f3..b01a2d255a675196b3d68015c6b7b2ee807891ff 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 0000000000000000000000000000000000000000..1f775b4376c7d7cb985b3c721ca3cde17483c55a --- /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 4de0abe4a687b74074761c54657795809bda17bb..27678aa908bde366122bbce5e0f6351eb4e2a5f5 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 0000000000000000000000000000000000000000..7ee05ec8bb8c6581e49a7b615910af5bb2aa01e1 --- /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; + } +}