master
commit
f705fd8270
@ -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>
|
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@ -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…
Reference in new issue