From d33d87c7ab49e580ed70a4a1d3f43753d4a03d32 Mon Sep 17 00:00:00 2001
From: Matias Mennecart <matias.mennecart.etu@univ-lille.fr>
Date: Tue, 15 Oct 2024 10:49:12 +0200
Subject: [PATCH] Add classes structure

---
 .../sae/classification/ClassificationApp.java | 10 ----
 .../classification/ClassificationModel.java   | 44 +++++++++++++++
 .../fr/univlille/sae/classification/Iris.java | 56 +++++++++++++++++++
 .../sae/classification/LoadableData.java      | 13 +++++
 .../sae/classification/utils/Observable.java  | 39 +++++++++++++
 .../sae/classification/utils/Observer.java    | 10 ++++
 6 files changed, 162 insertions(+), 10 deletions(-)
 delete mode 100644 src/main/java/fr/univlille/sae/classification/ClassificationApp.java
 create mode 100644 src/main/java/fr/univlille/sae/classification/ClassificationModel.java
 create mode 100644 src/main/java/fr/univlille/sae/classification/Iris.java
 create mode 100644 src/main/java/fr/univlille/sae/classification/LoadableData.java
 create mode 100644 src/main/java/fr/univlille/sae/classification/utils/Observable.java
 create mode 100644 src/main/java/fr/univlille/sae/classification/utils/Observer.java

diff --git a/src/main/java/fr/univlille/sae/classification/ClassificationApp.java b/src/main/java/fr/univlille/sae/classification/ClassificationApp.java
deleted file mode 100644
index 6295392..0000000
--- a/src/main/java/fr/univlille/sae/classification/ClassificationApp.java
+++ /dev/null
@@ -1,10 +0,0 @@
-package fr.univlille.sae.classification;
-
-public class ClassificationApp {
-
-    public static void main(String[] args) {
-
-    }
-
-
-}
diff --git a/src/main/java/fr/univlille/sae/classification/ClassificationModel.java b/src/main/java/fr/univlille/sae/classification/ClassificationModel.java
new file mode 100644
index 0000000..486fe8e
--- /dev/null
+++ b/src/main/java/fr/univlille/sae/classification/ClassificationModel.java
@@ -0,0 +1,44 @@
+package fr.univlille.sae.classification;
+
+import java.io.File;
+import java.util.ArrayList;
+import java.util.List;
+
+public class ClassificationModel {
+
+
+    private List<LoadableData> datas;
+
+    public ClassificationModel() {
+        this.datas = new ArrayList<>();
+
+    }
+
+    /**
+     * TODO
+     * @param x
+     * @param y
+     */
+    private void ajouterDonnee(double x, double y) {
+
+    }
+
+
+    /**
+     * TODO
+     * @param file
+     */
+    private void loadData(File file) {
+
+    }
+
+    /**
+     * TODO
+     * @param data
+     */
+    private void classifierDonnee(LoadableData data) {
+
+    }
+
+
+}
diff --git a/src/main/java/fr/univlille/sae/classification/Iris.java b/src/main/java/fr/univlille/sae/classification/Iris.java
new file mode 100644
index 0000000..0068756
--- /dev/null
+++ b/src/main/java/fr/univlille/sae/classification/Iris.java
@@ -0,0 +1,56 @@
+package fr.univlille.sae.classification;
+
+import java.util.Set;
+
+public class Iris extends LoadableData{
+
+
+    private double sepalWidth;
+    private double sepalLength;
+    private double petalWidth;
+    private double petalLength;
+
+    private static Set<String> classificationTypes;
+
+    private String classification;
+
+
+    public Iris(double sepalWidth, double sepalLength, double petalWidth, double petalLength) {
+        this(sepalWidth, sepalLength, petalWidth, petalLength, "undefined");
+    }
+
+    public Iris(double sepalWidth, double sepalLength, double petalWidth, double petalLength, String classification) {
+        this.sepalWidth = sepalWidth;
+        this.sepalLength = sepalLength;
+        this.petalWidth = petalWidth;
+        this.petalLength = petalLength;
+        this.classification = classification;
+    }
+
+    @Override
+    public String getClassification() {
+        return this.classification;
+    }
+
+    @Override
+    public Set<String> getClassificationTypes() {
+       return classificationTypes;
+    }
+
+
+    public double getSepalWidth() {
+        return sepalWidth;
+    }
+
+    public double getSepalLength() {
+        return sepalLength;
+    }
+
+    public double getPetalWidth() {
+        return petalWidth;
+    }
+
+    public double getPetalLength() {
+        return petalLength;
+    }
+}
diff --git a/src/main/java/fr/univlille/sae/classification/LoadableData.java b/src/main/java/fr/univlille/sae/classification/LoadableData.java
new file mode 100644
index 0000000..3513577
--- /dev/null
+++ b/src/main/java/fr/univlille/sae/classification/LoadableData.java
@@ -0,0 +1,13 @@
+package fr.univlille.sae.classification;
+
+import java.util.List;
+import java.util.Set;
+
+public abstract class LoadableData {
+
+    public abstract String getClassification();
+
+    public abstract Set<String> getClassificationTypes();
+
+
+}
diff --git a/src/main/java/fr/univlille/sae/classification/utils/Observable.java b/src/main/java/fr/univlille/sae/classification/utils/Observable.java
new file mode 100644
index 0000000..78a076d
--- /dev/null
+++ b/src/main/java/fr/univlille/sae/classification/utils/Observable.java
@@ -0,0 +1,39 @@
+package fr.univlille.sae.classification.utils;
+
+import java.util.Collection;
+import java.util.HashSet;
+
+public abstract class Observable {
+
+
+    protected Collection<Observer> attached = new HashSet<>();
+    protected Collection<Observer> toDetach = new HashSet<>();
+
+    public void attach(Observer obs) {
+        attached.add(obs);
+    }
+
+    public void detach(Observer obs) {
+        this.toDetach.add(obs);
+    }
+
+    protected void notifyObservers() {
+        this.updateList();
+        for (Observer o : attached) {
+            o.update(this);
+        }
+    }
+
+    protected void notifyObservers(Object data) {
+        this.updateList();
+        for (Observer o : attached) {
+            o.update(this, data);
+        }
+    }
+
+    private void updateList() {
+        this.attached.removeAll(toDetach);
+        this.toDetach.clear();
+    }
+
+}
diff --git a/src/main/java/fr/univlille/sae/classification/utils/Observer.java b/src/main/java/fr/univlille/sae/classification/utils/Observer.java
new file mode 100644
index 0000000..e17a1a3
--- /dev/null
+++ b/src/main/java/fr/univlille/sae/classification/utils/Observer.java
@@ -0,0 +1,10 @@
+package fr.univlille.sae.classification.utils;
+
+public interface Observer {
+
+
+    void update(Observable observable);
+    void update(Observable observable, Object data);
+
+
+}
-- 
GitLab