-
Notifications
You must be signed in to change notification settings - Fork 0
/
App.java
73 lines (56 loc) · 2.6 KB
/
App.java
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
package buscapaises;
import java.io.IOException;
import java.util.Comparator;
import java.util.HashMap;
import java.util.LinkedHashMap;
import java.util.Map;
public class App {
public static void main(String[] args) throws Exception {
buscarDados();
// buscarPorPalavraChave("tupi-guarani");
}
// Busca os dados dos países e os armazena em arquivos
public static void buscarDados() throws IOException, NullPointerException {
try {
Map<String, String> paisesDaOnu = Pais.buscarPaisesDaOnu();
TratamentoDeTexto.downloadStopWords("stop_words.txt");
TratamentoDeTexto tratamentoDeTexto = new TratamentoDeTexto("stop_words.txt");
for(String paisNome : paisesDaOnu.keySet()) {
Pais pais = new Pais(paisNome, paisesDaOnu.get(paisNome), tratamentoDeTexto);
Pais.salvarPais(pais, "paises/" + paisNome.replaceAll("(\\s)", "_") + ".ser");
}
} catch (IOException e) {
e.printStackTrace();
} catch (NullPointerException e) {
e.printStackTrace();
}
}
// Dado que os dados dos países foram buscados,
// o método abaixo gera as pontuações dos países de acordo com a palavra-chave fornecida
public static void buscarPorPalavraChave(String palavraChave) throws IOException, NullPointerException, ClassNotFoundException {
String palavra = palavraChave.toLowerCase();
try {
Map<String, String> paisesDaOnu = Pais.buscarPaisesDaOnu();
Map<String, Float> paisesPontuacao = new HashMap<String, Float>();
LinkedHashMap<String, Float> paisesOrdenados = new LinkedHashMap<>();
for(String paisNome : paisesDaOnu.keySet()) {
Pais pais = Pais.lerPais("paises/" + paisNome.replaceAll("(\\s)", "_") + ".ser");
float pontuacao = pais.gerarPontuacao(palavra);
paisesPontuacao.put(paisNome, pontuacao);
}
paisesPontuacao.entrySet()
.stream()
.sorted(Map.Entry.comparingByValue(Comparator.reverseOrder()))
.forEachOrdered(x -> paisesOrdenados.put(x.getKey(), x.getValue()));
for(String paisNome : paisesOrdenados.keySet()) {
System.out.println(paisNome + " - " + paisesOrdenados.get(paisNome));
}
} catch (IOException e) {
e.printStackTrace();
} catch (NullPointerException e) {
e.printStackTrace();
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
}
}