1
2
3
4
5
6 package dev.metaschema.databind.codegen.typeinfo;
7
8 import com.squareup.javapoet.AnnotationSpec;
9
10 import dev.metaschema.core.datatype.markup.MarkupLine;
11 import dev.metaschema.core.datatype.markup.MarkupMultiline;
12 import dev.metaschema.core.model.INamedModelInstance;
13 import edu.umd.cs.findbugs.annotations.NonNull;
14
15 public final class TypeInfoUtils {
16 private TypeInfoUtils() {
17
18 }
19
20
21
22
23
24
25
26
27
28
29
30
31
32 @NonNull
33 public static String toLowerFirstChar(@NonNull String text) {
34 if (text.isEmpty() || Character.isLowerCase(text.charAt(0))) {
35 return text;
36 }
37 return Character.toLowerCase(text.charAt(0)) + text.substring(1);
38 }
39
40
41
42
43
44
45
46
47
48
49
50
51 public static void buildCommonBindingAnnotationValues(
52 @NonNull INamedModelInstance instance,
53 @NonNull AnnotationSpec.Builder annotation) {
54
55 String formalName = instance.getEffectiveFormalName();
56 if (formalName != null) {
57 annotation.addMember("formalName", "$S", formalName);
58 }
59
60 MarkupLine description = instance.getEffectiveDescription();
61 if (description != null) {
62 annotation.addMember("description", "$S", description.toMarkdown());
63 }
64
65 annotation.addMember("useName", "$S", instance.getEffectiveName());
66
67 Integer index = instance.getEffectiveIndex();
68 if (index != null) {
69 annotation.addMember("useIndex", "$L", index);
70 }
71
72
73
74 MarkupMultiline remarks = instance.getRemarks();
75 if (remarks != null) {
76 annotation.addMember("remarks", "$S", remarks.toMarkdown());
77 }
78 }
79 }