Skip to content

Commit aa4b80e

Browse files
author
Thilo Kogge
committed
using a static map instead of reflection for the timago localization config
1 parent 0b99100 commit aa4b80e

1 file changed

Lines changed: 171 additions & 14 deletions

File tree

timeago-parser/src/main/java/org/schabi/newpipe/extractor/timeago/PatternsManager.java

Lines changed: 171 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -2,9 +2,178 @@
22

33
import javax.annotation.Nonnull;
44
import javax.annotation.Nullable;
5-
import java.lang.reflect.InvocationTargetException;
5+
import java.util.HashMap;
6+
import java.util.Map;
7+
8+
import org.schabi.newpipe.extractor.timeago.patterns.af;
9+
import org.schabi.newpipe.extractor.timeago.patterns.am;
10+
import org.schabi.newpipe.extractor.timeago.patterns.ar;
11+
import org.schabi.newpipe.extractor.timeago.patterns.az;
12+
import org.schabi.newpipe.extractor.timeago.patterns.be;
13+
import org.schabi.newpipe.extractor.timeago.patterns.bg;
14+
import org.schabi.newpipe.extractor.timeago.patterns.bn;
15+
import org.schabi.newpipe.extractor.timeago.patterns.bs;
16+
import org.schabi.newpipe.extractor.timeago.patterns.ca;
17+
import org.schabi.newpipe.extractor.timeago.patterns.cs;
18+
import org.schabi.newpipe.extractor.timeago.patterns.da;
19+
import org.schabi.newpipe.extractor.timeago.patterns.de;
20+
import org.schabi.newpipe.extractor.timeago.patterns.el;
21+
import org.schabi.newpipe.extractor.timeago.patterns.en;
22+
import org.schabi.newpipe.extractor.timeago.patterns.en_GB;
23+
import org.schabi.newpipe.extractor.timeago.patterns.es;
24+
import org.schabi.newpipe.extractor.timeago.patterns.es_419;
25+
import org.schabi.newpipe.extractor.timeago.patterns.es_US;
26+
import org.schabi.newpipe.extractor.timeago.patterns.et;
27+
import org.schabi.newpipe.extractor.timeago.patterns.eu;
28+
import org.schabi.newpipe.extractor.timeago.patterns.fa;
29+
import org.schabi.newpipe.extractor.timeago.patterns.fi;
30+
import org.schabi.newpipe.extractor.timeago.patterns.fil;
31+
import org.schabi.newpipe.extractor.timeago.patterns.fr;
32+
import org.schabi.newpipe.extractor.timeago.patterns.fr_CA;
33+
import org.schabi.newpipe.extractor.timeago.patterns.gl;
34+
import org.schabi.newpipe.extractor.timeago.patterns.gu;
35+
import org.schabi.newpipe.extractor.timeago.patterns.hi;
36+
import org.schabi.newpipe.extractor.timeago.patterns.hr;
37+
import org.schabi.newpipe.extractor.timeago.patterns.hu;
38+
import org.schabi.newpipe.extractor.timeago.patterns.hy;
39+
import org.schabi.newpipe.extractor.timeago.patterns.id;
40+
import org.schabi.newpipe.extractor.timeago.patterns.is;
41+
import org.schabi.newpipe.extractor.timeago.patterns.it;
42+
import org.schabi.newpipe.extractor.timeago.patterns.iw;
43+
import org.schabi.newpipe.extractor.timeago.patterns.ja;
44+
import org.schabi.newpipe.extractor.timeago.patterns.ka;
45+
import org.schabi.newpipe.extractor.timeago.patterns.kk;
46+
import org.schabi.newpipe.extractor.timeago.patterns.km;
47+
import org.schabi.newpipe.extractor.timeago.patterns.kn;
48+
import org.schabi.newpipe.extractor.timeago.patterns.ko;
49+
import org.schabi.newpipe.extractor.timeago.patterns.ky;
50+
import org.schabi.newpipe.extractor.timeago.patterns.lo;
51+
import org.schabi.newpipe.extractor.timeago.patterns.lt;
52+
import org.schabi.newpipe.extractor.timeago.patterns.lv;
53+
import org.schabi.newpipe.extractor.timeago.patterns.mk;
54+
import org.schabi.newpipe.extractor.timeago.patterns.ml;
55+
import org.schabi.newpipe.extractor.timeago.patterns.mn;
56+
import org.schabi.newpipe.extractor.timeago.patterns.mr;
57+
import org.schabi.newpipe.extractor.timeago.patterns.ms;
58+
import org.schabi.newpipe.extractor.timeago.patterns.my;
59+
import org.schabi.newpipe.extractor.timeago.patterns.ne;
60+
import org.schabi.newpipe.extractor.timeago.patterns.nl;
61+
import org.schabi.newpipe.extractor.timeago.patterns.no;
62+
import org.schabi.newpipe.extractor.timeago.patterns.pa;
63+
import org.schabi.newpipe.extractor.timeago.patterns.pl;
64+
import org.schabi.newpipe.extractor.timeago.patterns.pt;
65+
import org.schabi.newpipe.extractor.timeago.patterns.pt_PT;
66+
import org.schabi.newpipe.extractor.timeago.patterns.ro;
67+
import org.schabi.newpipe.extractor.timeago.patterns.ru;
68+
import org.schabi.newpipe.extractor.timeago.patterns.si;
69+
import org.schabi.newpipe.extractor.timeago.patterns.sk;
70+
import org.schabi.newpipe.extractor.timeago.patterns.sl;
71+
import org.schabi.newpipe.extractor.timeago.patterns.sq;
72+
import org.schabi.newpipe.extractor.timeago.patterns.sr;
73+
import org.schabi.newpipe.extractor.timeago.patterns.sr_Latn;
74+
import org.schabi.newpipe.extractor.timeago.patterns.sv;
75+
import org.schabi.newpipe.extractor.timeago.patterns.sw;
76+
import org.schabi.newpipe.extractor.timeago.patterns.ta;
77+
import org.schabi.newpipe.extractor.timeago.patterns.te;
78+
import org.schabi.newpipe.extractor.timeago.patterns.th;
79+
import org.schabi.newpipe.extractor.timeago.patterns.tr;
80+
import org.schabi.newpipe.extractor.timeago.patterns.uk;
81+
import org.schabi.newpipe.extractor.timeago.patterns.ur;
82+
import org.schabi.newpipe.extractor.timeago.patterns.uz;
83+
import org.schabi.newpipe.extractor.timeago.patterns.vi;
84+
import org.schabi.newpipe.extractor.timeago.patterns.zh_CN;
85+
import org.schabi.newpipe.extractor.timeago.patterns.zh_HK;
86+
import org.schabi.newpipe.extractor.timeago.patterns.zh_TW;
87+
import org.schabi.newpipe.extractor.timeago.patterns.zu;
88+
689

