Skip to content

Commit 55beb10

Browse files
resolvendo desafio do segundo dia
1 parent d45df70 commit 55beb10

File tree

3 files changed

+124
-2
lines changed

3 files changed

+124
-2
lines changed

filmes/pom.xml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -19,8 +19,8 @@
1919
<groupId>org.apache.maven.plugins</groupId>
2020
<artifactId>maven-compiler-plugin</artifactId>
2121
<configuration>
22-
<source>11</source>
23-
<target>11</target>
22+
<source>15</source>
23+
<target>15</target>
2424
</configuration>
2525
</plugin>
2626
</plugins>

filmes/src/main/java/io/github/raphaelrighetti/filmes/LeitorApi.java

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,13 @@
11
package io.github.raphaelrighetti.filmes;
22

3+
import io.github.raphaelrighetti.filmes.regex.JsonMatcher;
4+
35
import java.io.*;
46
import java.net.URI;
57
import java.net.http.HttpClient;
68
import java.net.http.HttpRequest;
79
import java.net.http.HttpResponse;
10+
import java.util.List;
811
import java.util.Properties;
912

1013
public class LeitorApi {
@@ -26,6 +29,13 @@ public static void main(String[] args) {
2629
try {
2730
HttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());
2831
System.out.println(response.body());
32+
JsonMatcher jsonMatcher = new JsonMatcher(response.body());
33+
jsonMatcher.getFilmes().forEach(System.out::println);
34+
List<String> ranks = jsonMatcher.getRanks();
35+
for (int i = 0; i < ranks.size(); i++) {
36+
System.out.println(ranks.get(i) + ", " + i);
37+
38+
}
2939
} catch (Exception e) {
3040
e.printStackTrace();
3141
}
Lines changed: 112 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,112 @@
1+
package io.github.raphaelrighetti.filmes.regex;
2+
3+
import java.util.ArrayList;
4+
import java.util.Collections;
5+
import java.util.List;
6+
import java.util.regex.Matcher;
7+
import java.util.regex.Pattern;
8+
9+
public class JsonMatcher {
10+
11+
private List<String> filmes = new ArrayList<>();
12+
private List<String> titles = new ArrayList<>();
13+
private List<String> urlImages = new ArrayList<>();
14+
private List<String> years = new ArrayList<>();
15+
private List<String> ranks = new ArrayList<>();
16+
17+
public JsonMatcher(String json) {
18+
checaStringNull(json);
19+
json = formataJson(json);
20+
preencheTudo(json);
21+
}
22+
23+
public List<String> getFilmes() {
24+
checaListaVazia(filmes);
25+
return Collections.unmodifiableList(filmes);
26+
}
27+
28+
public List<String> getTitles() {
29+
checaListaVazia(titles);
30+
return Collections.unmodifiableList(titles);
31+
}
32+
33+
public List<String> getUrlImages() {
34+
checaListaVazia(urlImages);
35+
return Collections.unmodifiableList(urlImages);
36+
}
37+
38+
public List<String> getYears() {
39+
checaListaVazia(years);
40+
return Collections.unmodifiableList(years);
41+
}
42+
43+
public List<String> getRanks() {
44+
checaListaVazia(ranks);
45+
return Collections.unmodifiableList(ranks);
46+
}
47+
48+
private void preencheFilmes(String json) {
49+
Matcher matcher = Pattern.compile("(\\{[^{}]*})").matcher(json);
50+
while (matcher.find()) {
51+
filmes.add(matcher.group());
52+
}
53+
}
54+
55+
private void preencheTitles(String json) {
56+
Matcher matcher = Pattern.compile("\"title\":\"([^\"]*)\"").matcher(json);
57+
while (matcher.find()) {
58+
titles.add(matcher.group());
59+
}
60+
}
61+
62+
private void preencheUrlImages(String json) {
63+
Matcher matcher = Pattern.compile("\"image\":\"([^\"]*)\"").matcher(json);
64+
while (matcher.find()) {
65+
urlImages.add(matcher.group());
66+
}
67+
}
68+
69+
private void preencheYears(String json) {
70+
Matcher matcher = Pattern.compile("\"year\":\"([^\"]*)\"").matcher(json);
71+
while (matcher.find()) {
72+
years.add(matcher.group());
73+
}
74+
}
75+
76+
private void preencheRanks(String json) {
77+
Matcher matcher = Pattern.compile("\"rank\":\"([^\"]*)\"").matcher(json);
78+
while (matcher.find()) {
79+
ranks.add(matcher.group());
80+
}
81+
}
82+
83+
private void preencheTudo(String json) {
84+
preencheFilmes(json);
85+
preencheTitles(json);
86+
preencheUrlImages(json);
87+
preencheYears(json);
88+
preencheRanks(json);
89+
}
90+
91+
private void checaStringNull(String json) {
92+
if (json == null) {
93+
throw new NullPointerException("É necessário passar os dados!");
94+
}
95+
}
96+
97+
private void checaListaVazia(List<String> lista) {
98+
if (lista.isEmpty()) {
99+
throw new NullPointerException("A lista está vazia!");
100+
}
101+
}
102+
103+
private String formataJson(String json) {
104+
Matcher matcherStart = Pattern.compile("\\{\"items\":\\[").matcher(json);
105+
String resultWithoutStart = matcherStart.replaceAll("");
106+
107+
Matcher matcherEnd = Pattern.compile("],\"errorMessage\":\"\"}").matcher(resultWithoutStart);
108+
String result = matcherEnd.replaceAll("");
109+
110+
return result;
111+
}
112+
}

0 commit comments

Comments
 (0)