1
00:00:00,180 --> 00:00:06,540
Me continuamos, vamos a implementar el constructor por acá al insert constructor, sin argumentos,

2
00:00:06,630 --> 00:00:08,290
simplemente colocamos SELECT.

3
00:00:08,610 --> 00:00:13,560
No, en ninguno seleccionar ninguno quería en constructor vacío y vamos a crear la instancia, entonces

4
00:00:13,560 --> 00:00:22,200
cuentas igual New Array listo, que es una implementación concreta de la interfaz list.

5
00:00:22,320 --> 00:00:25,260
Acá tenemos el tipo list de cuenta, acá la implementación.

6
00:00:25,710 --> 00:00:26,160
Listo.

7
00:00:26,490 --> 00:00:27,120
Nada más.

8
00:00:27,810 --> 00:00:32,260
Volvemos a cuenta test y ahora si ejecutamos no debiese ser NULL.

9
00:00:32,280 --> 00:00:35,790
Por lo tanto, en agregar cuenta con emboca el método ADD.

10
00:00:35,980 --> 00:00:42,300
Recuerden que si nos vamos al banco por acá a cuenta, invoca el lado, ya no va a lanzar el nulo de

11
00:00:42,300 --> 00:00:42,900
intercepción.

12
00:00:42,960 --> 00:00:45,450
De qué cuentas tiene una instancia?

13
00:00:45,570 --> 00:00:46,380
Una referencia?

14
00:00:47,220 --> 00:00:47,880
Vamos a probar.

15
00:00:51,500 --> 00:00:52,910
Se fijan, ahora lo pasa.

16
00:00:53,090 --> 00:00:57,020
Está perfecto, pero solamente tenemos la relación de banco con la cuenta.

17
00:00:57,200 --> 00:01:00,470
Es decir, con sus cuentas, con sus hijos, ya tiene dos elementos.

18
00:01:00,890 --> 00:01:03,050
Pero qué pasa con la relación inversa?

19
00:01:03,140 --> 00:01:06,590
Es decir, con una cuenta y el banco, por ejemplo?

20
00:01:06,920 --> 00:01:10,190
Recuerden que el nombre del banco, el banco del Estado.

21
00:01:10,280 --> 00:01:11,240
Entonces podríamos.

22
00:01:11,290 --> 00:01:12,620
Quiere probar lo siguiente?

23
00:01:12,710 --> 00:01:13,260
Acerto.

24
00:01:14,450 --> 00:01:19,940
Y también vamos a colocar que el valor esperado es Banco del Estado.

25
00:01:20,120 --> 00:01:24,680
Tal cual Banco del Estado.

26
00:01:24,800 --> 00:01:26,000
Se fijan lo mismo.

27
00:01:26,150 --> 00:01:27,440
Banco del Estado acá.

28
00:01:27,530 --> 00:01:28,490
Banco el Estado acá.

29
00:01:28,730 --> 00:01:30,380
Pero este nombre lo vamos a tener.

30
00:01:30,470 --> 00:01:32,440
La relación inversa de la cuenta 1.

31
00:01:32,450 --> 00:01:34,190
Por ejemplo, o la cuenta 2 da lo mismo.

32
00:01:35,090 --> 00:01:41,210
Cuenta 1 punto guet banco punto nyet.

33
00:01:41,240 --> 00:01:43,730
Nombre a la cuenta 1 le invocamos el banco.

34
00:01:43,820 --> 00:01:48,140
La relación inversa y el nombre banco debería ser eso no es cierto?

35
00:01:48,230 --> 00:01:49,340
Pero va a fallar.

36
00:01:49,490 --> 00:01:52,670
Lo vamos a levantar y debiese dar un error.

37
00:01:53,660 --> 00:01:59,420
Bueno, el partido nulo en 3 actos también, porque banco en nulo, es decir, en cuenta en las cuentas

38
00:01:59,510 --> 00:02:03,200
no tenemos la relación inversa, se fijan y tenemos problema que tengo que solucionar.

39
00:02:03,290 --> 00:02:08,000
Implementando este proceso unitaria nos damos cuenta donde están estos errores.

40
00:02:08,150 --> 00:02:15,140
Entonces la solución es ir a banco por acá una forma nos vamos a ir al método agregar cuenta y acá mismo

41
00:02:15,140 --> 00:02:20,930
podemos establecer esta relación bidireccional o inversa y super simple sería de cuenta.

42
00:02:21,830 --> 00:02:23,510
Punto set banco.

43
00:02:23,630 --> 00:02:30,530
Es decir, a cada cuenta que se agrega en la clase, en el objeto banco le agregamos el banco en cuestión,

44
00:02:30,650 --> 00:02:31,300
el mismo banco.

45
00:02:31,330 --> 00:02:36,650
Entonces colocamos 10, se fijan, hace clic, agregamos una cuenta, le pasamos la misma referencia

46
00:02:36,650 --> 00:02:40,160
del banco a cada cuenta y ahí tenemos el banco con this.

