1package android.databinding.tool.writer;
2
3class DynamicUtilWriter() {
4    public fun write(targetSdk : kotlin.Int) : KCode = kcode("package android.databinding;") {
5        nl("")
6        nl("import android.os.Build.VERSION;")
7        nl("import android.os.Build.VERSION_CODES;")
8        nl("")
9        block("public class DynamicUtil") {
10            nl("@SuppressWarnings(\"deprecation\")")
11            block("public static int getColorFromResource(final android.view.View view, final int resourceId)") {
12                if (targetSdk >= 23) {
13                    block("if (VERSION.SDK_INT >= VERSION_CODES.M)") {
14                        nl("return view.getContext().getColor(resourceId);")
15                    }
16                }
17                nl("return view.getResources().getColor(resourceId);")
18            }
19
20            nl("@SuppressWarnings(\"deprecation\")")
21            block("public static android.content.res.ColorStateList getColorStateListFromResource(final android.view.View view, final int resourceId)") {
22                if (targetSdk >= 23) {
23                    block("if (VERSION.SDK_INT >= VERSION_CODES.M)") {
24                        nl("return view.getContext().getColorStateList(resourceId);")
25                    }
26                }
27                nl("return view.getResources().getColorStateList(resourceId);")
28            }
29
30            nl("@SuppressWarnings(\"deprecation\")")
31            block("public static android.graphics.drawable.Drawable getDrawableFromResource(final android.view.View view, final int resourceId)") {
32                if (targetSdk >= 21) {
33                    block("if (VERSION.SDK_INT >= VERSION_CODES.LOLLIPOP)") {
34                        nl("return view.getContext().getDrawable(resourceId);")
35                    }
36                }
37                nl("return view.getResources().getDrawable(resourceId);")
38            }
39
40            block("public static boolean parse(String str, boolean fallback)") {
41                block("if (str == null)") {
42                    nl("return fallback;");
43                }
44                nl("return Boolean.parseBoolean(str);")
45            }
46            block("public static byte parse(String str, byte fallback)") {
47                block("try") {
48                    nl("return Byte.parseByte(str);")
49                }
50                block("catch (NumberFormatException e)") {
51                    nl("return fallback;")
52                }
53            }
54            block("public static short parse(String str, short fallback)") {
55                block("try") {
56                    nl("return Short.parseShort(str);")
57                }
58                block("catch (NumberFormatException e)") {
59                    nl("return fallback;")
60                }
61            }
62            block("public static int parse(String str, int fallback)") {
63                block("try") {
64                    nl("return Integer.parseInt(str);")
65                }
66                block("catch (NumberFormatException e)") {
67                    nl("return fallback;")
68                }
69            }
70            block("public static long parse(String str, long fallback)") {
71                block("try") {
72                    nl("return Long.parseLong(str);")
73                }
74                block("catch (NumberFormatException e)") {
75                    nl("return fallback;")
76                }
77            }
78            block("public static float parse(String str, float fallback)") {
79                block("try") {
80                    nl("return Float.parseFloat(str);")
81                }
82                block("catch (NumberFormatException e)") {
83                    nl("return fallback;")
84                }
85            }
86            block("public static double parse(String str, double fallback)") {
87                block("try") {
88                    nl("return Double.parseDouble(str);")
89                }
90                block("catch (NumberFormatException e)") {
91                    nl("return fallback;")
92                }
93            }
94            block("public static char parse(String str, char fallback)") {
95                block ("if (str == null || str.isEmpty())") {
96                    nl("return fallback;")
97                }
98                nl("return str.charAt(0);")
99            }
100        }
101   }
102}