|
15 | 15 | import java.util.function.Predicate;
|
16 | 16 | import java.util.stream.Collectors;
|
17 | 17 |
|
| 18 | +import com.fasterxml.jackson.annotation.JsonIgnore; |
18 | 19 | import com.fasterxml.jackson.databind.JsonMappingException;
|
19 | 20 | import com.fasterxml.jackson.databind.JsonNode;
|
20 | 21 | import com.fasterxml.jackson.databind.ObjectMapper;
|
|
26 | 27 | import io.asfjava.ui.core.FormDefinitionGeneratorFactory;
|
27 | 28 | import io.asfjava.ui.core.form.Action;
|
28 | 29 | import io.asfjava.ui.core.form.ActionsGroup;
|
| 30 | +import io.asfjava.ui.core.form.DisplayAllFields; |
29 | 31 | import io.asfjava.ui.core.form.FieldSet;
|
30 | 32 | import io.asfjava.ui.core.form.Index;
|
31 | 33 | import io.asfjava.ui.core.form.Tab;
|
@@ -62,11 +64,23 @@ public UiForm generate(Class<? extends Serializable> formDto) throws JsonMapping
|
62 | 64 | tabbedFields.ifPresent(formDefinition::add);
|
63 | 65 | sortedNodes.entrySet().stream().forEach(nodesElement -> formDefinition.add(nodesElement.getValue()));
|
64 | 66 |
|
| 67 | + if (formDto.getDeclaredAnnotation(DisplayAllFields.class) != null) { |
| 68 | + // check if fields is not handled and haven't jackson json ignore annotation |
| 69 | + List<Field> unannotatedFiedls = Arrays.stream(declaredFields) |
| 70 | + .filter(field -> !nodes.containsKey(field) && !field.isAnnotationPresent(JsonIgnore.class)) |
| 71 | + .collect(Collectors.toList()); |
| 72 | + handleUnAnnotatedFields(formDefinition, unannotatedFiedls); |
| 73 | + } |
| 74 | + |
65 | 75 | handleActionsAnnotation(mapper, formDto, formDefinition);
|
66 | 76 |
|
67 | 77 | return new UiForm(schema, formDefinition);
|
68 | 78 | }
|
69 | 79 |
|
| 80 | + private void handleUnAnnotatedFields(ArrayNode formDefinition, List<Field> unannotatedFiedls) { |
| 81 | + unannotatedFiedls.stream().forEach(field -> formDefinition.add(field.getName())); |
| 82 | + } |
| 83 | + |
70 | 84 | private void handleActionsAnnotation(ObjectMapper mapper, Class<? extends Serializable> formDto,
|
71 | 85 | ArrayNode formDefinition) {
|
72 | 86 | ObjectNode groupedActionsNode = mapper.createObjectNode();
|
|
0 commit comments