47
00:02:40,430 --> 00:02:43,700
Entonces revolvemos, cuenta test y probamos y debería pasar.

48
00:02:46,720 --> 00:02:53,380
Perfecto, ahora podríamos traja con el API Stream a través del banco, obtener una cuenta y validar

49
00:02:53,380 --> 00:02:57,610
que esa cuenta pertenezca a un cierto nombre, a una cierta persona.

50
00:02:57,670 --> 00:02:58,990
Por ejemplo, Andrés.

51
00:02:59,110 --> 00:03:00,190
Cómo lo podríamos hacer?

52
00:03:00,410 --> 00:03:01,630
Bueno, hacer y cuál es?

53
00:03:03,370 --> 00:03:05,470
Voy a esperar que sea Andrés, por ejemplo.

54
00:03:06,400 --> 00:03:07,690
Ese es mi valor esperado.

55
00:03:08,010 --> 00:03:08,400
Coma.

56
00:03:08,440 --> 00:03:11,620
Pero vamos a partir no de la cuenta, sino del banco.

57
00:03:11,860 --> 00:03:17,710
Vamos a comprobar que el banco tiene una cuenta con nombre Andrés Banco.

58
00:03:17,800 --> 00:03:18,670
Punto.

59
00:03:18,910 --> 00:03:19,750
Qué cuentas?

60
00:03:21,400 --> 00:03:22,240
Pero qué cuentas?

61
00:03:22,300 --> 00:03:22,990
Es una lista.

62
00:03:23,110 --> 00:03:29,500
Y esta lista la vamos a trasformar en un stream que es un API de Java 8 TONCE stream.

63
00:03:29,830 --> 00:03:32,560
El método stream acá se convierte en una corriente.

64
00:03:32,710 --> 00:03:33,400
Punto.

65
00:03:33,520 --> 00:03:34,570
Vamos a filtrar.

66
00:03:34,750 --> 00:03:43,090
Acá tenemos el método filter filter y acá se tienen que evaluar una prisión booleana por cada elemento

67
00:03:43,180 --> 00:03:43,990
del stream.

68
00:03:44,120 --> 00:03:46,480
Bueno, también de la lista obtenemos el objeto.

69
00:03:46,600 --> 00:03:48,370
Los elementos son del tipo cuenta.

70
00:03:48,610 --> 00:03:50,170
Le vamos a merced de cuenta.

71
00:03:50,350 --> 00:03:54,340
Y acá una prisión lanta flecha y una prisión booleana.

72
00:03:54,550 --> 00:03:55,450
Entonces que sé.

73
00:03:55,660 --> 00:03:56,290
Punto.

74
00:03:56,590 --> 00:03:59,230
Qué persona perfecto!

75
00:03:59,590 --> 00:04:00,070
Punto.

76
00:04:00,160 --> 00:04:02,140
Equals a este valor esperado.

77
00:04:02,410 --> 00:04:02,770
Es decir.

78
00:04:02,830 --> 00:04:04,470
Andrés Andrés.

79
00:04:05,170 --> 00:04:11,980
Si vamos a comparar que existe efectivamente este valor esperado en la lista el stream, entonces si

80
00:04:11,980 --> 00:04:19,600
existe lo va a filtrar y vamos a tener un stream de un solo elemento y lo vamos a obtener con el método

81
00:04:19,690 --> 00:04:20,860
Find First.

82
00:04:20,980 --> 00:04:21,670
Por acá lo tenemos.

83
00:04:21,790 --> 00:04:23,920
Buscar primero Find first.

84
00:04:24,730 --> 00:04:27,760
Y eso devuelve un optional que también es de Java 8.

85
00:04:28,120 --> 00:04:29,140
Voy a ordenar un poco.

86
00:04:29,350 --> 00:04:35,980
Por ejemplo, acabo de bajar en Filter, bajamos en Filter, acá tenemos el filtro, bajamos en Find

87
00:04:35,980 --> 00:04:40,630
First y acá bajamos otro más y con el método GET lo obtenemos.

88
00:04:40,690 --> 00:04:42,100
Acá, acá tenemos el geto.

89
00:04:42,790 --> 00:04:43,570
Obtenemos el objeto.

90
00:04:43,570 --> 00:04:44,110
Cuenta.

91
00:04:44,380 --> 00:04:45,130
Punto.

92
00:04:45,370 --> 00:04:46,390
Qué persona llega?

93
00:04:46,390 --> 00:04:47,240
Obtenemos el string.

94
00:04:47,560 --> 00:04:48,940
Obtenemos electrificar.

95
00:04:49,180 --> 00:04:50,530
Acá no se preocupen true warning.

96
00:04:50,680 --> 00:04:56,080
Aunque también podríamos preguntar si está presente evaluar, pero eso lo podríamos dejar para otro

97
00:04:56,080 --> 00:04:56,470
test.