790
public class PatternsManager {
91+
92+
private static final Map<String, PatternsHolder> patternsMap = new HashMap<>();
93+
94+
static {
95+
patternsMap.put("af", af.getInstance());
96+
patternsMap.put("am", am.getInstance());
97+
patternsMap.put("ar", ar.getInstance());
98+
patternsMap.put("az", az.getInstance());
99+
patternsMap.put("be", be.getInstance());
100+
patternsMap.put("bg", bg.getInstance());
101+
patternsMap.put("bn", bn.getInstance());
102+
patternsMap.put("bs", bs.getInstance());
103+
patternsMap.put("ca", ca.getInstance());
104+
patternsMap.put("cs", cs.getInstance());
105+
patternsMap.put("da", da.getInstance());
106+
patternsMap.put("de", de.getInstance());
107+
patternsMap.put("el", el.getInstance());
108+
patternsMap.put("en_GB", en_GB.getInstance());
109+
patternsMap.put("en", en.getInstance());
110+
patternsMap.put("es_419", es_419.getInstance());
111+
patternsMap.put("es", es.getInstance());
112+
patternsMap.put("es_US", es_US.getInstance());
113+
patternsMap.put("et", et.getInstance());
114+
patternsMap.put("eu", eu.getInstance());
115+
patternsMap.put("fa", fa.getInstance());
116+
patternsMap.put("fi", fi.getInstance());
117+
patternsMap.put("fil", fil.getInstance());
118+
patternsMap.put("fr_CA", fr_CA.getInstance());
119+
patternsMap.put("fr", fr.getInstance());
120+
patternsMap.put("gl", gl.getInstance());
121+
patternsMap.put("gu", gu.getInstance());
122+
patternsMap.put("hi", hi.getInstance());
123+
patternsMap.put("hr", hr.getInstance());
124+
patternsMap.put("hu", hu.getInstance());
125+
patternsMap.put("hy", hy.getInstance());
126+
patternsMap.put("id", id.getInstance());
127+
patternsMap.put("is", is.getInstance());
128+
patternsMap.put("it", it.getInstance());
129+
patternsMap.put("iw", iw.getInstance());
130+
patternsMap.put("ja", ja.getInstance());
131+
patternsMap.put("ka", ka.getInstance());
132+
patternsMap.put("kk", kk.getInstance());
133+
patternsMap.put("km", km.getInstance());
134+
patternsMap.put("kn", kn.getInstance());
135+
patternsMap.put("ko", ko.getInstance());
136+
patternsMap.put("ky", ky.getInstance());
137+
patternsMap.put("lo", lo.getInstance());
138+
patternsMap.put("lt", lt.getInstance());
139+
patternsMap.put("lv", lv.getInstance());
140+
patternsMap.put("mk", mk.getInstance());
141+
patternsMap.put("ml", ml.getInstance());
142+
patternsMap.put("mn", mn.getInstance());
143+
patternsMap.put("mr", mr.getInstance());
144+
patternsMap.put("ms", ms.getInstance());
145+
patternsMap.put("my", my.getInstance());
146+
patternsMap.put("ne", ne.getInstance());
147+
patternsMap.put("nl", nl.getInstance());
148+
patternsMap.put("no", no.getInstance());
149+
patternsMap.put("pa", pa.getInstance());
150+
patternsMap.put("pl", pl.getInstance());
151+
patternsMap.put("pt", pt.getInstance());
152+
patternsMap.put("pt_PT", pt_PT.getInstance());
153+
patternsMap.put("ro", ro.getInstance());
154+
patternsMap.put("ru", ru.getInstance());
155+
patternsMap.put("si", si.getInstance());
156+
patternsMap.put("sk", sk.getInstance());
157+
patternsMap.put("sl", sl.getInstance());
158+
patternsMap.put("sq", sq.getInstance());
159+
patternsMap.put("sr", sr.getInstance());
160+
patternsMap.put("sr_Latn", sr_Latn.getInstance());
161+
patternsMap.put("sv", sv.getInstance());
162+
patternsMap.put("sw", sw.getInstance());
163+
patternsMap.put("ta", ta.getInstance());
164+
patternsMap.put("te", te.getInstance());
165+
patternsMap.put("th", th.getInstance());
166+
patternsMap.put("tr", tr.getInstance());
167+
patternsMap.put("uk", uk.getInstance());
168+
patternsMap.put("ur", ur.getInstance());
169+
patternsMap.put("uz", uz.getInstance());
170+
patternsMap.put("vi", vi.getInstance());
171+
patternsMap.put("zh_CN", zh_CN.getInstance());
172+
patternsMap.put("zh_HK", zh_HK.getInstance());
173+
patternsMap.put("zh_TW", zh_TW.getInstance());
174+
patternsMap.put("zu", zu.getInstance());
175+
}
176+
8177
/**
9178
* Return an holder object containing all the patterns array.
10179
*
@@ -14,18 +183,6 @@ public class PatternsManager {
14183
public static PatternsHolder getPatterns(@Nonnull String languageCode, @Nullable String countryCode) {
15184
final String targetLocalizationClassName = languageCode +
16185
(countryCode == null || countryCode.isEmpty() ? "" : "_" + countryCode);
17-
18-
try {
19-
final Class<?> targetClass = Class.forName(
20-
"org.schabi.newpipe.extractor.timeago.patterns." + targetLocalizationClassName);
21-
22-
return (PatternsHolder) targetClass.getDeclaredMethod("getInstance").invoke(null);
23-
} catch (ClassNotFoundException ignored) {
24-
// Target localization is not supported
25-
} catch (IllegalAccessException | NoSuchMethodException | InvocationTargetException e) {
26-
e.printStackTrace();
27-
}
28-
29-
return null;
186+
return patternsMap.get(targetLocalizationClassName);
30187
}
31188
}

0 commit comments

Comments
 (0)