1
00:00:00,360 --> 00:00:04,770
Me continuamos, vamos a implementar la clase Cérvix Extreme Service, una clase concreta.

2
00:00:04,950 --> 00:00:06,030
Entonces nos vamos.

3
00:00:06,330 --> 00:00:15,120
Pack explores por acá y en servis creamos la clase al inser yeva class y vamos a llamar examen servis

4
00:00:15,330 --> 00:00:17,010
hoy am piel implementas.

5
00:00:20,160 --> 00:00:24,210
Hay Amplíelo de implementar perfecto lo siguiente implemente

6
00:00:27,060 --> 00:00:28,470
examen vencerles al enter.

7
00:00:28,690 --> 00:00:35,100
Implementar metodos o si no sobre el error sobre aca porque parte lo mismo implementa el metodo aca

8
00:00:35,370 --> 00:00:37,350
el listo se implementa el metodo.

9
00:00:37,350 --> 00:00:39,300
La interfaz acá la tenemos.

10
00:00:39,390 --> 00:00:43,110
Entonces la idea es interactuar con el repositorio.

11
00:00:43,200 --> 00:00:44,250
Se guardan los 7.

12
00:00:44,250 --> 00:00:51,480
Pasó a crear un atributo con esta dependencia private y la interfaz repositorio eczemas repositorio.

13
00:00:54,920 --> 00:01:01,130
Perfecto, también podríamos crear un constructor para poder pasar esta dependencia cuando creamos el

14
00:01:01,130 --> 00:01:07,730
objeto, servis la instancia al insert constructor y pasamos el repositorio.

15
00:01:07,940 --> 00:01:08,270
Listo.

16
00:01:08,360 --> 00:01:09,320
Ahí tenemos la dependencia.

17
00:01:09,680 --> 00:01:14,510
Lo siguiente es utilizar el método Find All para obtener todos los exámenes.

18
00:01:14,630 --> 00:01:19,640
Y dentro este método obtenemos el nombre del examen que queremos buscar, por ejemplo, usando un for,

19
00:01:19,760 --> 00:01:21,830
un foreach o el API stream.

20
00:01:21,950 --> 00:01:25,120
Recorremos esta lista de exámenes preguntando por el nombre.

21
00:01:25,130 --> 00:01:27,170
Cuando lo encontremos lo devolvemos.

22
00:01:27,180 --> 00:01:28,700
Entonces en realidad sería simple.

23
00:01:28,910 --> 00:01:39,140
Bajamos por acá para el ejemplo vamos a utilizar el API Stream de Java Find Holl devuelve un listo que

24
00:01:39,140 --> 00:01:41,870
contiene métodos stream stream.

25
00:01:41,990 --> 00:01:42,680
Por acá lo tenemos.

26
00:01:42,680 --> 00:01:46,220
Convertimos esto a un flujo, a una corriente y la idea.

27
00:01:46,460 --> 00:01:52,370
La ventaja de utilizar stream es que mucho más fácil buscar por qué podemos utilizar el método o el

28
00:01:52,370 --> 00:01:55,970
operador filter para filtrar, entonces filter.

29
00:01:56,270 --> 00:01:59,840
Acá se emite cada elemento de este flujo, es decir, cada examen.

30
00:01:59,990 --> 00:02:07,070
Una persona landa una función de flecha llegar una expresión booleana, una condición que se le conoce

31
00:02:07,070 --> 00:02:08,140
como predicativo.

32
00:02:08,370 --> 00:02:15,470
Lo que preguntamos entonces si el nombre del examen contiene esta palabra que estamos pasando, este

33
00:02:15,470 --> 00:02:21,110
nombre o si es igual a este nombre, entonces lo filtra y lo encontramos y lo que hace es devolver este

34
00:02:21,110 --> 00:02:22,340
examen a esta corriente.

35
00:02:22,580 --> 00:02:27,470
Es decir, convierte esta corriente con un elemento con el examen encontrado.

36
00:02:28,130 --> 00:02:30,350
Preguntamos e quet nombre?

37
00:02:30,980 --> 00:02:31,770
Punto.

38
00:02:31,880 --> 00:02:35,870
Bueno, puede ser igual o contains y pasamos nombre.

39
00:02:36,860 --> 00:02:37,640
Vamos a bajar.

40
00:02:38,150 --> 00:02:38,750
Punto.

41
00:02:38,960 --> 00:02:44,450
El resultado es un stream, pero en realidad quiero uno solo, un suplemento, el encontrado.

42
00:02:44,660 --> 00:02:50,570
Entonces colocamos Find First, el método Find First que devuelve sin techo.

43
00:02:50,570 --> 00:02:54,960
Si vemos el API, devuelve un optional acá, un opcional del objeto.

44
00:02:55,670 --> 00:02:57,980
Entonces acá sería un optional.

