Skip to content

Commit a211e76

Browse files
committed
LUI-207 - ConceptFieldGenDataTypeHandler should support handler configuration that allows customizing widget (#229)
1 parent 1ca6b5b commit a211e76

File tree

1 file changed

+33
-6
lines changed

1 file changed

+33
-6
lines changed

omod/src/main/java/org/openmrs/web/attribute/handler/ConceptFieldGenDatatypeHandler.java

Lines changed: 33 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -9,19 +9,28 @@
99
*/
1010
package org.openmrs.web.attribute.handler;
1111

12-
import java.util.Map;
13-
12+
import org.apache.commons.lang.StringUtils;
13+
import org.codehaus.jackson.map.ObjectMapper;
1414
import org.openmrs.Concept;
15+
import org.openmrs.api.context.Context;
1516
import org.openmrs.customdatatype.CustomDatatype;
1617
import org.openmrs.customdatatype.datatype.ConceptDatatype;
1718
import org.springframework.stereotype.Component;
1819

20+
import java.util.HashMap;
21+
import java.util.Map;
22+
1923
/**
2024
* Handler for the Concept custom datatype
2125
*/
2226
@Component
2327
public class ConceptFieldGenDatatypeHandler extends SerializingFieldGenDatatypeHandler<ConceptDatatype, Concept> {
24-
28+
29+
public static final String SHOW_ANSWERS = "showAnswers";
30+
31+
private ObjectMapper objectMapper = new ObjectMapper();
32+
private Map<String, Object> widgetConfiguration = new HashMap<>();
33+
2534
/**
2635
* @see SerializingFieldGenDatatypeHandler#getWidgetName()
2736
*/
@@ -51,14 +60,32 @@ public CustomDatatype.Summary toHtmlSummary(CustomDatatype datatype, String valu
5160
*/
5261
@Override
5362
public Map<String, Object> getWidgetConfiguration() {
54-
return null;
63+
return widgetConfiguration;
5564
}
5665

5766
/**
5867
* @see SerializingFieldGenDatatypeHandler#setHandlerConfiguration(String)
5968
*/
6069
@Override
61-
public void setHandlerConfiguration(String s) {
62-
70+
public void setHandlerConfiguration(String handlerConfig) {
71+
widgetConfiguration = new HashMap<>();
72+
if (StringUtils.isNotBlank(handlerConfig)) {
73+
try {
74+
widgetConfiguration.putAll(objectMapper.readValue(handlerConfig, Map.class));
75+
}
76+
catch (Exception e) {
77+
throw new IllegalArgumentException("Unable to parse widget configuration", e);
78+
}
79+
Object showAnswersRef = widgetConfiguration.remove(SHOW_ANSWERS);
80+
if (showAnswersRef != null) {
81+
Concept concept = Context.getConceptService().getConceptByUuid(showAnswersRef.toString());
82+
if (concept != null) {
83+
widgetConfiguration.put(SHOW_ANSWERS, concept.getConceptId());
84+
}
85+
else {
86+
widgetConfiguration.put(SHOW_ANSWERS, Integer.parseInt(showAnswersRef.toString()));
87+
}
88+
}
89+
}
6390
}
6491
}

0 commit comments

Comments
 (0)