This repository was archived by the owner on Jul 19, 2025. It is now read-only.
forked from java-cli-apps/basic-java-22-quickstart
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathApplication.java
More file actions
executable file
·59 lines (49 loc) · 1.62 KB
/
Application.java
File metadata and controls
executable file
·59 lines (49 loc) · 1.62 KB
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
///usr/bin/env java --class-path ${APP_DIR:-.}/lib/'*' "$0" "$@"; exit $?
import net.fellbaum.jemoji.Emoji;
import net.fellbaum.jemoji.EmojiManager;
import java.util.List;
import java.util.Optional;
class Main {
public static void main(String... args) {
var language = Language.guess();
System.out.println(language.sayHello());
}
}
enum Language {
French("fr"),
English("en");
private final String alias;
private final String prefix;
Language(String alias) {
this.alias = alias;
this.prefix = alias;
}
static Language guess() {
var langEnvVar = System.getenv("LANG");
var langPrefix = langEnvVar.substring(0, langEnvVar.indexOf('_'));
return byPrefix(langPrefix);
}
String sayHello() {
Optional<List<Emoji>> optionalEmoji = EmojiManager.getByAlias(alias);
var emoji = optionalEmoji.map(Language::getFirstEmoji).orElse("");
if (this == French) {
return "Bonjour " + emoji;
} else if (this == English) {
return "Hello " + emoji;
} else {
throw new IllegalArgumentException("Unexpected Language: " + alias);
}
}
private static Language byPrefix(String prefix) {
if (French.prefix.equals(prefix)) {
return French;
} else if (English.prefix.equals(prefix)) {
return English;
} else {
throw new IllegalArgumentException("Unexpected Language: " + prefix);
}
}
private static String getFirstEmoji(List<Emoji> emojis) {
return emojis.isEmpty() ? "" : emojis.get(0).getEmoji();
}
}