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

openmrs / openmrs-core / 10946298164

19 Sep 2024 05:33PM UTC coverage: 63.759% (+0.09%) from 63.671%
10946298164

push

github

mogoodrich
TRUNK-6265: Bugs in Concept.getPreferredName(Locale) method (#4749)

(cherry picked from commit bc725f242)

14 of 16 new or added lines in 1 file covered. (87.5%)

12 existing lines in 9 files now uncovered.

21692 of 34022 relevant lines covered (63.76%)

0.64 hits per line

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

90.34
/api/src/main/java/org/openmrs/PersonAddress.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;
11

12
import static org.apache.commons.lang3.StringUtils.defaultString;
13

14
import java.util.Calendar;
15
import java.util.Date;
16

17
import org.apache.commons.lang3.StringUtils;
18
import org.apache.commons.lang3.builder.EqualsBuilder;
19
import org.codehaus.jackson.annotate.JsonIgnore;
20
import org.openmrs.util.OpenmrsUtil;
21

22
/**
23
 * This class is the representation of a person's address. This class is many-to-one to the Person
24
 * class, so a Person/Patient/User can have zero to n addresses
25
 */
26
public class PersonAddress extends BaseChangeableOpenmrsData implements java.io.Serializable, Cloneable, Comparable<PersonAddress>, Address {
27
        
28
        public static final long serialVersionUID = 343333L;
29
        
30
        // Fields
31

32
        private Integer personAddressId;
33

34
        private Person person;
35
        
36
        private Boolean preferred = false;
1✔
37

38
        private String address1;
39

40
        private String address2;
41

42
        private String address3;
43

44
        private String address4;
45

46
        private String address5;
47

48
        private String address6;
49

50
        private String address7;
51

52
        private String address8;
53

54
        private String address9;
55

56
        private String address10;
57

58
        private String address11;
59

60
        private String address12;
61

62
        private String address13;
63

64
        private String address14;
65

66
        private String address15;
67

68
        private String cityVillage;
69

70
        private String countyDistrict;
71

72
        private String stateProvince;
73

74
        private String country;
75

76
        private String postalCode;
77

78
        private String latitude;
79

80
        private String longitude;
81
        
82
        private Date startDate;
83
        
84
        private Date endDate;
85
        
86
        // Constructors
87
        
88
        /** default constructor */
89
        public PersonAddress() {
1✔
90
        }
1✔
91
        
92
        /** constructor with id */
93
        public PersonAddress(Integer personAddressId) {
×
94
                this.personAddressId = personAddressId;
×
95
        }
×
96
        
97
        /**
98
         * @see java.lang.Object#toString()
99
         */
100
        @Override
101
        public String toString() {
102
                return "a1:" + getAddress1() + ", a2:" + getAddress2() + ", cv:" +
1✔
103
                                getCityVillage() + ", sp:" + getStateProvince() + ", c:" + getCountry() +
1✔
104
                                ", cd:" + getCountyDistrict() + ", nc:" + getAddress3() + ", pc:" +
1✔
105
                                getPostalCode() + ", lat:" + getLatitude() + ", long:" + getLongitude();
1✔
106
        }
107
        
108
        /**
109
         * Compares this PersonAddress object to the given otherAddress. This method differs from
110
         * {@link #equals(Object)} in that this method compares the inner fields of each address for
111
         * equality. Note: Null/empty fields on <code>otherAddress</code> /will not/ cause a false value
112
         * to be returned
113
         *
114
         * @param otherAddress PersonAddress with which to compare
115
         * @return boolean true/false whether or not they are the same addresses
116
         */
117
        public boolean equalsContent(PersonAddress otherAddress) {
118
                return new EqualsBuilder().append(defaultString(otherAddress.getAddress1()), defaultString(address1)).append(
1✔
119
                    defaultString(otherAddress.getAddress2()), defaultString(address2)).append(
1✔
120
                    defaultString(otherAddress.getAddress3()), defaultString(address3)).append(
1✔
121
                    defaultString(otherAddress.getAddress4()), defaultString(address4)).append(
1✔
122
                    defaultString(otherAddress.getAddress5()), defaultString(address5)).append(
1✔
123
                    defaultString(otherAddress.getAddress6()), defaultString(address6)).append(
1✔
124
                    defaultString(otherAddress.getAddress7()), defaultString(address7)).append(
1✔
125
                    defaultString(otherAddress.getAddress8()), defaultString(address8)).append(
1✔
126
                    defaultString(otherAddress.getAddress9()), defaultString(address9)).append(
1✔
127
                    defaultString(otherAddress.getAddress10()), defaultString(address10)).append(
1✔
128
                    defaultString(otherAddress.getAddress11()), defaultString(address11)).append(
1✔
129
                    defaultString(otherAddress.getAddress12()), defaultString(address12)).append(
1✔
130
                    defaultString(otherAddress.getAddress13()), defaultString(address13)).append(
1✔
131
                    defaultString(otherAddress.getAddress14()), defaultString(address14)).append(
1✔
132
                    defaultString(otherAddress.getAddress15()), defaultString(address15)).append(
1✔
133
                    defaultString(otherAddress.getCityVillage()), defaultString(cityVillage)).append(
1✔
134
                    defaultString(otherAddress.getCountyDistrict()), defaultString(countyDistrict)).append(
1✔
135
                    defaultString(otherAddress.getStateProvince()), defaultString(stateProvince)).append(
1✔
136
                    defaultString(otherAddress.getCountry()), defaultString(country)).append(
1✔
137
                    defaultString(otherAddress.getPostalCode()), defaultString(postalCode)).append(
1✔
138
                    defaultString(otherAddress.getLatitude()), defaultString(latitude)).append(
1✔
139
                    defaultString(otherAddress.getLongitude()), defaultString(longitude)).append(otherAddress.getStartDate(),
1✔
140
                    startDate).append(otherAddress.getEndDate(), endDate).isEquals();
1✔
141
        }
142
        
143
        /**
144
         * bitwise copy of the personAddress object. NOTICE: THIS WILL NOT COPY THE PATIENT OBJECT. The
145
         * PersonAddress.person object in this object AND the cloned object will point at the same
146
         * person
147
         *
148
         * @return New PersonAddress object
149
         */
150
        @Override
151
        public Object clone() {
152
                try {
153
                        return super.clone();
1✔
154
                }
155
                catch (CloneNotSupportedException e) {
×
156
                        throw new InternalError("PersonAddress should be cloneable");
×
157
                }
158
        }
159
        
160
        /**
161
         * @return Returns the address1.
162
         */
163
        @Override
164
        public String getAddress1() {
165
                return address1;
1✔
166
        }
167
        
168
        /**
169
         * @param address1 The address1 to set.
170
         */
171
        @Override
172
        public void setAddress1(String address1) {
173
                this.address1 = address1;
1✔
174
        }
1✔
175
        
176
        /**
177
         * @return Returns the address2.
178
         */
179
        @Override
180
        public String getAddress2() {
181
                return address2;
1✔
182
        }
183
        
184
        /**
185
         * @param address2 The address2 to set.
186
         */
187
        @Override
188
        public void setAddress2(String address2) {
189
                this.address2 = address2;
1✔
190
        }
1✔
191
        
192
        /**
193
         * @return Returns the cityVillage.
194
         */
195
        @Override
196
        public String getCityVillage() {
197
                return cityVillage;
1✔
198
        }
199
        
200
        /**
201
         * @param cityVillage The cityVillage to set.
202
         */
203
        @Override
204
        public void setCityVillage(String cityVillage) {
205
                this.cityVillage = cityVillage;
1✔
206
        }
1✔
207
        
208
        /**
209
         * @return Returns the country.
210
         */
211
        @Override
212
        public String getCountry() {
213
                return country;
1✔
214
        }
215
        
216
        /**
217
         * @param country The country to set.
218
         */
219
        @Override
220
        public void setCountry(String country) {
221
                this.country = country;
1✔
222
        }
1✔
223
        
224
        /**
225
         * @return Returns the preferred.
226
         * 
227
         * @deprecated as of 2.0, use {@link #getPreferred()}
228
         */
229
        @Deprecated
230
        @JsonIgnore
231
        public Boolean isPreferred() {
UNCOV
232
                return getPreferred();
×
233
        }
234
        
235
        public Boolean getPreferred() {
236
                return preferred == null ? Boolean.FALSE : preferred;
1✔
237
        }
238
        
239
        /**
240
         * @param preferred The preferred to set.
241
         */
242
        public void setPreferred(Boolean preferred) {
243
                this.preferred = preferred;
1✔
244
        }
1✔
245
        
246
        /**
247
         * @return Returns the latitude.
248
         */
249
        @Override
250
        public String getLatitude() {
251
                return latitude;
1✔
252
        }
253
        
254
        /**
255
         * @param latitude The latitude to set.
256
         */
257
        @Override
258
        public void setLatitude(String latitude) {
259
                this.latitude = latitude;
1✔
260
        }
1✔
261
        
262
        /**
263
         * @return Returns the longitude.
264
         */
265
        @Override
266
        public String getLongitude() {
267
                return longitude;
1✔
268
        }
269
        
270
        /**
271
         * @param longitude The longitude to set.
272
         */
273
        @Override
274
        public void setLongitude(String longitude) {
275
                this.longitude = longitude;
1✔
276
        }
1✔
277
        
278
        /**
279
         * @return Returns the person.
280
         */
281
        public Person getPerson() {
282
                return person;
1✔
283
        }
284
        
285
        /**
286
         * @param person The person to set.
287
         */
288
        public void setPerson(Person person) {
289
                this.person = person;
1✔
290
        }
1✔
291
        
292
        /**
293
         * @return Returns the personAddressId.
294
         */
295
        public Integer getPersonAddressId() {
296
                return personAddressId;
1✔
297
        }
298
        
299
        /**
300
         * @param personAddressId The personAddressId to set.
301
         */
302
        public void setPersonAddressId(Integer personAddressId) {
303
                this.personAddressId = personAddressId;
1✔
304
        }
1✔
305
        
306
        /**
307
         * @return Returns the postalCode.
308
         */
309
        @Override
310
        public String getPostalCode() {
311
                return postalCode;
1✔
312
        }
313
        
314
        /**
315
         * @param postalCode The postalCode to set.
316
         */
317
        @Override
318
        public void setPostalCode(String postalCode) {
319
                this.postalCode = postalCode;
1✔
320
        }
1✔
321
        
322
        /**
323
         * @return Returns the stateProvince.
324
         */
325
        @Override
326
        public String getStateProvince() {
327
                return stateProvince;
1✔
328
        }
329
        
330
        /**
331
         * @param stateProvince The stateProvince to set.
332
         */
333
        @Override
334
        public void setStateProvince(String stateProvince) {
335
                this.stateProvince = stateProvince;
1✔
336
        }
1✔
337
        
338
        /**
339
         * @return Returns the countyDistrict.
340
         */
341
        @Override
342
        public String getCountyDistrict() {
343
                return countyDistrict;
1✔
344
        }
345
        
346
        /**
347
         * @param countyDistrict The countyDistrict to set.
348
         */
349
        @Override
350
        public void setCountyDistrict(String countyDistrict) {
351
                this.countyDistrict = countyDistrict;
1✔
352
        }
1✔
353
        
354
        /**
355
         * Convenience method to test whether any of the fields in this address are set
356
         *
357
         * @return whether any of the address fields (address1, address2, cityVillage, stateProvince,
358
         *         country, countyDistrict, neighborhoodCell, postalCode, latitude, longitude, etc) are
359
         *         whitespace, empty ("") or null.
360
         */
361
        public boolean isBlank() {
362
                
363
                return StringUtils.isBlank(getAddress1()) && StringUtils.isBlank(getAddress2())
1✔
364
                        && StringUtils.isBlank(getAddress3()) && StringUtils.isBlank(getAddress4())
1✔
365
                        && StringUtils.isBlank(getAddress5()) && StringUtils.isBlank(getAddress6())
1✔
366
                        && StringUtils.isBlank(getCityVillage()) && StringUtils.isBlank(getStateProvince())
1✔
367
                        && StringUtils.isBlank(getCountry()) && StringUtils.isBlank(getCountyDistrict())
1✔
368
                        && StringUtils.isBlank(getPostalCode()) && StringUtils.isBlank(getLatitude())
1✔
369
                        && StringUtils.isBlank(getLongitude());
1✔
370
                
371
        }
372
                        
373
        /**
374
         * @see java.lang.Comparable#compareTo(java.lang.Object)
375
         * Note: this comparator imposes orderings that are inconsistent with equals.
376
         */
377
        @Override
378
        @SuppressWarnings("squid:S1210")
379
        public int compareTo(PersonAddress other) {
380
                int retValue = 0;
1✔
381
                if (other != null) {
1✔
382
                        retValue = getVoided().compareTo(other.getVoided());
1✔
383
                        if (retValue == 0) {
1✔
384
                                retValue = other.getPreferred().compareTo(getPreferred());
1✔
385
                        }
386
                        if (retValue == 0 && getDateCreated() != null) {
1✔
387
                                retValue = OpenmrsUtil.compareWithNullAsLatest(getDateCreated(), other.getDateCreated());
1✔
388
                        }
389
                        if (retValue == 0) {
1✔
390
                                retValue = OpenmrsUtil.compareWithNullAsGreatest(getPersonAddressId(), other.getPersonAddressId());
1✔
391
                        }
392
                        
393
                        // if we've gotten this far, just check all address values. If they are
394
                        // equal, leave the objects at 0. If not, arbitrarily pick retValue=1
395
                        // and return that (they are not equal).
396
                        if (retValue == 0 && !equalsContent(other)) {
1✔
397
                                retValue = 1;
1✔
398
                        }
399
                }
400
                return retValue;
1✔
401
        }
402
        
403
        /**
404
         * @since 1.8
405
         * @return the address3
406
         */
407
        @Override
408
        public String getAddress3() {
409
                return address3;
1✔
410
        }
411
        
412
        /**
413
         * @since 1.8
414
         * @param address3 the address3 to set
415
         */
416
        @Override
417
        public void setAddress3(String address3) {
418
                this.address3 = address3;
1✔
419
        }
1✔
420
        
421
        /**
422
         * @since 1.8
423
         * @return the address4
424
         */
425
        @Override
426
        public String getAddress4() {
427
                return address4;
1✔
428
        }
429
        
430
        /**
431
         * @since 1.8
432
         * @param address4 the address4 to set
433
         */
434
        @Override
435
        public void setAddress4(String address4) {
436
                this.address4 = address4;
1✔
437
        }
1✔
438
        
439
        /**
440
         * @since 1.8
441
         * @return the address6
442
         */
443
        @Override
444
        public String getAddress6() {
445
                return address6;
1✔
446
        }
447
        
448
        /**
449
         * @since 1.8
450
         * @param address6 the address6 to set
451
         */
452
        @Override
453
        public void setAddress6(String address6) {
454
                this.address6 = address6;
1✔
455
        }
1✔
456
        
457
        /**
458
         * @since 1.8
459
         * @return the address5
460
         */
461
        @Override
462
        public String getAddress5() {
463
                return address5;
1✔
464
        }
465
        
466
        /**
467
         * @since 1.8
468
         * @param address5 the address5 to set
469
         */
470
        @Override
471
        public void setAddress5(String address5) {
472
                this.address5 = address5;
1✔
473
        }
1✔
474
        
475
        /**
476
         * @since 1.5
477
         * @see org.openmrs.OpenmrsObject#getId()
478
         */
479
        @Override
480
        public Integer getId() {
481
                
482
                return getPersonAddressId();
×
483
        }
484
        
485
        /**
486
         * @since 1.5
487
         * @see org.openmrs.OpenmrsObject#setId(java.lang.Integer)
488
         */
489
        @Override
490
        public void setId(Integer id) {
491
                setPersonAddressId(id);
×
492
                
493
        }
×
494
        
495
        /**
496
         * @return the startDate
497
         * @since 1.9
498
         */
499
        public Date getStartDate() {
500
                return startDate;
1✔
501
        }
502
        
503
        /**
504
         * @param startDate to set to
505
         * @since 1.9
506
         */
507
        public void setStartDate(Date startDate) {
508
                this.startDate = startDate;
1✔
509
        }
1✔
510
        
511
        /**
512
         * @return the endDate
513
         * @since 1.9
514
         */
515
        public Date getEndDate() {
516
                return this.endDate;
1✔
517
        }
518
        
519
        /**
520
         * @param endDate to set to
521
         * @since 1.9
522
         */
523
        public void setEndDate(Date endDate) {
524
                this.endDate = endDate;
1✔
525
        }
1✔
526
        
527
        /**
528
         * Returns true if the address' endDate is null
529
         *
530
         * @return true or false
531
         * @since 1.9
532
         */
533
        public Boolean isActive() {
534
                return this.endDate == null;
×
535
        }
536
        
537
        /**
538
         * Makes an address inactive by setting its endDate to the current time
539
         *
540
         * @since 1.9
541
         */
542
        public void deactivate() {
543
                setEndDate(Calendar.getInstance().getTime());
×
544
        }
×
545
        
546
        /**
547
         * Makes an address active by setting its endDate to null
548
         *
549
         * @since 1.9
550
         */
551
        public void activate() {
552
                setEndDate(null);
×
553
        }
×
554
        
555
        /**
556
         * {@inheritDoc}
557
         */
558
        @Override
559
        public String getAddress7() {
560
                return address7;
1✔
561
        }
562

563
        /**
564
         * {@inheritDoc}
565
         */
566
        @Override
567
        public void setAddress7(String address7) {
568
                this.address7 = address7;
1✔
569
        }
1✔
570

571
        /**
572
         * {@inheritDoc}
573
         */
574
        @Override
575
        public String getAddress8() {
576
                return address8;
1✔
577
        }
578

579
        /**
580
         * {@inheritDoc}
581
         */
582
        @Override
583
        public void setAddress8(String address8) {
584
                this.address8 = address8;
1✔
585
        }
1✔
586

587
        /**
588
         * {@inheritDoc}
589
         */
590
        @Override
591
        public String getAddress9() {
592
                return address9;
1✔
593
        }
594

595
        /**
596
         * {@inheritDoc}
597
         */
598
        @Override
599
        public void setAddress9(String address9) {
600
                this.address9 = address9;
1✔
601
        }
1✔
602

603
        /**
604
         * {@inheritDoc}
605
         */
606
        @Override
607
        public String getAddress10() {
608
                return address10;
1✔
609
        }
610

611
        /**
612
         * {@inheritDoc}
613
         */
614
        @Override
615
        public void setAddress10(String address10) {
616
                this.address10 = address10;
1✔
617
        }
1✔
618

619
        /**
620
         * {@inheritDoc}
621
         */
622
        @Override
623
        public String getAddress11() {
624
                return address11;
1✔
625
        }
626

627
        /**
628
         * {@inheritDoc}
629
         */
630
        @Override
631
        public void setAddress11(String address11) {
632
                this.address11 = address11;
1✔
633
        }
1✔
634

635
        /**
636
         * {@inheritDoc}
637
         */
638
        @Override
639
        public String getAddress12() {
640
                return address12;
1✔
641
        }
642

643
        /**
644
         * {@inheritDoc}
645
         */
646
        @Override
647
        public void setAddress12(String address12) {
648
                this.address12 = address12;
1✔
649
        }
1✔
650

651
        /**
652
         * {@inheritDoc}
653
         */
654
        @Override
655
        public String getAddress13() {
656
                return address13;
1✔
657
        }
658

659
        /**
660
         * {@inheritDoc}
661
         */
662
        @Override
663
        public void setAddress13(String address13) {
664
                this.address13 = address13;
1✔
665
        }
1✔
666

667
        /**
668
         * {@inheritDoc}
669
         */
670
        @Override
671
        public String getAddress14() {
672
                return address14;
1✔
673
        }
674

675
        /**
676
         * {@inheritDoc}
677
         */
678
        @Override
679
        public void setAddress14(String address14) {
680
                this.address14 = address14;
1✔
681
        }
1✔
682

683
        /**
684
         * {@inheritDoc}
685
         */
686
        @Override
687
        public String getAddress15() {
688
                return address15;
1✔
689
        }
690

691
        /**
692
         * {@inheritDoc}
693
         */
694
        @Override
695
        public void setAddress15(String address15) {
696
                this.address15 = address15;
1✔
697
        }
1✔
698
}
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