45
00:03:00,280 --> 00:03:01,180
De examen.

46
00:03:03,230 --> 00:03:07,300
Examen optional obtenÃa igual.

47
00:03:07,540 --> 00:03:07,780
Esto.

48
00:03:08,020 --> 00:03:08,560
Perfecto.

49
00:03:08,650 --> 00:03:11,270
Vamos a importar acá importamos clase.

50
00:03:11,650 --> 00:03:12,070
Y listo.

51
00:03:12,670 --> 00:03:14,500
Vamos a bajar stream.

52
00:03:15,100 --> 00:03:17,200
Bajamos en Filter por acá.

53
00:03:17,460 --> 00:03:19,980
Fan enfermo listo utilizando lápiz trim 2.

54
00:03:19,990 --> 00:03:23,890
Obtenemos el objeto como opcional, pero no quiero entrar mucho en detalle.

55
00:03:24,130 --> 00:03:27,820
La idea de que traten de manejar esto concepto que son propios de Java.

56
00:03:27,910 --> 00:03:32,940
Pero básicamente el optional contiene una representación del objeto para evitar el nulo intercepción.

57
00:03:33,070 --> 00:03:39,220
Entonces lo podemos obtener con el metodo GET o si nos encuentra dentro de the grupero porque lo que

58
00:03:39,220 --> 00:03:41,410
hace es envolver el objeto cuando lo encuentre.

59
00:03:41,470 --> 00:03:48,760
Y si no tiene una referencia vacía de tu objeto, entonces puedo preguntar por ejemplo if o antes preguntar

60
00:03:48,820 --> 00:03:53,140
vamos a tener el examen, el examen que queremos devolver?

61
00:03:53,230 --> 00:03:58,730
Igual no le llega a preguntar con un hijo, no sé.

62
00:03:58,840 --> 00:04:00,770
If Examen opcional.

63
00:04:02,080 --> 00:04:02,920
Acá lo tenemos.

64
00:04:03,550 --> 00:04:05,090
Punto is present.

65
00:04:06,340 --> 00:04:07,780
Si está presente se cite.

66
00:04:07,780 --> 00:04:09,070
Se lo encontró perfecto.

67
00:04:09,100 --> 00:04:09,760
Se lo asignamos.

68
00:04:09,800 --> 00:04:12,580
Examen igual.

69
00:04:12,730 --> 00:04:14,120
Examen optional llega.

70
00:04:14,140 --> 00:04:21,670
Tenemos diferente forma, por ejemplo utilizando el método GET, pero lo que es el get es muy parecido

71
00:04:21,730 --> 00:04:23,830
o lo mismo que el OR el FRU.

72
00:04:24,040 --> 00:04:24,880
Otra alternativa.

73
00:04:24,880 --> 00:04:31,210
De hecho, el API, como nota dice, prefiere o prefiere la opción la alternativa de utilizar el método

74
00:04:31,300 --> 00:04:33,130
OR el Satoru se fijan.

75
00:04:33,190 --> 00:04:40,240
Entonces, si no encuentra las una opción, entonces or que tenemos en realidad varios or es or else

76
00:04:40,330 --> 00:04:45,820
y acá pasamos un objeto por defecto null una opción Landau que devuelva el objeto que queremos devolver

77
00:04:45,820 --> 00:04:48,890
por defecto en caso de que no exista o lanzar una excepción.

78
00:04:49,540 --> 00:04:51,430
Vamos a coger acá or el 0.

79
00:04:52,330 --> 00:04:52,730
Listo.

80
00:04:53,200 --> 00:04:55,150
Y acá en vez de en un examen.

81
00:04:56,350 --> 00:04:56,590
Bien.

82
00:04:56,650 --> 00:04:58,110
Ahí tenemos la implementación del service.

83
00:04:58,810 --> 00:05:02,140
Entonces busca en el repositorio Find all.

84
00:05:02,350 --> 00:05:04,930
Da lo mismo como implementar el repository.

85
00:05:05,050 --> 00:05:13,060
Puede ser con JPA, con iben, con JS o puede ser un cliente HTTP utilizando por ejemplo rest template

86
00:05:13,270 --> 00:05:16,120
que se comunica a un micro servicio a un API rest.

87
00:05:16,540 --> 00:05:17,500
Pero lo que hace es buscar.

88
00:05:17,560 --> 00:05:20,980
Es decir, devuelve una lista busca utilizando el epis trim.

89
00:05:21,130 --> 00:05:26,470
Pregunta en el método filter por cada elemento por elemento busca y contiene este nombre.

90
00:05:26,650 --> 00:05:31,420
Si lo encuentra, lo devuelve como un original y se establece entre el optional devolver.

91
00:05:31,420 --> 00:05:35,050
Molestasen el examen el objeto en cuestión electo.

