• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

openmrs / openmrs-core / 16357938490

17 Jul 2025 11:06PM UTC coverage: 65.244% (-0.1%) from 65.359%
16357938490

push

github

web-flow
TRUNK-6318: Add S3 Storage Service (#5110)

111 of 156 new or added lines in 5 files covered. (71.15%)

48 existing lines in 8 files now uncovered.

23568 of 36123 relevant lines covered (65.24%)

0.65 hits per line

Source File
Press 'n' to go to next uncovered line, 'b' for previous

97.56
/api/src/main/java/org/openmrs/api/impl/ProviderServiceImpl.java
1
/**
2
 * This Source Code Form is subject to the terms of the Mozilla Public License,
3
 * v. 2.0. If a copy of the MPL was not distributed with this file, You can
4
 * obtain one at http://mozilla.org/MPL/2.0/. OpenMRS is also distributed under
5
 * the terms of the Healthcare Disclaimer located at http://openmrs.org/license.
6
 *
7
 * Copyright (C) OpenMRS Inc. OpenMRS is a registered trademark and the OpenMRS
8
 * graphic logo is a trademark of OpenMRS Inc.
9
 */
10
package org.openmrs.api.impl;
11

12
import java.util.Collection;
13
import java.util.List;
14
import java.util.Map;
15

16
import org.openmrs.Person;
17
import org.openmrs.Provider;
18
import org.openmrs.ProviderAttribute;
19
import org.openmrs.ProviderAttributeType;
20
import org.openmrs.ProviderRole;
21
import org.openmrs.api.APIException;
22
import org.openmrs.api.ProviderService;
23
import org.openmrs.api.context.Context;
24
import org.openmrs.api.db.ProviderDAO;
25
import org.openmrs.customdatatype.CustomDatatypeUtil;
26
import org.openmrs.util.OpenmrsConstants;
27
import org.openmrs.util.OpenmrsUtil;
28
import org.springframework.transaction.annotation.Transactional;
29

30
/**
31
 * Default implementation of the {@link ProviderService}. This class should not be used on its own.
32
 * The current OpenMRS implementation should be fetched from the Context.
33
 * 
34
 * @since 1.9
35
 */
36
@Transactional
37
public class ProviderServiceImpl extends BaseOpenmrsService implements ProviderService {
1✔
38
        
39
        private ProviderDAO dao;
40
        
41
        /**
42
         * Sets the data access object for Concepts. The dao is used for saving and getting concepts
43
         * to/from the database
44
         * 
45
         * @param dao The data access object to use
46
         */
47
        public void setProviderDAO(ProviderDAO dao) {
48
                this.dao = dao;
1✔
49
        }
1✔
50
        
51
        /**
52
         * @see org.openmrs.api.ProviderService#getAllProviders()
53
         */
54
        @Override
55
        @Transactional(readOnly = true)
56
        public List<Provider> getAllProviders() {
57
                return Context.getProviderService().getAllProviders(true);
1✔
58
        }
59
        
60
        /**
61
         * @see org.openmrs.api.ProviderService#getAllProviders(boolean)
62
         */
63
        @Override
64
        @Transactional(readOnly = true)
65
        public List<Provider> getAllProviders(boolean includeRetired) {
66
                return dao.getAllProviders(includeRetired);
1✔
67
        }
68
        
69
        /**
70
         * @see org.openmrs.api.ProviderService#retireProvider(org.openmrs.Provider, java.lang.String)
71
         */
72
        @Override
73
        public void retireProvider(Provider provider, String reason) {
74
                dao.saveProvider(provider);
1✔
75
        }
1✔
76
        
77
        /**
78
         * @see org.openmrs.api.ProviderService#unretireProvider(org.openmrs.Provider)
79
         */
80
        @Override
81
        public Provider unretireProvider(Provider provider) {
82
                return Context.getProviderService().saveProvider(provider);
1✔
83
        }
84
        
85
        /**
86
         * @see org.openmrs.api.ProviderService#purgeProvider(org.openmrs.Provider)
87
         */
88
        @Override
89
        public void purgeProvider(Provider provider) {
90
                dao.deleteProvider(provider);
1✔
91
        }
1✔
92
        
93
        /**
94
         * @see org.openmrs.api.ProviderService#getProvider(java.lang.Integer)
95
         */
96
        @Override
97
        @Transactional(readOnly = true)
98
        public Provider getProvider(Integer providerId) {
99
                return dao.getProvider(providerId);
1✔
100
        }
101
        
102
        /**
103
         * @see org.openmrs.api.ProviderService#saveProvider(org.openmrs.Provider)
104
         */
105
        @Override
106
        public Provider saveProvider(Provider provider) {
107
                CustomDatatypeUtil.saveAttributesIfNecessary(provider);
1✔
108
                return dao.saveProvider(provider);
1✔
109
        }
110
        
111
        /**
112
         * @see org.openmrs.api.ProviderService#getProviderByUuid(java.lang.String)
113
         */
114
        @Override
115
        @Transactional(readOnly = true)
116
        public Provider getProviderByUuid(String uuid) {
117
                return dao.getProviderByUuid(uuid);
1✔
118
        }
119
        
120
        /**
121
         * @see org.openmrs.api.ProviderService#getProvidersByPerson(org.openmrs.Person, boolean )
122
         */
123
        @Override
124
        @Transactional(readOnly = true)
125
        public Collection<Provider> getProvidersByPerson(Person person, boolean includeRetired) {
126
                return dao.getProvidersByPerson(person, includeRetired);
1✔
127
        }
128
        
129
        /**
130
         * @see org.openmrs.api.ProviderService#getProvidersByPerson(org.openmrs.Person)
131
         */
132
        @Override
133
        @Transactional(readOnly = true)
134
        public Collection<Provider> getProvidersByPerson(Person person) {
135
                if (person == null) {
1✔
136
                        throw new IllegalArgumentException("Person must not be null");
1✔
137
                }
138
                return Context.getProviderService().getProvidersByPerson(person, true);
1✔
139
        }
140
        
141
        /**
142
         * @see org.openmrs.api.ProviderService#getCountOfProviders(java.lang.String)
143
         */
144
        @Override
145
        @Transactional(readOnly = true)
146
        public Integer getCountOfProviders(String query) {
147
                return Context.getProviderService().getCountOfProviders(query, false);
1✔
148
        }
149
        
150
        /**
151
         * @see org.openmrs.api.ProviderService#getCountOfProviders(java.lang.String, boolean)
152
         */
153
        @Override
154
        public Integer getCountOfProviders(String query, boolean includeRetired) {
155
                return OpenmrsUtil.convertToInteger(dao.getCountOfProviders(query, includeRetired));
1✔
156
        }
157
        
158
        /**
159
         * @see org.openmrs.api.ProviderService#getProviders(String, Integer, Integer, java.util.Map,
160
         *      boolean)
161
         */
162
        @Override
163
        @Transactional(readOnly = true)
164
        public List<Provider> getProviders(String query, Integer start, Integer length,
165
                Map<ProviderAttributeType, Object> attributeValues, boolean includeRetired) {
166
                Map<ProviderAttributeType, String> serializedAttributeValues = CustomDatatypeUtil
1✔
167
                        .getValueReferences(attributeValues);
1✔
168
                return dao.getProviders(query, serializedAttributeValues, start, length, includeRetired);
1✔
169
        }
170
        
171
        /**
172
         * @see org.openmrs.api.ProviderService#getProviders(String, Integer, Integer, java.util.Map)
173
         */
174
        @Override
175
        @Transactional(readOnly = true)
176
        public List<Provider> getProviders(String query, Integer start, Integer length,
177
                Map<ProviderAttributeType, Object> attributeValues) {
178
                return Context.getProviderService().getProviders(query, start, length, attributeValues, true);
1✔
179
        }
180
        
181
        /**
182
         * @see org.openmrs.api.ProviderService#getAllProviderAttributeTypes()
183
         */
184
        @Override
185
        @Transactional(readOnly = true)
186
        public List<ProviderAttributeType> getAllProviderAttributeTypes() {
187
                return dao.getAllProviderAttributeTypes(true);
1✔
188
        }
189
        
190
        /**
191
         * @see org.openmrs.api.ProviderService#getAllProviderAttributeTypes(boolean)
192
         */
193
        @Override
194
        @Transactional(readOnly = true)
195
        public List<ProviderAttributeType> getAllProviderAttributeTypes(boolean includeRetired) {
196
                return dao.getAllProviderAttributeTypes(includeRetired);
1✔
197
        }
198
        
199
        /**
200
         * @see org.openmrs.api.ProviderService#getProviderAttributeType(java.lang.Integer)
201
         */
202
        @Override
203
        @Transactional(readOnly = true)
204
        public ProviderAttributeType getProviderAttributeType(Integer providerAttributeTypeId) {
205
                return dao.getProviderAttributeType(providerAttributeTypeId);
1✔
206
        }
207
        
208
        /**
209
         * @see org.openmrs.api.ProviderService#getProviderAttributeTypeByUuid(java.lang.String)
210
         */
211
        @Override
212
        @Transactional(readOnly = true)
213
        public ProviderAttributeType getProviderAttributeTypeByUuid(String uuid) {
214
                return dao.getProviderAttributeTypeByUuid(uuid);
1✔
215
        }
216
        
217
        /**
218
         * @see org.openmrs.api.ProviderService#getProviderAttributeTypeByName(String)
219
         */
220
        @Override
221
        @Transactional(readOnly = true)
222
        public ProviderAttributeType getProviderAttributeTypeByName(String name) {
223
                return dao.getProviderAttributeTypeByName(name);
1✔
224
        }
225
        
226
        /**
227
         * @see org.openmrs.api.ProviderService#getProviderAttribute(java.lang.Integer)
228
         */
229
        
230
        @Override
231
        @Transactional(readOnly = true)
232
        public ProviderAttribute getProviderAttribute(Integer providerAttributeID) {
233
                return dao.getProviderAttribute(providerAttributeID);
1✔
234
        }
235
        
236
        /**
237
         * @see org.openmrs.api.ProviderService#getProviderAttributeByUuid(String)
238
         */
239
        
240
        @Override
241
        @Transactional(readOnly = true)
242
        public ProviderAttribute getProviderAttributeByUuid(String uuid) {
243
                return dao.getProviderAttributeByUuid(uuid);
1✔
244
        }
245
        
246
        /**
247
         * @see org.openmrs.api.ProviderService#saveProviderAttributeType(org.openmrs.ProviderAttributeType)
248
         */
249
        @Override
250
        public ProviderAttributeType saveProviderAttributeType(ProviderAttributeType providerAttributeType) {
251
                return dao.saveProviderAttributeType(providerAttributeType);
1✔
252
        }
253
        
254
        /**
255
         * @see org.openmrs.api.ProviderService#retireProviderAttributeType(org.openmrs.ProviderAttributeType,
256
         *      java.lang.String)
257
         */
258
        @Override
259
        public ProviderAttributeType retireProviderAttributeType(ProviderAttributeType providerAttributeType, String reason) {
260
                return Context.getProviderService().saveProviderAttributeType(providerAttributeType);
1✔
261
        }
262
        
263
        /**
264
         * @see org.openmrs.api.ProviderService#unretireProviderAttributeType(org.openmrs.ProviderAttributeType)
265
         */
266
        @Override
267
        public ProviderAttributeType unretireProviderAttributeType(ProviderAttributeType providerAttributeType) {
268
                return Context.getProviderService().saveProviderAttributeType(providerAttributeType);
1✔
269
        }
270
        
271
        /**
272
         * @see org.openmrs.api.ProviderService#purgeProviderAttributeType(org.openmrs.ProviderAttributeType)
273
         */
274
        @Override
275
        public void purgeProviderAttributeType(ProviderAttributeType providerAttributeType) {
276
                dao.deleteProviderAttributeType(providerAttributeType);
1✔
277
        }
1✔
278
        
279
        /**
280
         * @see org.openmrs.api.ProviderService#isProviderIdentifierUnique(Provider)
281
         */
282
        @Override
283
        @Transactional(readOnly = true)
284
        public boolean isProviderIdentifierUnique(Provider provider) throws APIException {
285
                return dao.isProviderIdentifierUnique(provider);
1✔
286
        }
287
        
288
        /**
289
         * @see org.openmrs.api.ProviderService#getProviderByIdentifier(java.lang.String)
290
         */
291
        @Override
292
        @Transactional(readOnly = true)
293
        public Provider getProviderByIdentifier(String identifier) {
294
                return dao.getProviderByIdentifier(identifier);
1✔
295
        }
296
        
297
        /**
298
         * @see org.openmrs.api.ProviderService#getUnknownProvider()
299
         */
300
        @Override
301
        @Transactional(readOnly = true)
302
        public Provider getUnknownProvider() {
303
                return getProviderByUuid(Context.getAdministrationService().getGlobalProperty(
1✔
304
                    OpenmrsConstants.GP_UNKNOWN_PROVIDER_UUID));
305
        }
306

307
        /**
308
         * @see ProviderService#getProviderRole(Integer) 
309
         */
310
        @Override
311
        @Transactional(readOnly = true)
312
        public ProviderRole getProviderRole(Integer providerRoleId) {
313
                return dao.getProviderRole(providerRoleId);
1✔
314
        }
315

316
        /**
317
         * @see ProviderService#getProviderRoleByUuid(String)  
318
         */
319
        @Override
320
        @Transactional(readOnly = true)
321
        public ProviderRole getProviderRoleByUuid(String uuid) {
UNCOV
322
                return dao.getProviderRoleByUuid(uuid);
×
323
        }
324
        
325
}
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2026 Coveralls, Inc