Skip to content

Commit 327a3d9

Browse files
author
Juan Sáez García
committed
streampipeline
1 parent f69da78 commit 327a3d9

File tree

5 files changed

+201
-0
lines changed

5 files changed

+201
-0
lines changed

streamspipeline/.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
target

streamspipeline/pom.xml

Lines changed: 75 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,75 @@
1+
<?xml version="1.0" encoding="UTF-8"?>
2+
3+
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
4+
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
5+
<modelVersion>4.0.0</modelVersion>
6+
7+
<groupId>com.streamspipeline</groupId>
8+
<artifactId>streamspipeline</artifactId>
9+
<version>1.0-SNAPSHOT</version>
10+
11+
<name>streamspipeline</name>
12+
<!-- FIXME change it to the project's website -->
13+
<url>http://www.example.com</url>
14+
15+
<properties>
16+
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
17+
<maven.compiler.source>1.8</maven.compiler.source>
18+
<maven.compiler.target>1.8</maven.compiler.target>
19+
</properties>
20+
21+
<dependencies>
22+
<dependency>
23+
<groupId>junit</groupId>
24+
<artifactId>junit</artifactId>
25+
<version>4.11</version>
26+
<scope>test</scope>
27+
</dependency>
28+
</dependencies>
29+
30+
<build>
31+
<pluginManagement><!-- lock down plugins versions to avoid using Maven defaults (may be moved to parent pom) -->
32+
<plugins>
33+
<!-- clean lifecycle, see https://maven.apache.org/ref/current/maven-core/lifecycles.html#clean_Lifecycle -->
34+
<plugin>
35+
<artifactId>maven-clean-plugin</artifactId>
36+
<version>3.1.0</version>
37+
</plugin>
38+
<!-- default lifecycle, jar packaging: see https://maven.apache.org/ref/current/maven-core/default-bindings.html#Plugin_bindings_for_jar_packaging -->
39+
<plugin>
40+
<artifactId>maven-resources-plugin</artifactId>
41+
<version>3.0.2</version>
42+
</plugin>
43+
<plugin>
44+
<artifactId>maven-compiler-plugin</artifactId>
45+
<version>3.8.0</version>
46+
</plugin>
47+
<plugin>
48+
<artifactId>maven-surefire-plugin</artifactId>
49+
<version>2.22.1</version>
50+
</plugin>
51+
<plugin>
52+
<artifactId>maven-jar-plugin</artifactId>
53+
<version>3.0.2</version>
54+
</plugin>
55+
<plugin>
56+
<artifactId>maven-install-plugin</artifactId>
57+
<version>2.5.2</version>
58+
</plugin>
59+
<plugin>
60+
<artifactId>maven-deploy-plugin</artifactId>
61+
<version>2.8.2</version>
62+
</plugin>
63+
<!-- site lifecycle, see https://maven.apache.org/ref/current/maven-core/lifecycles.html#site_Lifecycle -->
64+
<plugin>
65+
<artifactId>maven-site-plugin</artifactId>
66+
<version>3.7.1</version>
67+
</plugin>
68+
<plugin>
69+
<artifactId>maven-project-info-reports-plugin</artifactId>
70+
<version>3.0.0</version>
71+
</plugin>
72+
</plugins>
73+
</pluginManagement>
74+
</build>
75+
</project>
Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
package com.streamspipeline;
2+
3+
import java.util.Optional;
4+
5+
public class Persona {
6+
7+
private String nombre;
8+
private String apellido1;
9+
private Optional<String> apellido2;
10+
11+
public Persona(String nombre, String apellido1, Optional<String> apellido2) {
12+
this.nombre = nombre;
13+
this.apellido1 = apellido1;
14+
this.apellido2 = apellido2;
15+
}
16+
17+
public String getNombre() {
18+
return nombre;
19+
}
20+
21+
public String getApellido1() {
22+
return apellido1;
23+
}
24+
25+
public Optional<String> getApellido2() {
26+
return apellido2;
27+
}
28+
29+
@Override
30+
public String toString() {
31+
return nombre + "," + apellido1 + " " + apellido2.orElse("");
32+
}
33+
}
Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,44 @@
1+
package com.streamspipeline;
2+
3+
import java.util.ArrayList;
4+
import java.util.List;
5+
import java.util.Optional;
6+
import java.util.stream.Stream;
7+
8+
public class PersonaUtil {
9+
10+
/** todos los metodos deben construir streams a partir de esta lista */
11+
private List<Persona> bbdd = new ArrayList<>();
12+
13+
public PersonaUtil() {
14+
bbdd.add(new Persona("Antonia", "Garcia", Optional.of("Sastre")));
15+
bbdd.add(new Persona("John", "smith", Optional.empty()));
16+
bbdd.add(new Persona("Pedro", "Llull", Optional.of("Mir")));
17+
}
18+
19+
/**
20+
* Devuelve stream con las personas que no tiene segundo apellido
21+
*/
22+
public Stream<Persona> listaSinApellido2() {
23+
return this.bbdd.stream().filter(persona -> !persona.getApellido2().isPresent());
24+
}
25+
26+
/**
27+
* Devuelve stream con los nombres de todas las personas
28+
*/
29+
public Stream<String> listaNombres() {
30+
return this.bbdd.stream().map(persona -> persona.getNombre());
31+
}
32+
33+
/**
34+
* Devuelve stream con primer apellido ordenado sin tener en cuenta mayusculas /
35+
* minusculas
36+
* pista: metodo de String compareToIgnoreCase
37+
*/
38+
public Stream<String> listaApellido1Ordenada() {
39+
return bbdd.stream()
40+
.map(p -> p.getApellido1())
41+
.sorted((p1, p2) -> p1.compareToIgnoreCase(p2));
42+
}
43+
44+
}
Lines changed: 48 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,48 @@
1+
package com.streamspipeline;
2+
3+
import static org.junit.Assert.*;
4+
5+
import java.util.List;
6+
import java.util.stream.Collectors;
7+
8+
import org.junit.Before;
9+
import org.junit.Test;
10+
11+
public class TestUtil {
12+
13+
private PersonaUtil util;
14+
15+
@Before
16+
public void init() {
17+
util = new PersonaUtil();
18+
}
19+
20+
@Test
21+
public void test_apellido2_null() {
22+
List<Persona> resultado = util.listaSinApellido2().collect(Collectors.toList());
23+
assertEquals(1, resultado.size());
24+
assertEquals("John", resultado.get(0).getNombre());
25+
}
26+
27+
@Test
28+
public void test_obtener_nombres() {
29+
List<String> resultado = util.listaNombres().collect(Collectors.toList());
30+
31+
assertEquals(3, resultado.size());
32+
assertEquals("Antonia", resultado.get(0));
33+
assertEquals("John", resultado.get(1));
34+
assertEquals("Pedro", resultado.get(2));
35+
36+
}
37+
38+
@Test
39+
public void test_obtener_apellido1() {
40+
List<String> resultado = util.listaApellido1Ordenada().collect(Collectors.toList());
41+
42+
assertEquals(3, resultado.size());
43+
assertEquals("Garcia", resultado.get(0));
44+
assertEquals("Llull", resultado.get(1));
45+
assertEquals("smith", resultado.get(2));
46+
47+
}
48+
}

0 commit comments

Comments
 (0)