98
00:04:56,680 --> 00:04:59,500
Y esto debería pasar porque ya tenemos la relación inversa.

99
00:04:59,620 --> 00:05:00,400
Vamos a levantar.

100
00:05:00,460 --> 00:05:01,210
Vamos a probar.

101
00:05:03,890 --> 00:05:04,610
Y pasa la prueba.

102
00:05:04,790 --> 00:05:06,110
Encuentra Andrés.

103
00:05:06,290 --> 00:05:06,890
Así que está bien.

104
00:05:07,100 --> 00:05:13,100
De hecho, podríamos preguntar si está presente, pero con un hacer thru evaluar que efectivamente sea

105
00:05:13,100 --> 00:05:14,420
true el presente.

106
00:05:14,630 --> 00:05:17,870
Bueno, y eso sería otro test similar a este.

107
00:05:18,770 --> 00:05:23,840
De hecho lo voy a copiar porque sería muy parecido, pero thru hacer thru.

108
00:05:24,260 --> 00:05:26,600
Por acá cambiamos thru.

109
00:05:26,990 --> 00:05:32,120
Esto lo quitamos y solamente evaluamos todo acá, pero un poco distinto.

110
00:05:32,660 --> 00:05:40,100
Es decir, obtenemos la persona, la filtramos y en vez de guet, en vez de obtener invocar el método

111
00:05:40,190 --> 00:05:43,940
gué persona para comparar con el valor esperado con 3.

112
00:05:44,030 --> 00:05:47,600
Simplemente es toda cacería y se presenta.

113
00:05:48,420 --> 00:05:53,250
Se está presenta y después vamos a ver que tenemos otra variante, pero bueno, lo vamos a ejecutar.

114
00:05:55,000 --> 00:05:56,500
Levantamos y está correcto.

115
00:05:57,250 --> 00:05:57,790
Se fijan.

116
00:05:57,970 --> 00:06:03,190
Y otra variante en una sola línea, en vez de tener find first punto y expresen.

117
00:06:03,250 --> 00:06:07,220
Simplemente quitamos el fin first henny match.

118
00:06:09,900 --> 00:06:11,100
Y colocamos esto acá.

119
00:06:14,520 --> 00:06:17,520
Pero se flecha y pegamos.

120
00:06:17,760 --> 00:06:20,010
Pero incluso esto se reemplaza por el filtro.

121
00:06:20,610 --> 00:06:26,010
Es decir, quitamos esto y dejamos solamente en Limache a pie Stream se encuentra.

122
00:06:26,100 --> 00:06:28,350
Hay algún match con Andrés?

123
00:06:28,380 --> 00:06:29,040
Perfecto.

124
00:06:29,250 --> 00:06:30,680
Devuelve otro y lo encuentra.

125
00:06:30,690 --> 00:06:31,950
Se fijan mucho más simple.

126
00:06:36,130 --> 00:06:41,920
De esta crisis que tenemos probada la relación inversa en ambos sentidos, incluso de tres forma primero

127
00:06:42,010 --> 00:06:48,760
el banco con las cuentas, con sus cuentas, después una cuenta en particular con el banco que coincida

128
00:06:48,880 --> 00:06:52,900
y después el banco con una cuenta en cuestión.

129
00:06:52,990 --> 00:06:56,500
Por ejemplo, en 3 también podríamos probar la de Yondu.

130
00:06:57,410 --> 00:06:58,820
Por ejemplo, copiamos acá.

131
00:07:00,690 --> 00:07:01,470
Y la pegamos acá.

132
00:07:01,960 --> 00:07:03,630
Probamos si está Johnno.

133
00:07:05,240 --> 00:07:06,020
Ejecutamos.

134
00:07:07,840 --> 00:07:14,620
También para qué bases si colocamos el H acá, cambiamos el orden de Laucha y levantamos.

135
00:07:18,070 --> 00:07:24,060
Fools con el H después de la O. nos encuentra, pero si antes se fijan, está bien.

136
00:07:25,360 --> 00:07:25,960
Lo dejamos así.

137
00:07:27,070 --> 00:07:33,520
Entonces, para finalizar, en este hacer equals obtenemos las cuentas, la convertimos de una lista

138
00:07:33,590 --> 00:07:40,780
a un stream de ya 8 filtramos PokÃmon por 3 obtenemos 3 con el fin FERT, es decir, lo convertimos

139
00:07:40,900 --> 00:07:46,690
de un stream a un tipo optional y le invocamos el GET para obtener el objeto cuenta.

140
00:07:46,900 --> 00:07:51,730
No quiero entrar en detalles del API optional, ni tampoco el API stream, porque un tema muy extenso.

141
00:07:51,970 --> 00:07:56,490
Luego invocamos persona del tipo String y lo comparamos con esto y listo.

142
00:07:56,920 --> 00:07:58,210
Ahí tenemos nada más.

143
00:07:58,300 --> 00:08:00,250
Continuamos en la siguiente clase.
