Darius BERTRAND 2 years ago
commit f705fd8270

3
.idea/.gitignore vendored

@ -0,0 +1,3 @@
# Default ignored files
/shelf/
/workspace.xml

@ -0,0 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="ProjectRootManager" version="2" project-jdk-name="19" project-jdk-type="JavaSDK">
<output url="file://$PROJECT_DIR$/out" />
</component>
</project>

@ -0,0 +1,8 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="ProjectModuleManager">
<modules>
<module fileurl="file://$PROJECT_DIR$/TPCapteur.iml" filepath="$PROJECT_DIR$/TPCapteur.iml" />
</modules>
</component>
</project>

@ -0,0 +1,13 @@
<?xml version="1.0" encoding="UTF-8"?>
<module type="JAVA_MODULE" version="4">
<component name="NewModuleRootManager" inherit-compiler-output="true">
<exclude-output />
<content url="file://$MODULE_DIR$">
<sourceFolder url="file://$MODULE_DIR$/resources" type="java-resource" />
<sourceFolder url="file://$MODULE_DIR$/src" isTestSource="false" />
</content>
<orderEntry type="inheritedJdk" />
<orderEntry type="sourceFolder" forTests="false" />
<orderEntry type="library" name="lib" level="application" />
</component>
</module>

@ -0,0 +1,33 @@
<?xml version="1.0" encoding="UTF-8"?>
<?import javafx.scene.control.*?>
<?import javafx.scene.layout.*?>
<AnchorPane xmlns="http://javafx.com/javafx/17.0.2-ea" xmlns:fx="http://javafx.com/fxml/1" fx:controller="Vue.Fenetre">
<TreeView />
<VBox alignment="CENTER" prefHeight="400" prefWidth="200" GridPane.columnIndex="1" GridPane.rowIndex="1">
<children>
<Label text="Ajouter un nouveau capteur" />
<TextField fx:id="addNameField" prefWidth="293.0" promptText="Nom du capteur" />
<VBox alignment="CENTER" prefWidth="200">
<children>
<ComboBox fx:id="addGenerationField" promptText="Type du capteur">
<VBox.margin>
<Insets bottom="5.0" top="5.0" />
</VBox.margin>
</ComboBox>
<ComboBox fx:id="ZoneDeCapteur" promptText="Choix du parent">
<VBox.margin>
<Insets bottom="5.0" />
</VBox.margin>
</ComboBox>
</children>
</VBox>
<Button fx:id="addSubmitButton" mnemonicParsing="false" text="Ajouter">
<VBox.margin>
<Insets bottom="5.0" />
</VBox.margin></Button>
</children>
</VBox>
</AnchorPane>

@ -0,0 +1,22 @@
<?xml version="1.0" encoding="UTF-8"?>
<?import javafx.scene.control.*?>
<?import javafx.scene.layout.*?>
<AnchorPane xmlns="http://javafx.com/javafx/17.0.2-ea" xmlns:fx="http://javafx.com/fxml/1" fx:controller="Vue.Fenetre">
<TreeView />
<VBox alignment="CENTER" prefHeight="400" prefWidth="200" GridPane.columnIndex="1" GridPane.rowIndex="1">
<children>
<Label text="Ajouter un nouveau capteur" />
<TextField fx:id="addNameField" prefWidth="293.0" promptText="Nom du capteur" />
<VBox alignment="CENTER" prefWidth="200">
<children>
<ComboBox fx:id="addGenerationField" promptText="Type du capteur"/>
<ComboBox fx:id="ZoneDeCapteur" promptText="Choix du parent"/>
</children>
</VBox>
<Button fx:id="addSubmitButton" mnemonicParsing="false" text="Ajouter">
</children>
</VBox>
</AnchorPane>

@ -0,0 +1,23 @@
import javafx.application.Application;
import javafx.fxml.FXMLLoader;
import javafx.scene.Parent;
import javafx.scene.Scene;
import javafx.stage.Stage;
public class Main extends Application {
@Override
public void start(Stage stage) throws Exception {
Parent root= FXMLLoader.load(getClass().getResource("Fenetre.fxml"));
Scene scene= new Scene(root);
stage.setScene(scene);
stage.show();
}
}

@ -0,0 +1,42 @@
package Model;
public abstract class Capteur extends Observable {
private final String ID;
private String nom;
private double Temperature=0;
public Capteur(String ID, String nom, double temperature) {
this.ID = ID;
this.nom = nom;
Temperature = temperature;
}
public Capteur(String ID,String nom){
this.ID = ID;
this.nom =nom;
}
public String getNom() {
return nom;
}
public void setNom(String nom) {
this.nom = nom;
}
public double getTemperature() {
return Temperature;
}
public void setTemperature(double temperature) {
this.Temperature = temperature;
uptdate();
}
public String getID() {
return ID;
}
}

