Subversion Repositories eFlore/Applications.coel

Rev

Rev 1320 | Rev 1373 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 1320 Rev 1367
Line 21... Line 21...
21
	private int numeroSequence;
21
	private int numeroSequence;
22
	private int marqueurRetour = 1;
22
	private int marqueurRetour = 1;
23
	private Mediateur mediateur = (Mediateur) Registry.get(RegistreId.MEDIATEUR);
23
	private Mediateur mediateur = (Mediateur) Registry.get(RegistreId.MEDIATEUR);
Line 24... Line 24...
24
	
24
	
25
	public Sequenceur()	{
-
 
26
		this.mediateur = mediateur;
-
 
27
		//requetes = new LinkedList<Requete>();
25
	public Sequenceur()	{
28
		requetes = new HashMap<Integer, Requete>();
26
		requetes = new HashMap<Integer, Requete>();
29
		numeroSequence = 0;
27
		numeroSequence = 0;
Line 30... Line 28...
30
	}
28
	}
Line 34... Line 32...
34
		if (numeroSequence == 0)	{
32
		if (numeroSequence == 0)	{
35
			mediateur.activerChargement("Chargement en cours... Veuillez patienter");
33
			mediateur.activerChargement("Chargement en cours... Veuillez patienter");
36
		}
34
		}
Line 37... Line 35...
37
		
35
		
38
		numeroSequence++;
36
		numeroSequence++;
39
		System.out.println("lancer Requete " + numeroSequence);
37
		if (Mediateur.DEBUG) System.out.println("==> Sequenceur : Envoi requete n°" + numeroSequence);
40
		Requete requete = new Requete(vueARafraichir, numeroSequence);
-
 
41
		//requetes.add(requete);
38
		Requete requete = new Requete(vueARafraichir, numeroSequence);
-
 
39
		requetes.put(numeroSequence, requete);
42
		requetes.put(numeroSequence, requete);
40
		
43
		return numeroSequence;
41
		return numeroSequence;
Line 44... Line 42...
44
	}
42
	}
45
	
43
	
46
	//Offrir la possibilité d'empiler à la suite des traitements un rafraichissement dont on a déjà le retour
44
	//Offrir la possibilité d'empiler à la suite des traitements un rafraichissement dont on a déjà le retour
47
	public int empilerRafraichissement(Rafraichissable vueARafraichir, Object nouvellesDonnees)	{
45
	public int empilerRafraichissement(Rafraichissable vueARafraichir, Object nouvellesDonnees)	{
48
		if (numeroSequence == 0)	{
46
		if (numeroSequence == 0)	{
49
			mediateur.activerChargement("Chargement en cours... Veuillez patienter");
47
			mediateur.activerChargement("Chargement en cours... Veuillez patienter");
50
		}
48
		}
51
		numeroSequence++;
49
		numeroSequence++;
52
		System.out.println("empiler " + numeroSequence);
50
		if (Mediateur.DEBUG) System.out.println("|| Sequenceur : Empiler n°" + numeroSequence);
53
		Requete requete = new Requete(vueARafraichir, numeroSequence);
51
		Requete requete = new Requete(vueARafraichir, numeroSequence);
54
		Reponse reponse = new Reponse(nouvellesDonnees, numeroSequence);
52
		Reponse reponse = new Reponse(nouvellesDonnees, numeroSequence);
-
 
53
		requetes.put(numeroSequence, requete);
55
		requetes.put(numeroSequence, requete);
54
		rafraichir(reponse);
56
		rafraichir(reponse);
55
		mediateur.desactiverChargement();
Line 57... Line 56...
57
		return numeroSequence;
56
		return numeroSequence;
58
	}
57
	}
59
	
58
	
