Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit 4145562

Browse files
Merge pull request #77 from almirus/master
Add $ref support for ComboBox + some optimization
2 parents 2959ba2 + 1a9a127 commit 4145562

File tree

4 files changed

+51
-63
lines changed

4 files changed

+51
-63
lines changed

‎src/main/java/io/asfjava/ui/core/form/ComboBox.java

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,9 @@
3838
boolean required() default false;
3939

4040
int size() default 1;
41-
41+
42+
String refURL() default "";
43+
4244
Class<? extends ValuesContainer> titleMap() default ValuesContainer.class;
4345

4446
}

‎src/main/java/io/asfjava/ui/core/generators/CheckBoxGenerator.java

Lines changed: 3 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@
1212
import io.asfjava.ui.core.form.ValuesContainer;
1313
import io.asfjava.ui.core.logging.ASFUILogger;
1414

15-
public class CheckBoxGenerator implements FormDefinitionGenerator{
15+
public class CheckBoxGenerator extendsListGeneratorimplements FormDefinitionGenerator{
1616

1717
@Override
1818
public void generate(ObjectNode fieldFormDefinition, Field field) {
@@ -25,39 +25,11 @@ public void generate(ObjectNode fieldFormDefinition, Field field) {
2525
ArrayNode titlesMap = checkBoxMapper.createArrayNode();
2626
if (annotation.values().length > 0) {
2727
Arrays.stream(annotation.values()).forEach(value -> buildValueDefinition(checkBoxMapper, titlesMap, value));
28-
2928
fieldFormDefinition.set("titleMap", titlesMap);
3029
} else if (!annotation.titleMap().equals(ValuesContainer.class)) {
31-
32-
try {
33-
Map<String, String> map = (annotation.titleMap()).newInstance().getValues();
34-
map.entrySet().stream().forEach(mapEntry -> {
35-
ObjectNode entryNode = checkBoxMapper.createObjectNode();
36-
entryNode.put("name", mapEntry.getKey());
37-
entryNode.putPOJO("value", mapEntry.getValue());
38-
titlesMap.add(entryNode);
39-
});
40-
fieldFormDefinition.set("titleMap", titlesMap);
41-
} catch (InstantiationException | IllegalAccessException e) {
42-
ASFUILogger.getLogger().error(e.getMessage());
43-
throw new RuntimeException(e);
44-
}
45-
}
46-
}
47-
48-
private void buildValueDefinition(ObjectMapper checkBoxMapper, ArrayNode titlesMap, String value) {
49-
ObjectNode entry = checkBoxMapper.createObjectNode();
50-
String upperCasedValue = value.toUpperCase();
51-
String lowerCasedValue = value.toLowerCase();
52-
if (value.equals(upperCasedValue)) {
53-
entry.put("name", value.toLowerCase());
54-
} else if (value.equals(lowerCasedValue)) {
55-
entry.put("name", value.replace(value.substring(0, 1), value.substring(0, 1).toUpperCase()));
56-
} else {
57-
entry.put("name", value);
30+
buildValues(checkBoxMapper, titlesMap, annotation.titleMap());
31+
fieldFormDefinition.set("titleMap", titlesMap);
5832
}
59-
entry.put("value", value);
60-
titlesMap.add(entry);
6133
}
6234

6335
@Override

‎src/main/java/io/asfjava/ui/core/generators/ComboBoxGenerator.java

Lines changed: 6 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@
1212
import io.asfjava.ui.core.form.ValuesContainer;
1313
import io.asfjava.ui.core.logging.ASFUILogger;
1414

15-
public class ComboBoxGenerator implements FormDefinitionGenerator {
15+
public class ComboBoxGenerator extendsListGeneratorimplements FormDefinitionGenerator {
1616

1717
@Override
1818
public void generate(ObjectNode fieldFormDefinition, Field field) {
@@ -24,47 +24,22 @@ public void generate(ObjectNode fieldFormDefinition, Field field) {
2424
fieldFormDefinition.put("multiple", annotation.multiple());
2525
fieldFormDefinition.put("required", annotation.required());
2626
fieldFormDefinition.put("size", annotation.size());
27+
if (!annotation.refURL().isEmpty()) {
28+
fieldFormDefinition.put("$ref", annotation.refURL());
29+
}
2730

2831
ObjectMapper comboMapper = new ObjectMapper();
2932
ArrayNode titlesMap = comboMapper.createArrayNode();
3033
if (annotation.values().length != 0) {
3134
Arrays.stream(annotation.values()).forEach(value -> buildValueDefinition(comboMapper, titlesMap, value));
32-
3335
fieldFormDefinition.set("titleMap", titlesMap);
3436
} else if (!annotation.titleMap().equals(ValuesContainer.class)) {
35-
36-
try {
37-
Map<String, String> map = (annotation.titleMap()).newInstance().getValues();
38-
map.entrySet().stream().forEach(mapEntry -> {
39-
ObjectNode entryNode = comboMapper.createObjectNode();
40-
entryNode.put("name", mapEntry.getKey());
41-
entryNode.putPOJO("value", mapEntry.getValue());
42-
titlesMap.add(entryNode);
43-
});
44-
fieldFormDefinition.set("titleMap", titlesMap);
45-
} catch (InstantiationException | IllegalAccessException e) {
46-
ASFUILogger.getLogger().error(e.getMessage());
47-
throw new RuntimeException(e);
48-
}
37+
buildValues(comboMapper, titlesMap, annotation.titleMap());
38+
fieldFormDefinition.set("titleMap", titlesMap);
4939
}
5040

5141
}
5242

53-
private void buildValueDefinition(ObjectMapper comboMapper, ArrayNode titlesMap, String value) {
54-
ObjectNode entry = comboMapper.createObjectNode();
55-
String upperCasedValue = value.toUpperCase();
56-
String lowerCasedValue = value.toLowerCase();
57-
if (value.equals(upperCasedValue)) {
58-
entry.put("name", value.toLowerCase());
59-
} else if (value.equals(lowerCasedValue)) {
60-
entry.put("name", value.replace(value.substring(0, 1), value.substring(0, 1).toUpperCase()));
61-
} else {
62-
entry.put("name", value);
63-
}
64-
entry.put("value", value);
65-
titlesMap.add(entry);
66-
}
67-
6843
@Override
6944
public String getAnnotation() {
7045
return ComboBox.class.getName();
Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
1+
package io.asfjava.ui.core.generators;
2+
3+
import com.fasterxml.jackson.databind.ObjectMapper;
4+
import com.fasterxml.jackson.databind.node.ArrayNode;
5+
import com.fasterxml.jackson.databind.node.ObjectNode;
6+
import io.asfjava.ui.core.form.ValuesContainer;
7+
import io.asfjava.ui.core.logging.ASFUILogger;
8+
9+
public class ListGenerator {
10+
11+
protected void buildValueDefinition(ObjectMapper listMapper, ArrayNode titlesMap, String value) {
12+
ObjectNode entry = listMapper.createObjectNode();
13+
String upperCasedValue = value.toUpperCase();
14+
String lowerCasedValue = value.toLowerCase();
15+
if (value.equals(upperCasedValue)) {
16+
entry.put("name", value.toLowerCase());
17+
} else if (value.equals(lowerCasedValue)) {
18+
entry.put("name", value.replace(value.substring(0, 1), value.substring(0, 1).toUpperCase()));
19+
} else {
20+
entry.put("name", value);
21+
}
22+
entry.put("value", value);
23+
titlesMap.add(entry);
24+
}
25+
26+
protected void buildValues(ObjectMapper listMapper, ArrayNode titlesMap, Class<? extends ValuesContainer> valuesContainer) {
27+
try {
28+
valuesContainer.newInstance().getValues().forEach((key, value) -> {
29+
ObjectNode entryNode = listMapper.createObjectNode();
30+
entryNode.put("name", key);
31+
entryNode.putPOJO("value", value);
32+
titlesMap.add(entryNode);
33+
});
34+
} catch (InstantiationException | IllegalAccessException e) {
35+
ASFUILogger.getLogger().error(e.getMessage());
36+
throw new RuntimeException(e);
37+
}
38+
}
39+
}

0 commit comments

Comments
(0)

AltStyle によって変換されたページ (->オリジナル) /