Test passed
This commit is contained in:
@@ -2,13 +2,31 @@ package impl;
|
|||||||
|
|
||||||
import interfaces.Capteur;
|
import interfaces.Capteur;
|
||||||
import interfaces.ObserverdeCapteur;
|
import interfaces.ObserverdeCapteur;
|
||||||
|
import java.util.concurrent.Future;
|
||||||
|
|
||||||
public class Afficheur implements ObserverdeCapteur {
|
public class Afficheur implements ObserverdeCapteur {
|
||||||
|
private Canal canalAsync;
|
||||||
|
|
||||||
|
public Afficheur() {}
|
||||||
|
|
||||||
|
public Afficheur(Canal canalAsync) {
|
||||||
|
this.canalAsync = canalAsync;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setCanal(Canal canal){
|
||||||
|
this.canalAsync = canal;
|
||||||
|
}
|
||||||
|
|
||||||
//AO1 - concrete servant
|
//AO1 - concrete servant
|
||||||
//TODO changer capteur à canal
|
|
||||||
@Override
|
@Override
|
||||||
public void update(Capteur subject) {
|
public void update(Capteur subject) {
|
||||||
subject.getValue();
|
try{
|
||||||
|
Future<Integer> futureValue= canalAsync.getValue();
|
||||||
|
Integer value=futureValue.get();
|
||||||
|
System.out.println(value);
|
||||||
|
}catch(Exception e){
|
||||||
|
//TODO
|
||||||
|
e.printStackTrace();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -11,7 +11,7 @@ public class Canal implements ObserverDeCapteurAsync, CapteurAsync {
|
|||||||
private int delay=1000;
|
private int delay=1000;
|
||||||
private Scheduler scheduler;
|
private Scheduler scheduler;
|
||||||
private ObserverdeCapteur afficher;
|
private ObserverdeCapteur afficher;
|
||||||
private Capteur capteur ;
|
private Capteur capteur;
|
||||||
|
|
||||||
public Canal(Capteur capteur, Scheduler scheduler, ObserverdeCapteur afficher) {
|
public Canal(Capteur capteur, Scheduler scheduler, ObserverdeCapteur afficher) {
|
||||||
this.capteur = capteur;
|
this.capteur = capteur;
|
||||||
|
|||||||
@@ -3,12 +3,14 @@ package impl;
|
|||||||
import interfaces.AlgoDiffusion;
|
import interfaces.AlgoDiffusion;
|
||||||
import interfaces.Capteur;
|
import interfaces.Capteur;
|
||||||
import interfaces.ObserverDeCapteurAsync;
|
import interfaces.ObserverDeCapteurAsync;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
public class CapteurImpl implements Capteur {
|
public class CapteurImpl implements Capteur {
|
||||||
public int value;
|
public int value;
|
||||||
public AlgoDiffusion diffusion;
|
public AlgoDiffusion diffusion;
|
||||||
public List<ObserverDeCapteurAsync> observers;
|
public List<ObserverDeCapteurAsync> observers=new ArrayList<ObserverDeCapteurAsync>();
|
||||||
|
|
||||||
/*
|
/*
|
||||||
public CapteurImpl(AlgoDiffusion diffusion) {
|
public CapteurImpl(AlgoDiffusion diffusion) {
|
||||||
@@ -40,15 +42,14 @@ public class CapteurImpl implements Capteur {
|
|||||||
@Override
|
@Override
|
||||||
public void tick() {
|
public void tick() {
|
||||||
value++;
|
value++;
|
||||||
for (ObserverDeCapteurAsync obs : observers) {
|
for (ObserverDeCapteurAsync canal : observers) {
|
||||||
obs.update(this);
|
canal.update(this);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
//AO2 - Concrete Servant
|
//AO2 - Concrete Servant
|
||||||
@Override
|
@Override
|
||||||
public int getValue() {
|
public int getValue() {
|
||||||
return 0;
|
return this.value;
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,4 +1,7 @@
|
|||||||
import java.util.Timer;
|
import java.util.Timer;
|
||||||
|
import java.util.concurrent.Executors;
|
||||||
|
import java.util.concurrent.ScheduledExecutorService;
|
||||||
|
import java.util.concurrent.TimeUnit;
|
||||||
|
|
||||||
import impl.Afficheur;
|
import impl.Afficheur;
|
||||||
import impl.Canal;
|
import impl.Canal;
|
||||||
@@ -15,13 +18,19 @@ public class main {
|
|||||||
Scheduler scheduler = new Scheduler(NB_CANAUX);
|
Scheduler scheduler = new Scheduler(NB_CANAUX);
|
||||||
Capteur c = new CapteurImpl();
|
Capteur c = new CapteurImpl();
|
||||||
|
|
||||||
|
Afficheur a=new Afficheur();
|
||||||
|
Canal canal=new Canal(c,scheduler,a);
|
||||||
|
a.setCanal(canal);
|
||||||
|
|
||||||
|
c.attach(canal);
|
||||||
|
|
||||||
|
/*
|
||||||
for(int i = 0; i<NB_CANAUX; i++){
|
for(int i = 0; i<NB_CANAUX; i++){
|
||||||
ObserverdeCapteur afficheur = new Afficheur();
|
ObserverdeCapteur afficheur = new Afficheur();
|
||||||
new Canal(c, scheduler, afficheur);
|
new Canal(c, scheduler, afficheur);
|
||||||
}
|
}
|
||||||
|
*/
|
||||||
|
ScheduledExecutorService clock = Executors.newScheduledThreadPool(1);
|
||||||
|
clock.scheduleAtFixedRate(() -> c.tick(), 0, 500, TimeUnit.MILLISECONDS);
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user