92
00:05:35,290 --> 00:05:35,440
Bien.

93
00:05:35,500 --> 00:05:36,340
El siguiente paso.

94
00:05:36,460 --> 00:05:39,520
Vamos a crear una implementación simple del repositorio.

95
00:05:40,510 --> 00:05:42,640
Con algunos datos de prueba, unos datos de ejemplo.

96
00:05:42,850 --> 00:05:48,730
En el fondo, a crear como una implementación falsa pero implementado por nosotros, sin ninguna fuente

97
00:05:48,730 --> 00:05:53,200
externa, sin ninguna complejidad en cierto te basea todo de de arrest.

98
00:05:53,470 --> 00:05:56,980
Entonces en repositorios vamos a crear una nueva clase.

99
00:05:58,390 --> 00:06:01,480
Examen repository hoy en piel o simplemente.

100
00:06:07,030 --> 00:06:13,330
Esteban Repository Bien, implementamos el método al final con datos de ejemplo.

101
00:06:13,810 --> 00:06:19,900
Entonces acá vamos a volver un ArrayList, una lista con exámenes, por ejemplo, utilizando la clase

102
00:06:19,990 --> 00:06:20,580
Arraiz.

103
00:06:21,760 --> 00:06:23,800
El método hace listo como lista.

104
00:06:23,890 --> 00:06:27,940
Eso devuelve una lista y acá con los objetos exámenes separa por comas.

105
00:06:28,570 --> 00:06:32,530
Entonces new examen y le di el nombre, por ejemplo.

106
00:06:32,650 --> 00:06:33,490
Y 5.

107
00:06:33,580 --> 00:06:34,270
Del tipo lonko.

108
00:06:34,480 --> 00:06:38,470
Entonces acá pasamos la ELE mayúscula coma un nombre.

109
00:06:38,470 --> 00:06:40,390
Por ejemplo matemáticas.

110
00:06:47,010 --> 00:06:48,740
Di6 lenguaje.

111
00:06:51,620 --> 00:06:52,340
Vamos a bajar.

112
00:06:52,910 --> 00:07:01,040
New Examen Historia perfecto, se fijan una implementación simple con datos de ejemplo y esto es lo

113
00:07:01,040 --> 00:07:03,590
que vamos a probar todavía sin entrar como Quito.

114
00:07:03,710 --> 00:07:09,620
La idea es implementar esta clase con algo simple, con datos de ejemplo y probar esta implementación,

115
00:07:09,830 --> 00:07:14,660
porque de hecho, utilizando un poquito, ni siquiera sería necesario tener esta clase de prueba.

116
00:07:14,750 --> 00:07:21,680
Después vamos a ver, simplemente bastaría con la interfaz y poder realizar un mock o un simulacro de

117
00:07:21,680 --> 00:07:22,280
este método.

118
00:07:22,430 --> 00:07:24,710
Después vamos a ver que se da cuenta de que utilizando me quito.

119
00:07:24,830 --> 00:07:28,400
En realidad esta implementación da exactamente igual, da lo mismo.

120
00:07:28,730 --> 00:07:34,210
Y también da lo mismo si es un ArrayList lo que devolvemos una raíz hash list o si obtuviéramos los

121
00:07:34,220 --> 00:07:36,950
datos de cualquier fuente externa como una base dato.

122
00:07:36,950 --> 00:07:38,600
Por ejemplo, cuál sería el siguiente paso?

123
00:07:38,670 --> 00:07:47,710
Bueno, probar crear nuestra clase test, no vamos a ir a examen, por ejemplo acá examen servis e implemente

124
00:07:48,350 --> 00:07:54,710
y acá sobre la clase hacemos un clic en que parte y con al enter crear test.

125
00:07:55,370 --> 00:07:56,930
También podemos crear la clase de forma manual.

126
00:07:57,020 --> 00:08:00,650
No hay ningún problema, pero dentro de test acá perdón.

127
00:08:00,900 --> 00:08:07,550
Test ya va igual con clic derecho New York Class la creamos, anotamos el método con usted se fijan

128
00:08:07,550 --> 00:08:07,910
igual.

129
00:08:09,150 --> 00:08:17,880
Pero acá de forma rápida crea texto, le damos un nombre examen servis simplemen test perfecto con Yuni

130
00:08:17,970 --> 00:08:24,030
5 incluso para comenzar pudrieron marcar esta opción para quien no genere un método test con la anotación

131
00:08:24,150 --> 00:08:24,570
OK.

132
00:08:25,680 --> 00:08:31,620
Se fijan en el método bueno, la clase con el test lo quería acá en test punto Yaba.

133
00:08:31,680 --> 00:08:36,340
Acá tenemos la clase, ya podemos empezar a probar, pero eso lo dejamos para la siguiente clase.

134
00:08:36,510 --> 00:08:37,200
Nos vemos.
