66
77package de .chojo .universalis .provider ;
88
9+ import de .chojo .universalis .entities .Language ;
910import de .chojo .universalis .entities .Name ;
1011
1112import java .util .Collections ;
13+ import java .util .Locale ;
1214import java .util .Map ;
1315import java .util .Optional ;
1416
@@ -22,11 +24,6 @@ public Name fromId(int id) {
2224 return new Name ("" , "" , "" , "" );
2325 }
2426
25- @ Override
26- public Optional <Integer > fromName (String name ) {
27- return Optional .empty ();
28- }
29-
3027 @ Override
3128 public Map <Integer , Name > ids () {
3229 return Collections .emptyMap ();
@@ -53,18 +50,33 @@ public Map<String, Integer> jp() {
5350 }
5451 };
5552
56- /**
57- * Returns the name based on an id
58- *
59- * @param id id
60- * @return name
61- */
62- Name fromId (int id );
53+ default Name fromId (int id ) {
54+ return ids ().get (id );
55+ }
6356
64- Optional <Integer > fromName (String name );
57+ default Optional <Integer > fromName (String name ) {
58+ for (Language lang : Language .values ()) {
59+ Optional <Integer > id = fromName (lang , name );
60+ if (id .isPresent ()) return id ;
61+ }
62+ return Optional .empty ();
63+ }
64+
65+ default Optional <Integer > fromName (Language language , String name ) {
66+ return Optional .ofNullable (languageMap (language ).get (name .toLowerCase (Locale .ROOT )));
67+ }
6568
6669 Map <Integer , Name > ids ();
6770
71+ default Map <String , Integer > languageMap (Language language ) {
72+ return switch (language ) {
73+ case ENGLISH -> en ();
74+ case GERMAN -> de ();
75+ case FRENCH -> fr ();
76+ case JAPANESE -> jp ();
77+ };
78+ }
79+
6880 Map <String , Integer > en ();
6981
7082 Map <String , Integer > de ();
0 commit comments