-
Notifications
You must be signed in to change notification settings - Fork 0
/
Libro.js
86 lines (82 loc) · 3.87 KB
/
Libro.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
var NodoLibro = function(cfg){
this._titulo = cfg.titulo || "";
this._autor = cfg.autor || "";
this._canal_control = cfg.canalControl;
this._canal_busquedas = cfg.canalBusquedas;
this.start();
}
NodoLibro.prototype = {
start: function(){
this._router = new NodoRouter("libro");
this._portal_control = new NodoPortalConCanal("libro", this._canal_control);
this._portal_control.pedirMensajes(new FiltroXClaveValor("tipoDeMensaje", "vortexComm.biblioteca.edicionDelibro"),
this.actualizar.bind(this));
this._router.conectarBidireccionalmenteCon(this._portal_control);
this._portal_busquedas = new NodoPortalBidiMonoFiltroConCanal("libro", this._canal_busquedas);
this.hacerPedidoDeBusquedas();
this._router.conectarBidireccionalmenteCon(this._portal_busquedas);
},
actualizar: function(libro){
this._autor = libro.autor;
this._titulo = libro.titulo;
this.hacerPedidoDeBusquedas();
this.libroActualizado();
},
libroActualizado: function(){
var mensaje = {tipoDeMensaje: "vortexComm.biblioteca.libroActualizado",
autor: this._autor,
titulo: this._titulo,
canalLibro: this._canal_control.serializar()};
this._portal_control.enviarMensaje(mensaje);
var otro_mensaje = {tipoDeMensaje: "vortexComm.biblioteca.libroActualizado",
autor: this._autor,
titulo: this._titulo,
canalLibro: this._canal_control.serializar()};
this._portal_busquedas.enviarMensaje(otro_mensaje);
},
hacerPedidoDeBusquedas: function(){
var self = this;
this._portal_busquedas.pedirMensajes(new FiltroAND([ new FiltroXClaveValor("tipoDeMensaje", "vortexComm.biblioteca.busquedaDeLibros"),
new FiltroXClaveValor("autor", this._autor)
]),
function(){
self.enviarLibro(self._portal_busquedas);
});
this._portal_control.pedirMensajes(new FiltroXClaveValor("tipoDeMensaje", "vortexComm.biblioteca.busquedaDeLibros"),
function(){
self.enviarLibro(self._portal_control);
});
},
conectarCon: function(un_nodo){
this._router.conectarCon(un_nodo);
},
recibirMensaje: function(un_mensaje){
this._router.recibirMensaje(un_mensaje);
},
enviarLibro : function(portal) {
var mensaje = {tipoDeMensaje: "vortexComm.biblioteca.libro",
autor: this._autor,
titulo: this._titulo,
canalLibro: this._canal_control.serializar()};
if( portal !== undefined) {portal.enviarMensaje(mensaje);
return;}
this._portal_control.enviarMensaje(mensaje);
var otro_mensaje = {tipoDeMensaje: "vortexComm.biblioteca.libro",
autor: this._autor,
titulo: this._titulo,
canalLibro: this._canal_control.serializar()};
this._portal_busquedas.enviarMensaje(otro_mensaje);
}
};
var Libro = function(cfg){
this._titulo = cfg.titulo || "";
this._autor = cfg.autor || "";
}
Libro.prototype = {
titulo : function() {
return this._titulo;
},
autor : function() {
return this._autor;
}
};