1
- package io .asfjava .ui .schema ;
1
+ package io .asfjava .ui .core . schema ;
2
2
3
3
import java .io .Serializable ;
4
+ import java .lang .annotation .Annotation ;
4
5
import java .lang .reflect .Field ;
5
6
import java .util .Arrays ;
7
+ import java .util .List ;
6
8
7
9
import com .fasterxml .jackson .databind .JsonMappingException ;
10
+ import com .fasterxml .jackson .databind .JsonNode ;
8
11
import com .fasterxml .jackson .databind .ObjectMapper ;
9
12
import com .fasterxml .jackson .databind .node .ArrayNode ;
10
13
import com .fasterxml .jackson .databind .node .ObjectNode ;
11
14
import com .fasterxml .jackson .module .jsonSchema .JsonSchema ;
12
15
import com .fasterxml .jackson .module .jsonSchema .JsonSchemaGenerator ;
13
16
14
- import io .asfjava .ui .form .TextField ;
15
- import io .asfjava .ui .schema .dto .UiForm ;
17
+ import io .asfjava .ui .core .FormDefinitionGenerator ;
18
+ import io .asfjava .ui .core .FormDefinitionGeneratorFactory ;
19
+ import io .asfjava .ui .dto .UiForm ;
16
20
17
21
public final class UiFormSchemaGenerator {
18
22
@@ -25,45 +29,25 @@ public UiForm generate(Class<? extends Serializable> formDto) throws JsonMapping
25
29
26
30
ArrayNode formDefinition = mapper .createArrayNode ();
27
31
28
- Arrays .asList (formDto .getDeclaredFields ()).stream (). filter ( field -> field . isAnnotationPresent ( TextField . class ))
32
+ Arrays .asList (formDto .getDeclaredFields ()).stream ()
29
33
.forEach (field -> buildFormDefinition (mapper , formDefinition , field ));
30
34
31
35
return new UiForm (schema , formDefinition );
32
36
}
33
37
34
38
private void buildFormDefinition (ObjectMapper mapper , ArrayNode formDefinition , Field field ) {
35
- ObjectNode fieldFormDefinition = mapper .createObjectNode ();
36
- TextField annotation = field .getAnnotation (TextField .class );
37
-
38
- fieldFormDefinition .put ("key" , field .getName ());
39
- // fieldFormDefinition.put("type", annotation.value().getLayout());
40
-
41
- String description = annotation .description ();
42
- if (!description .isEmpty ()) {
43
- fieldFormDefinition .put ("description" , description );
44
- }
45
-
46
- String placeHolder = annotation .placeHolder ();
47
- if (!placeHolder .isEmpty ()) {
48
- fieldFormDefinition .put ("placeholder" , placeHolder );
49
- }
50
-
51
- boolean noTitle = annotation .noTitle ();
52
- if (noTitle ) {
53
- fieldFormDefinition .put ("notitle" , noTitle );
54
- }
55
-
56
- String validationMessage = annotation .validationMessage ();
57
- if (!validationMessage .isEmpty ()) {
58
- fieldFormDefinition .put ("validationMessage" , validationMessage );
39
+ List <Annotation > annoations = Arrays .asList (field .getAnnotations ());
40
+ for (Annotation annotation : annoations ) {
41
+ formDefinition .add (buildFieldDefinition (field , annotation , mapper ));
59
42
}
43
+ }
60
44
61
- boolean readOnly = annotation .readOnly ();
62
- if (readOnly ) {
63
- fieldFormDefinition .put ("readonly" , readOnly );
64
- }
45
+ private JsonNode buildFieldDefinition (Field field , Annotation annotation , ObjectMapper mapper ) {
46
+ ObjectNode fieldFormDefinition = mapper .createObjectNode ();
47
+ FormDefinitionGenerator generator = FormDefinitionGeneratorFactory .getInstance ().getGenerator (annotation );
48
+ generator .generate (fieldFormDefinition , field );
49
+ return fieldFormDefinition ;
65
50
66
- formDefinition .add (fieldFormDefinition );
67
51
}
68
52
69
53
public static UiFormSchemaGenerator get () {
0 commit comments