1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 package org.openehealth.ipf.commons.ihe.xds.core.transform.requests.query;
17
18 import org.openehealth.ipf.commons.ihe.xds.core.ebxml.EbXMLAdhocQueryRequest;
19 import org.openehealth.ipf.commons.ihe.xds.core.ebxml.EbXMLSlot;
20 import org.openehealth.ipf.commons.ihe.xds.core.requests.query.QueryList;
21 import org.openehealth.ipf.commons.ihe.xds.core.requests.query.StoredQuery;
22
23 import org.openehealth.ipf.commons.ihe.xds.core.transform.requests.QueryParameter;
24
25 import java.util.Map;
26
27
28
29
30
31 abstract class AbstractStoredQueryTransformer<T extends StoredQuery> {
32
33
34
35
36
37
38
39
40
41
42 public void toEbXML(T query, EbXMLAdhocQueryRequest ebXML) {
43 if (query == null || ebXML == null) {
44 return;
45 }
46
47 ebXML.setId(query.getType().getId());
48 ebXML.setHome(query.getHomeCommunityId());
49
50 QuerySlotHelper slotHelper = new QuerySlotHelper(ebXML);
51 for (Map.Entry<String, QueryList<String>> entry : query.getExtraParameters().entrySet()) {
52 slotHelper.fromStringList(entry.getKey(), entry.getValue());
53 }
54 }
55
56
57
58
59
60
61
62
63
64
65
66 public void fromEbXML(T query, EbXMLAdhocQueryRequest ebXML) {
67 if (query == null || ebXML == null) {
68 return;
69 }
70
71 query.setHomeCommunityId(ebXML.getHome());
72
73 QuerySlotHelper slotHelper = new QuerySlotHelper(ebXML);
74 for (EbXMLSlot slot : ebXML.getSlots()) {
75 String slotName = slot.getName();
76 if ((QueryParameter.valueOfSlotName(slotName) == null) && (! query.getExtraParameters().containsKey(slotName))) {
77 QueryList<String> queryList = slotHelper.toStringQueryList(slotName);
78 if (queryList != null) {
79 query.getExtraParameters().put(slotName, queryList);
80 }
81 }
82 }
83 }
84 }