1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 package org.openehealth.ipf.commons.ihe.xds.core.ebxml.ebxml30;
17
18 import lombok.experimental.Delegate;
19 import org.openehealth.ipf.commons.ihe.xds.core.ebxml.*;
20 import org.openehealth.ipf.commons.ihe.xds.core.metadata.LocalizedString;
21 import org.openehealth.ipf.commons.ihe.xds.core.metadata.Version;
22 import org.openehealth.ipf.commons.ihe.xds.core.stub.ebrs30.rim.*;
23
24 import java.util.List;
25 import java.util.UUID;
26 import java.util.stream.Collectors;
27
28 import static org.apache.commons.lang3.Validate.notNull;
29
30
31
32
33
34
35
36 public abstract class EbXMLRegistryObject30<E extends RegistryObjectType> implements EbXMLRegistryObject {
37 private final E registryEntry;
38 private final EbXMLObjectLibrary objectLibrary;
39
40
41
42
43
44
45
46
47 protected EbXMLRegistryObject30(E registryEntry, EbXMLObjectLibrary objectLibrary) {
48 notNull(registryEntry, "registryEntry cannot be null");
49 notNull(objectLibrary, "objectLibrary cannot be null");
50 this.registryEntry = registryEntry;
51 this.objectLibrary = objectLibrary;
52 }
53
54
55
56
57 protected EbXMLObjectLibrary getObjectLibrary() {
58 return objectLibrary;
59 }
60
61 @Override
62 public void addClassification(EbXMLClassification classification, String scheme) {
63 notNull(scheme, "scheme cannot be null");
64
65 if (classification != null) {
66 classification.setClassificationScheme(scheme);
67 classification.setClassifiedObject(registryEntry.getId());
68 classification.assignUniqueId();
69 List<ClassificationType> classifications = registryEntry.getClassification();
70 classifications.add(((EbXMLClassification30)classification).getInternal());
71 }
72 }
73
74 @Override
75 public void addExternalIdentifier(String value, String scheme, String name) {
76 notNull(name, "name cannot be null");
77 notNull(scheme, "scheme cannot be null");
78
79 if (value != null) {
80 ExternalIdentifierType identifier = EbXMLFactory30.RIM_FACTORY.createExternalIdentifierType();
81 EbXMLExternalIdentifier externalIdentifier = new EbXMLExternalIdentifier30(identifier);
82
83 externalIdentifier.setValue(value);
84 externalIdentifier.setIdentificationScheme(scheme);
85 externalIdentifier.setRegistryObject(registryEntry.getId());
86 externalIdentifier.setId("urn:uuid:" + UUID.randomUUID().toString());
87
88 LocalizedString localized = new LocalizedString(name, null, null);
89 externalIdentifier.setName(new EbXMLInternationalString30(localized));
90
91 List<ExternalIdentifierType> externalIdentifiers = registryEntry.getExternalIdentifier();
92 externalIdentifiers.add(identifier);
93 }
94 }
95
96 @Override
97 public List<EbXMLClassification> getClassifications() {
98 List<ClassificationType> classifications = registryEntry.getClassification();
99 return classifications.stream()
100 .map(EbXMLClassification30::new)
101 .collect(Collectors.toList());
102 }
103
104 @Override
105 public List<EbXMLClassification> getClassifications(String scheme) {
106 notNull(scheme, "scheme cannot be null");
107
108 return registryEntry.getClassification().stream()
109 .filter(classification -> scheme.equals(classification.getClassificationScheme()))
110 .map(EbXMLClassification30::new)
111 .collect(Collectors.toList());
112 }
113
114 @Override
115 public LocalizedString getDescription() {
116 InternationalStringType description = registryEntry.getDescription();
117 EbXMLInternationalString encapsulated = new EbXMLInternationalString30(description);
118 return encapsulated.getSingleLocalizedString();
119 }
120
121 @Override
122 public String getExternalIdentifierValue(String scheme) {
123 for (ExternalIdentifierType identifier : registryEntry.getExternalIdentifier()) {
124 if (scheme.equals(identifier.getIdentificationScheme())) {
125 return identifier.getValue();
126 }
127 }
128
129 return null;
130 }
131
132 @Override
133 public List<EbXMLExternalIdentifier> getExternalIdentifiers() {
134 List<ExternalIdentifierType> externalIdentifiers = registryEntry.getExternalIdentifier();
135 return externalIdentifiers.stream()
136 .map(EbXMLExternalIdentifier30::new)
137 .collect(Collectors.toList());
138 }
139
140 @Override
141 public String getId() {
142 return registryEntry.getId();
143 }
144
145 @Override
146 public void setId(String id) {
147 registryEntry.setId(id);
148 }
149
150 @Override
151 public String getLid() {
152 return registryEntry.getLid();
153 }
154
155 @Override
156 public void setLid(String lid) {
157 registryEntry.setLid(lid);
158 }
159
160 @Override
161 public Version getVersionInfo() {
162 VersionInfoType versionInfo = registryEntry.getVersionInfo();
163 if (versionInfo == null) {
164 return null;
165 }
166
167 return new Version(versionInfo.getVersionName(), versionInfo.getComment());
168 }
169
170 @Override
171 public void setVersionInfo(Version version) {
172 VersionInfoType versionInfo = null;
173 if (version != null) {
174 versionInfo = EbXMLFactory30.RIM_FACTORY.createVersionInfoType();
175 versionInfo.setVersionName(version.getVersionName());
176 versionInfo.setComment(version.getComment());
177 }
178 registryEntry.setVersionInfo(versionInfo);
179 }
180
181 @Override
182 public LocalizedString getName() {
183 InternationalStringType name = registryEntry.getName();
184 EbXMLInternationalString encapsulated = new EbXMLInternationalString30(name);
185 return encapsulated.getSingleLocalizedString();
186 }
187
188 @Override
189 public String getObjectType() {
190 return registryEntry.getObjectType();
191 }
192
193 @Override
194 public EbXMLClassification getSingleClassification(String scheme) {
195 List<EbXMLClassification> filtered = getClassifications(scheme);
196 if (filtered.size() == 0) {
197 return null;
198 }
199
200 return filtered.get(0);
201 }
202
203 @Override
204 public void setDescription(LocalizedString description) {
205 EbXMLInternationalString30 encapsulated = new EbXMLInternationalString30(description);
206 registryEntry.setDescription(encapsulated.getInternal());
207 }
208
209 @Override
210 public void setName(LocalizedString name) {
211 EbXMLInternationalString30 encapsulated = new EbXMLInternationalString30(name);
212 registryEntry.setName(encapsulated.getInternal());
213 }
214
215 @Override
216 public void setObjectType(String objectType) {
217 registryEntry.setObjectType(objectType);
218 }
219
220 @Override
221 public String getHome() {
222 return registryEntry.getHome();
223 }
224
225 @Override
226 public void setHome(String home) {
227 registryEntry.setHome(home);
228 }
229
230 @Override
231 public E getInternal() {
232 return registryEntry;
233 }
234
235
236
237
238
239 @Delegate
240 private EbXMLSlotList30 getSlotList() {
241 return new EbXMLSlotList30(registryEntry.getSlot());
242 }
243 }