60
	public void rafraichir(Object nouvellesDonnees) {
59
	public void rafraichir(Object nouvellesDonnees) {
61
		
60
 
Line 62... Line 61...
62
		try	{
61
		try	{
63
			Reponse reponse = (Reponse) nouvellesDonnees;
62
			Reponse reponse = (Reponse) nouvellesDonnees;
64
			System.out.println("rafraichir " + reponse.obtenirNumeroSequence() + " marqueur retour " + marqueurRetour);
63
			if (Mediateur.DEBUG) System.out.println("<== Sequenceur : Réception d'une réponse, n°" + reponse.obtenirNumeroSequence() + ", marqueur retour " + marqueurRetour);
-
 
64
			
65
			
65
			if (reponse.obtenirNumeroSequence() == marqueurRetour)	{
66
			if (reponse.obtenirNumeroSequence() == marqueurRetour)	{
66
				// Si le numéro de séquence du retour correspond au marqueur, on rafraichit
67
				// Si le numéro de séquence du retour correspond au marqueur, on rafraichit
67
				Requete requete = requetes.get(marqueurRetour);
68
				Requete requete = requetes.get(marqueurRetour);
68
				if (Mediateur.DEBUG) System.out.println("<|-- Sequenceur : Retourne paquet n°"+reponse.obtenirNumeroSequence()+" à "+requete.getVueARafraichir().getClass().toString());
69
				requete.setRetour(reponse);
69
				requete.rafraichir(reponse.obtenirRetour());
70
				requete.rafraichir();
70
				mediateur.desactiverChargement();
71
				requetes.remove(marqueurRetour);
71
				requetes.remove(marqueurRetour);
72
				marqueurRetour++;
72
				marqueurRetour++;
73
				avancerSequence();
-
 
74
			} else {
-
 
75
				// Sinon, on enregistre le retour
-
 
76
				requetes.get(reponse.obtenirNumeroSequence()).setRetour(reponse);
73
				avancerSequence();
77
				
74
			} else {
-
 
75
				// Sinon, on enregistre le retour
-
 
76
				requetes.get(reponse.obtenirNumeroSequence()).setRetour(reponse);
78
				// Vérifier que les requetes précédentes ont été exécutées si elles ont eues un retour
77
			}
-
 
78
		} catch (ClassCastException e)	{
-
 
79
			if (Mediateur.DEBUG) {
-
 
80
				System.out.println("<== Sequenceur : Réception d'une réponse incorrecte");
79
				//avancerSequence();
81
				System.out.println("    Le séquenceur ne peut recevoir que des Reponse");
80
			}
82
				System.out.println("    > nouvellesDonnees = "+nouvellesDonnees.getClass().toString());
Line 81... Line 83...
81
		} catch (ClassCastException e)	{
83
			}
82
			Debug.log("Le séquencuer ne peut recevoir que des Reponse");
84
			mediateur.desactiverChargement();
83
		}
85
		}
Line 84... Line 86...
84
	}
86
	}
85
	
87
	
-
 
88
	public int obtenirNumeroSequence()	{
86
	public int obtenirNumeroSequence()	{
89
		return this.numeroSequence;
87
		return this.numeroSequence;
-
 
88
	}
90
	}
-
 
91
	
89
	
92
	public void avancerSequence()	{
-
 
93
		if (requetes.size()>0)	{
90
	public void avancerSequence()	{
94
			// on récupère la première requete dans la file
91
		if (requetes.size()>0)	{
95
			Requete premiereRequete = requetes.get(marqueurRetour);
92
			Requete premiereRequete = requetes.get(marqueurRetour);
96
			if (premiereRequete!=null && premiereRequete.hasResponse())	{
93
			System.out.println("premiere Requete " + premiereRequete );
97
				if (Mediateur.DEBUG) System.out.println("<|-- Sequenceur : Retourne paquet n°"+premiereRequete.obtenirReponse().obtenirNumeroSequence()+" à "+premiereRequete.getVueARafraichir().getClass().toString());
94
			if (premiereRequete!=null && premiereRequete.aRetour())	{
-
 
95
				premiereRequete.rafraichir();
-
 
96
				requetes.remove(marqueurRetour);
98
				premiereRequete.rafraichir();
97
				marqueurRetour++;
-
 
98
				avancerSequence();
99
				mediateur.desactiverChargement();
Line 99... Line 100...
99
			} 
100
				requetes.remove(marqueurRetour);