@ -0,0 +1,50 @@
package Model;
import javafx.application.Platform;
public class CapteurBasique extends Capteur {
private int delai =1000;
private StrategieDeGenerationDeTemperature strategieDeGenerationDeTemperature;
public CapteurBasique(String ID, String nom, StrategieDeGenerationDeTemperature strategieDeGenerationDeTemperature) {
super(ID, nom);
this.strategieDeGenerationDeTemperature=strategieDeGenerationDeTemperature;
Thread thread = new Thread();
thread.setDaemon(true);
thread.start();
}
public int getDelai() {
return delai;
}
public void setDelai(int delai) {
this.delai = delai;
}
public StrategieDeGenerationDeTemperature getStrategieDeGenerationDeTemperature() {
return strategieDeGenerationDeTemperature;
}
public void setStrategieDeGenerationDeTemperature(StrategieDeGenerationDeTemperature strategieDeGenerationDeTemperature) {
this.strategieDeGenerationDeTemperature = strategieDeGenerationDeTemperature;
}
public void run() {
while (true) {
try {
Platform.runLater(()->this.setTemperature(strategieDeGenerationDeTemperature.generer()));
Thread.sleep(this.delai);
}catch (InterruptedException e){
break;
}
}
}
}

@ -0,0 +1,24 @@
package Model;
import static java.lang.Math.random;
public class GenerateurBorne implements StrategieDeGenerationDeTemperature {
private double temperatureMax;
private double temperatureMin;
public GenerateurBorne(){
this.temperatureMax=Double.MAX_VALUE;
this.temperatureMin=Double.MIN_VALUE;
}
public GenerateurBorne(double temperatureMax, double temperatureMin) {
this.temperatureMax = temperatureMax;
this.temperatureMin = temperatureMin;
}
public double generer() {
return Math.random() * ( temperatureMax - temperatureMin ) + temperatureMin;
}
}

@ -0,0 +1,10 @@
package Model;
public class GenerateurCPU implements StrategieDeGenerationDeTemperature {
@Override
public double generer() {
return 0;
}
}

@ -0,0 +1,22 @@
package Model;
import java.util.ArrayList;
import java.util.List;
public class Observable implements Observateur{
public List<Observateur> listeDObservateur = new ArrayList<>();
public void ajouterObservateur (Observateur observeur){
listeDObservateur.add(observeur);
}
public void supprimerObservateur (Observateur observeur){
listeDObservateur.remove(observeur);
}
public void uptdate() {
for (Observateur observateur: listeDObservateur)
observateur.uptdate();
}
}

@ -0,0 +1,5 @@
package Model;
public interface Observateur {
public void uptdate();
}

@ -0,0 +1,5 @@
package Model;
public interface StrategieDeGenerationDeTemperature {
public double generer() ;
}

@ -0,0 +1,60 @@
package Model;
import javafx.application.Platform;
import java.util.HashMap;
import java.util.Map;
public class ZoneDeCapteur extends Capteur {
private Map<Capteur, Double> lesCapteurs = new HashMap<>();
public ZoneDeCapteur(String ID, String nom) {
super(ID, nom);
Thread t = new Thread();
t.setDaemon(true);
t.start();
}
public Map<Capteur, Double> getLesCapteurs() {
return lesCapteurs;
}
public void ajoutCapteurALaZone(Capteur capteur, double poid) {
lesCapteurs.put(capteur, poid);
}
public void suppressionCapteurDeLaZone(Capteur capteur) {
lesCapteurs.remove(capteur);
}
public void run() {
while (true) {
try {
Platform.runLater(() -> {
if (lesCapteurs.isEmpty()) return;
double temperatureMoyenne = 0;
int compteur = 0;
for (Map.Entry<Capteur, Double> entry : lesCapteurs.entrySet()) {
Capteur capteur = entry.getKey();
Double poid = entry.getValue();
temperatureMoyenne += capteur.getTemperature() * (1 + poid / 10);
compteur++;
}
this.setTemperature(temperatureMoyenne / compteur);
});
Thread.sleep(1000);
} catch (InterruptedException e) {
break;
}
}
}
}

@ -0,0 +1,45 @@
package Vue;
import Model.Capteur;
import Model.GenerateurBorne;
import Model.ZoneDeCapteur;
import com.sun.javafx.charts.Legend;
import javafx.event.ActionEvent;
import javafx.fxml.FXML;
public class Fenetre {
public void ZoneCapteur(String nom){
Capteur capteur= new ZoneDeCapteur(1,nom);
capteur.
}
@FXML
public void createNewCapteur(ActionEvent e){
Legend.LegendItem addNameField;
String name = addNameField.getText();
String generateur = (String) addGenerationField.getValue();
String parent = (String) ZoneCapteur.getValue();
if(name.equals("") || generateur == null || parent == null) return;
switch (generateur){
case "Aléatoire entre bornes":
addUnitCaptor(name, new GenerateurBorne(-50, 100), parent);
break;
case "zone":
ZoneCapteur(name, parent);
break;
default:
break;
}
}
}
Loading…
Cancel
Save