001 /** 002 * Copyright 2005-2012 The Kuali Foundation 003 * 004 * Licensed under the Educational Community License, Version 2.0 (the "License"); 005 * you may not use this file except in compliance with the License. 006 * You may obtain a copy of the License at 007 * 008 * http://www.opensource.org/licenses/ecl2.php 009 * 010 * Unless required by applicable law or agreed to in writing, software 011 * distributed under the License is distributed on an "AS IS" BASIS, 012 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 013 * See the License for the specific language governing permissions and 014 * limitations under the License. 015 */ 016 package org.kuali.rice.kim.api.identity.personal; 017 018 import org.apache.commons.lang.StringUtils; 019 import org.apache.log4j.Logger; 020 import org.joda.time.DateTime; 021 import org.joda.time.Years; 022 import org.kuali.rice.core.api.CoreConstants; 023 import org.kuali.rice.core.api.mo.AbstractDataTransferObject; 024 import org.kuali.rice.core.api.mo.ModelBuilder; 025 import org.kuali.rice.kim.api.KimConstants; 026 import org.w3c.dom.Element; 027 028 import javax.xml.bind.annotation.XmlAccessType; 029 import javax.xml.bind.annotation.XmlAccessorType; 030 import javax.xml.bind.annotation.XmlAnyElement; 031 import javax.xml.bind.annotation.XmlElement; 032 import javax.xml.bind.annotation.XmlRootElement; 033 import javax.xml.bind.annotation.XmlType; 034 import java.io.Serializable; 035 import java.text.ParseException; 036 import java.text.SimpleDateFormat; 037 import java.util.Collection; 038 import java.util.Date; 039 040 @XmlRootElement(name = EntityBioDemographics.Constants.ROOT_ELEMENT_NAME) 041 @XmlAccessorType(XmlAccessType.NONE) 042 @XmlType(name = EntityBioDemographics.Constants.TYPE_NAME, propOrder = { 043 EntityBioDemographics.Elements.ENTITY_ID, 044 EntityBioDemographics.Elements.DECEASED_DATE, 045 EntityBioDemographics.Elements.BIRTH_DATE, 046 EntityBioDemographics.Elements.AGE, 047 EntityBioDemographics.Elements.GENDER_CODE, 048 EntityBioDemographics.Elements.GENDER_CHANGE_CODE, 049 EntityBioDemographics.Elements.MARITAL_STATUS_CODE, 050 EntityBioDemographics.Elements.PRIMARY_LANGUAGE_CODE, 051 EntityBioDemographics.Elements.SECONDARY_LANGUAGE_CODE, 052 EntityBioDemographics.Elements.BIRTH_COUNTRY, 053 EntityBioDemographics.Elements.BIRTH_STATE_PROVINCE_CODE, 054 EntityBioDemographics.Elements.BIRTH_CITY, 055 EntityBioDemographics.Elements.GEOGRAPHIC_ORIGIN, 056 EntityBioDemographics.Elements.BIRTH_DATE_UNMASKED, 057 EntityBioDemographics.Elements.GENDER_CODE_UNMASKED, 058 EntityBioDemographics.Elements.GENDER_CHANGE_CODE_UNMASKED, 059 EntityBioDemographics.Elements.MARITAL_STATUS_CODE_UNMASKED, 060 EntityBioDemographics.Elements.PRIMARY_LANGUAGE_CODE_UNMASKED, 061 EntityBioDemographics.Elements.SECONDARY_LANGUAGE_CODE_UNMASKED, 062 EntityBioDemographics.Elements.BIRTH_COUNTRY_UNMASKED, 063 EntityBioDemographics.Elements.BIRTH_STATE_PROVINCE_CODE_UNMASKED, 064 EntityBioDemographics.Elements.BIRTH_CITY_UNMASKED, 065 EntityBioDemographics.Elements.GEOGRAPHIC_ORIGIN_UNMASKED, 066 EntityBioDemographics.Elements.NOTE_MESSAGE, 067 EntityBioDemographics.Elements.SUPPRESS_PERSONAL, 068 CoreConstants.CommonElements.VERSION_NUMBER, 069 CoreConstants.CommonElements.OBJECT_ID, 070 CoreConstants.CommonElements.FUTURE_ELEMENTS 071 }) 072 public final class EntityBioDemographics extends AbstractDataTransferObject 073 implements EntityBioDemographicsContract 074 { 075 private static final Logger LOG = Logger.getLogger(EntityBioDemographics.class); 076 077 @XmlElement(name = Elements.ENTITY_ID, required = false) 078 private final String entityId; 079 @XmlElement(name = Elements.DECEASED_DATE, required = false) 080 private final String deceasedDate; 081 @XmlElement(name = Elements.BIRTH_DATE, required = false) 082 private final String birthDate; 083 @XmlElement(name = Elements.GENDER_CODE, required = false) 084 private final String genderCode; 085 @XmlElement(name = Elements.GENDER_CHANGE_CODE, required = false) 086 private final String genderChangeCode; 087 @XmlElement(name = Elements.MARITAL_STATUS_CODE, required = false) 088 private final String maritalStatusCode; 089 @XmlElement(name = Elements.PRIMARY_LANGUAGE_CODE, required = false) 090 private final String primaryLanguageCode; 091 @XmlElement(name = Elements.SECONDARY_LANGUAGE_CODE, required = false) 092 private final String secondaryLanguageCode; 093 @XmlElement(name = Elements.BIRTH_COUNTRY, required = false) 094 private final String birthCountry; 095 @XmlElement(name = Elements.BIRTH_STATE_PROVINCE_CODE, required = false) 096 private final String birthStateProvinceCode; 097 @XmlElement(name = Elements.BIRTH_CITY, required = false) 098 private final String birthCity; 099 @XmlElement(name = Elements.GEOGRAPHIC_ORIGIN, required = false) 100 private final String geographicOrigin; 101 102 @XmlElement(name = Elements.BIRTH_DATE_UNMASKED, required = false) 103 private final String birthDateUnmasked; 104 @XmlElement(name = Elements.GENDER_CODE_UNMASKED, required = false) 105 private final String genderCodeUnmasked; 106 @XmlElement(name = Elements.GENDER_CHANGE_CODE_UNMASKED, required = false) 107 private final String genderChangeCodeUnmasked; 108 @XmlElement(name = Elements.MARITAL_STATUS_CODE_UNMASKED, required = false) 109 private final String maritalStatusCodeUnmasked; 110 @XmlElement(name = Elements.PRIMARY_LANGUAGE_CODE_UNMASKED, required = false) 111 private final String primaryLanguageCodeUnmasked; 112 @XmlElement(name = Elements.SECONDARY_LANGUAGE_CODE_UNMASKED, required = false) 113 private final String secondaryLanguageCodeUnmasked; 114 @XmlElement(name = Elements.BIRTH_COUNTRY_UNMASKED, required = false) 115 private final String birthCountryUnmasked; 116 @XmlElement(name = Elements.BIRTH_STATE_PROVINCE_CODE_UNMASKED, required = false) 117 private final String birthStateProvinceCodeUnmasked; 118 @XmlElement(name = Elements.BIRTH_CITY_UNMASKED, required = false) 119 private final String birthCityUnmasked; 120 @XmlElement(name = Elements.GEOGRAPHIC_ORIGIN_UNMASKED, required = false) 121 private final String geographicOriginUnmasked; 122 123 @XmlElement(name = Elements.NOTE_MESSAGE, required = false) 124 private final String noteMessage; 125 @XmlElement(name = Elements.SUPPRESS_PERSONAL, required = false) 126 private final boolean suppressPersonal; 127 @XmlElement(name = CoreConstants.CommonElements.VERSION_NUMBER, required = false) 128 private final Long versionNumber; 129 @XmlElement(name = CoreConstants.CommonElements.OBJECT_ID, required = false) 130 private final String objectId; 131 @SuppressWarnings("unused") 132 @XmlAnyElement 133 private final Collection<Element> _futureElements = null; 134 135 /** 136 * Private constructor used only by JAXB. 137 * 138 */ 139 private EntityBioDemographics() { 140 this.entityId = null; 141 this.deceasedDate = null; 142 this.birthDate = null; 143 this.genderCode = null; 144 this.genderChangeCode = null; 145 this.maritalStatusCode = null; 146 this.primaryLanguageCode = null; 147 this.secondaryLanguageCode = null; 148 this.birthCountry = null; 149 this.birthStateProvinceCode = null; 150 this.birthCity = null; 151 this.geographicOrigin = null; 152 153 this.birthDateUnmasked = null; 154 this.genderCodeUnmasked = null; 155 this.genderChangeCodeUnmasked = null; 156 this.maritalStatusCodeUnmasked = null; 157 this.primaryLanguageCodeUnmasked = null; 158 this.secondaryLanguageCodeUnmasked = null; 159 this.birthCountryUnmasked = null; 160 this.birthStateProvinceCodeUnmasked = null; 161 this.birthCityUnmasked = null; 162 this.geographicOriginUnmasked = null; 163 164 this.noteMessage = null; 165 this.suppressPersonal = false; 166 this.versionNumber = null; 167 this.objectId = null; 168 } 169 170 private EntityBioDemographics(Builder builder) { 171 this.entityId = builder.getEntityId(); 172 this.deceasedDate = builder.getDeceasedDate(); 173 this.birthDate = builder.getBirthDate(); 174 this.genderCode = builder.getGenderCode(); 175 this.genderChangeCode = builder.getGenderChangeCode(); 176 this.maritalStatusCode = builder.getMaritalStatusCode(); 177 this.primaryLanguageCode = builder.getPrimaryLanguageCode(); 178 this.secondaryLanguageCode = builder.getSecondaryLanguageCode(); 179 this.birthCountry = builder.getBirthCountry(); 180 this.birthStateProvinceCode = builder.getBirthStateProvinceCode(); 181 this.birthCity = builder.getBirthCity(); 182 this.geographicOrigin = builder.getGeographicOrigin(); 183 184 this.birthDateUnmasked = builder.getBirthDateUnmasked(); 185 this.genderCodeUnmasked = builder.getGenderCodeUnmasked(); 186 this.genderChangeCodeUnmasked = builder.getGenderChangeCodeUnmasked(); 187 this.maritalStatusCodeUnmasked = builder.getMaritalStatusCodeUnmasked(); 188 this.primaryLanguageCodeUnmasked = builder.getPrimaryLanguageCodeUnmasked(); 189 this.secondaryLanguageCodeUnmasked = builder.getSecondaryLanguageCodeUnmasked(); 190 this.birthCountryUnmasked = builder.getBirthCountryUnmasked(); 191 this.birthStateProvinceCodeUnmasked = builder.getBirthStateProvinceCodeUnmasked(); 192 this.birthCityUnmasked = builder.getBirthCityUnmasked(); 193 this.geographicOriginUnmasked = builder.getGeographicOriginUnmasked(); 194 195 this.noteMessage = builder.getNoteMessage(); 196 this.suppressPersonal = builder.isSuppressPersonal(); 197 this.versionNumber = builder.getVersionNumber(); 198 this.objectId = builder.getObjectId(); 199 } 200 201 @Override 202 public String getEntityId() { 203 return this.entityId; 204 } 205 206 @Override 207 public String getDeceasedDate() { 208 return this.deceasedDate; 209 } 210 211 @Override 212 public String getBirthDate() { 213 return this.birthDate; 214 } 215 216 @Override 217 @XmlElement(name = Elements.AGE, required = true) 218 public Integer getAge() { 219 return calculateAge(this.birthDate, this.deceasedDate, isSuppressPersonal()); 220 } 221 222 @Override 223 public String getGenderCode() { 224 return this.genderCode; 225 } 226 227 @Override 228 public String getGenderChangeCode() { 229 return this.genderChangeCode; 230 } 231 232 @Override 233 public String getMaritalStatusCode() { 234 return this.maritalStatusCode; 235 } 236 237 @Override 238 public String getPrimaryLanguageCode() { 239 return this.primaryLanguageCode; 240 } 241 242 @Override 243 public String getSecondaryLanguageCode() { 244 return this.secondaryLanguageCode; 245 } 246 247 @Override 248 public String getBirthCountry() { 249 return this.birthCountry; 250 } 251 252 @Override 253 public String getBirthStateProvinceCode() { 254 return this.birthStateProvinceCode; 255 } 256 257 @Override 258 public String getBirthCity() { 259 return this.birthCity; 260 } 261 262 @Override 263 public String getGeographicOrigin() { 264 return this.geographicOrigin; 265 } 266 267 @Override 268 public String getBirthDateUnmasked() { 269 return this.birthDateUnmasked; 270 } 271 272 @Override 273 public String getGenderCodeUnmasked() { 274 return this.genderCodeUnmasked; 275 } 276 277 @Override 278 public String getGenderChangeCodeUnmasked() { 279 return this.genderChangeCodeUnmasked; 280 } 281 282 @Override 283 public String getMaritalStatusCodeUnmasked() { 284 return this.maritalStatusCodeUnmasked; 285 } 286 287 @Override 288 public String getPrimaryLanguageCodeUnmasked() { 289 return this.primaryLanguageCodeUnmasked; 290 } 291 292 @Override 293 public String getSecondaryLanguageCodeUnmasked() { 294 return this.secondaryLanguageCodeUnmasked; 295 } 296 297 @Override 298 public String getBirthCountryUnmasked() { 299 return this.birthCountryUnmasked; 300 } 301 302 @Override 303 public String getBirthStateProvinceCodeUnmasked() { 304 return this.birthStateProvinceCodeUnmasked; 305 } 306 307 @Override 308 public String getBirthCityUnmasked() { 309 return this.birthCityUnmasked; 310 } 311 312 @Override 313 public String getGeographicOriginUnmasked() { 314 return this.geographicOriginUnmasked; 315 } 316 317 @Override 318 public String getNoteMessage() { 319 return this.noteMessage; 320 } 321 322 @Override 323 public boolean isSuppressPersonal() { 324 return this.suppressPersonal; 325 } 326 327 @Override 328 public Long getVersionNumber() { 329 return this.versionNumber; 330 } 331 332 @Override 333 public String getObjectId() { 334 return this.objectId; 335 } 336 337 /** 338 * Helper to parse the birth date for age calculation 339 * @param birthDate the birth date in EntityBioDemographicsContract BIRTH_DATE_FORMAT format 340 * @param deceasedDate the deceased date in EntityBioDemographicsContract DECEASED_DATE_FORMAT format 341 * @param suppressPersonal whether personal information is being suppressed 342 * @return the age in years or null if unavailable, suppressed, or an error occurs during calculation 343 */ 344 private static Integer calculateAge(String birthDate, String deceasedDate, boolean suppressPersonal) { 345 if (birthDate != null && ! suppressPersonal) { 346 Date parsedBirthDate; 347 try { 348 parsedBirthDate = new SimpleDateFormat(BIRTH_DATE_FORMAT).parse(birthDate); 349 } catch (ParseException pe) { 350 LOG.error("Error parsing EntityBioDemographics birth date: '" + birthDate + "'", pe); 351 return null; 352 } 353 DateTime endDate; 354 if (deceasedDate != null) { 355 try { 356 endDate = new DateTime(new SimpleDateFormat(BIRTH_DATE_FORMAT).parse(deceasedDate)); 357 } catch (ParseException pe) { 358 LOG.error("Error parsing EntityBioDemographics deceased date: '" + deceasedDate+ "'", pe); 359 return null; 360 } 361 } else { 362 endDate = new DateTime(); 363 } 364 return Years.yearsBetween(new DateTime(parsedBirthDate), endDate).getYears(); 365 } 366 return null; 367 } 368 369 /** 370 * A builder which can be used to construct {@link EntityBioDemographics} instances. Enforces the constraints of the {@link EntityBioDemographicsContract}. 371 * 372 */ 373 public final static class Builder 374 implements Serializable, ModelBuilder, EntityBioDemographicsContract 375 { 376 377 private String entityId; 378 private String deceasedDate; 379 private String birthDate; 380 private String genderCode; 381 private String maritalStatusCode; 382 private String primaryLanguageCode; 383 private String secondaryLanguageCode; 384 private String birthCountry; 385 private String birthStateProvinceCode; 386 private String birthCity; 387 private String geographicOrigin; 388 private String genderChangeCode; 389 private String noteMessage; 390 private boolean suppressPersonal; 391 private Long versionNumber; 392 private String objectId; 393 394 private Builder(String entityId, String genderCode) { 395 setEntityId(entityId); 396 setGenderCode(genderCode); 397 } 398 399 public static Builder create(String entityId, String genderCode) { 400 // TODO modify as needed to pass any required values and add them to the signature of the 'create' method 401 return new Builder(entityId, genderCode); 402 } 403 404 public static Builder create(EntityBioDemographicsContract contract) { 405 if (contract == null) { 406 throw new IllegalArgumentException("contract was null"); 407 } 408 Builder builder = create(contract.getEntityId(), contract.getGenderCode()); 409 builder.setDeceasedDate(contract.getDeceasedDate()); 410 builder.setBirthDate(contract.getBirthDate()); 411 builder.setMaritalStatusCode(contract.getMaritalStatusCode()); 412 builder.setPrimaryLanguageCode(contract.getPrimaryLanguageCode()); 413 builder.setSecondaryLanguageCode(contract.getSecondaryLanguageCode()); 414 builder.setBirthCountry(contract.getBirthCountry()); 415 builder.setBirthStateProvinceCode(contract.getBirthStateProvinceCode()); 416 builder.setBirthCity(contract.getBirthCity()); 417 builder.setGeographicOrigin(contract.getGeographicOrigin()); 418 builder.setGenderChangeCode(contract.getGenderChangeCode()); 419 builder.setNoteMessage(contract.getNoteMessage()); 420 builder.setSuppressPersonal(contract.isSuppressPersonal()); 421 builder.setVersionNumber(contract.getVersionNumber()); 422 builder.setObjectId(contract.getObjectId()); 423 return builder; 424 } 425 426 public EntityBioDemographics build() { 427 return new EntityBioDemographics(this); 428 } 429 430 @Override 431 public String getEntityId() { 432 return this.entityId; 433 } 434 435 @Override 436 public String getDeceasedDate() { 437 return this.deceasedDate; 438 } 439 440 @Override 441 public String getBirthDate() { 442 if (isSuppressPersonal()) { 443 return KimConstants.RESTRICTED_DATA_MASK; 444 } 445 return this.birthDate; 446 } 447 448 @Override 449 public Integer getAge() { 450 return calculateAge(this.birthDate, this.deceasedDate, isSuppressPersonal()); 451 } 452 453 @Override 454 public String getGenderCode() { 455 if (isSuppressPersonal()) { 456 return KimConstants.RESTRICTED_DATA_MASK; 457 } 458 return this.genderCode; 459 } 460 461 @Override 462 public String getGenderChangeCode() { 463 if (isSuppressPersonal()) { 464 return KimConstants.RESTRICTED_DATA_MASK; 465 } 466 return this.genderChangeCode; 467 } 468 469 @Override 470 public String getMaritalStatusCode() { 471 if (isSuppressPersonal()) { 472 return KimConstants.RESTRICTED_DATA_MASK; 473 } 474 return this.maritalStatusCode; 475 } 476 477 @Override 478 public String getPrimaryLanguageCode() { 479 if (isSuppressPersonal()) { 480 return KimConstants.RESTRICTED_DATA_MASK; 481 } 482 return this.primaryLanguageCode; 483 } 484 485 @Override 486 public String getSecondaryLanguageCode() { 487 if (isSuppressPersonal()) { 488 return KimConstants.RESTRICTED_DATA_MASK; 489 } 490 return this.secondaryLanguageCode; 491 } 492 493 @Override 494 public String getBirthCountry() { 495 if (isSuppressPersonal()) { 496 return KimConstants.RESTRICTED_DATA_MASK; 497 } 498 return this.birthCountry; 499 } 500 501 @Override 502 public String getBirthStateProvinceCode() { 503 if (isSuppressPersonal()) { 504 return KimConstants.RESTRICTED_DATA_MASK; 505 } 506 return this.birthStateProvinceCode; 507 } 508 509 @Override 510 public String getBirthCity() { 511 if (isSuppressPersonal()) { 512 return KimConstants.RESTRICTED_DATA_MASK; 513 } 514 return this.birthCity; 515 } 516 517 @Override 518 public String getGeographicOrigin() { 519 if (isSuppressPersonal()) { 520 return KimConstants.RESTRICTED_DATA_MASK; 521 } 522 return this.geographicOrigin; 523 } 524 525 @Override 526 public String getBirthDateUnmasked() { 527 return this.birthDate; 528 } 529 530 @Override 531 public String getGenderCodeUnmasked() { 532 return this.genderCode; 533 } 534 535 @Override 536 public String getGenderChangeCodeUnmasked() { 537 return this.genderChangeCode; 538 } 539 540 @Override 541 public String getMaritalStatusCodeUnmasked() { 542 return this.maritalStatusCode; 543 } 544 545 @Override 546 public String getPrimaryLanguageCodeUnmasked() { 547 return this.primaryLanguageCode; 548 } 549 550 @Override 551 public String getSecondaryLanguageCodeUnmasked() { 552 return this.secondaryLanguageCode; 553 } 554 555 @Override 556 public String getBirthCountryUnmasked() { 557 return this.birthCountry; 558 } 559 560 @Override 561 public String getBirthStateProvinceCodeUnmasked() { 562 return this.birthStateProvinceCode; 563 } 564 565 @Override 566 public String getBirthCityUnmasked() { 567 return this.birthCity; 568 } 569 570 @Override 571 public String getGeographicOriginUnmasked() { 572 return this.geographicOrigin; 573 } 574 575 @Override 576 public String getNoteMessage() { 577 return this.noteMessage; 578 } 579 580 @Override 581 public boolean isSuppressPersonal() { 582 return this.suppressPersonal; 583 } 584 585 @Override 586 public Long getVersionNumber() { 587 return this.versionNumber; 588 } 589 590 @Override 591 public String getObjectId() { 592 return this.objectId; 593 } 594 595 public void setEntityId(String entityId) { 596 if (StringUtils.isEmpty(entityId)) { 597 throw new IllegalArgumentException("id is empty"); 598 } 599 this.entityId = entityId; 600 } 601 602 public void setDeceasedDate(String deceasedDate) { 603 if (deceasedDate != null) { 604 SimpleDateFormat format = new SimpleDateFormat(DECEASED_DATE_FORMAT); 605 try{ 606 format.parse(deceasedDate); 607 this.deceasedDate = deceasedDate; 608 } 609 catch(ParseException e) { 610 throw new IllegalArgumentException("deceasedDate is not of the format 'yyyy-MM-DD'"); 611 } 612 } 613 } 614 615 public void setBirthDate(String birthDate) { 616 if (birthDate != null) { 617 SimpleDateFormat format = new SimpleDateFormat(BIRTH_DATE_FORMAT); 618 try{ 619 format.parse(birthDate); 620 this.birthDate = birthDate; 621 } 622 catch(ParseException e) { 623 throw new IllegalArgumentException("birthDate is not of the format 'yyyy-MM-DD'"); 624 } 625 } 626 } 627 628 public void setDeceasedDate(Date deceasedDate) { 629 this.deceasedDate = new SimpleDateFormat(DECEASED_DATE_FORMAT).format(deceasedDate); 630 } 631 632 public void setBirthDate(Date birthDate) { 633 this.birthDate = new SimpleDateFormat(BIRTH_DATE_FORMAT).format(birthDate); 634 } 635 636 public void setGenderCode(String genderCode) { 637 if (StringUtils.isEmpty(genderCode)) { 638 throw new IllegalArgumentException("genderCode is empty"); 639 } 640 this.genderCode = genderCode; 641 } 642 643 public void setGenderChangeCode(String genderChangeCode) { 644 this.genderChangeCode = genderChangeCode; 645 } 646 647 public void setMaritalStatusCode(String maritalStatusCode) { 648 this.maritalStatusCode = maritalStatusCode; 649 } 650 651 public void setPrimaryLanguageCode(String primaryLanguageCode) { 652 this.primaryLanguageCode = primaryLanguageCode; 653 } 654 655 public void setSecondaryLanguageCode(String secondaryLanguageCode) { 656 this.secondaryLanguageCode = secondaryLanguageCode; 657 } 658 659 public void setBirthCountry(String birthCountry) { 660 this.birthCountry = birthCountry; 661 } 662 663 public void setBirthStateProvinceCode(String birthStateProvinceCode) { 664 this.birthStateProvinceCode = birthStateProvinceCode; 665 } 666 667 public void setBirthCity(String birthCity) { 668 this.birthCity = birthCity; 669 } 670 671 public void setGeographicOrigin(String geographicOrigin) { 672 this.geographicOrigin = geographicOrigin; 673 } 674 675 private void setNoteMessage(String noteMessage) { 676 this.noteMessage = noteMessage; 677 } 678 679 private void setSuppressPersonal(boolean suppressPersonal) { 680 this.suppressPersonal = suppressPersonal; 681 } 682 683 public void setVersionNumber(Long versionNumber) { 684 this.versionNumber = versionNumber; 685 } 686 687 public void setObjectId(String objectId) { 688 this.objectId = objectId; 689 } 690 691 } 692 693 694 /** 695 * Defines some internal constants used on this class. 696 * 697 */ 698 static class Constants { 699 700 final static String ROOT_ELEMENT_NAME = "entityBioDemographics"; 701 final static String TYPE_NAME = "EntityBioDemographicsType"; 702 } 703 704 705 /** 706 * A private class which exposes constants which define the XML element names to use when this object is marshalled to XML. 707 * 708 */ 709 static class Elements { 710 711 final static String ENTITY_ID = "entityId"; 712 final static String DECEASED_DATE = "deceasedDate"; 713 final static String BIRTH_DATE = "birthDate"; 714 final static String AGE = "age"; 715 final static String GENDER_CODE = "genderCode"; 716 final static String MARITAL_STATUS_CODE = "maritalStatusCode"; 717 final static String PRIMARY_LANGUAGE_CODE = "primaryLanguageCode"; 718 final static String SECONDARY_LANGUAGE_CODE = "secondaryLanguageCode"; 719 final static String BIRTH_COUNTRY = "birthCountry"; 720 final static String BIRTH_STATE_PROVINCE_CODE = "birthStateProvinceCode"; 721 final static String BIRTH_CITY = "birthCity"; 722 final static String GEOGRAPHIC_ORIGIN = "geographicOrigin"; 723 final static String BIRTH_DATE_UNMASKED = "birthDateUnmasked"; 724 final static String GENDER_CODE_UNMASKED = "genderCodeUnmasked"; 725 final static String MARITAL_STATUS_CODE_UNMASKED = "maritalStatusCodeUnmasked"; 726 final static String PRIMARY_LANGUAGE_CODE_UNMASKED = "primaryLanguageCodeUnmasked"; 727 final static String SECONDARY_LANGUAGE_CODE_UNMASKED = "secondaryLanguageCodeUnmasked"; 728 final static String BIRTH_COUNTRY_UNMASKED = "birthCountryUnmasked"; 729 final static String BIRTH_STATE_PROVINCE_CODE_UNMASKED = "birthStateProvinceCodeUnmasked"; 730 final static String BIRTH_CITY_UNMASKED = "birthCityUnmasked"; 731 final static String GEOGRAPHIC_ORIGIN_UNMASKED = "geographicOriginUnmasked"; 732 final static String GENDER_CHANGE_CODE = "genderChangeCode"; 733 final static String GENDER_CHANGE_CODE_UNMASKED = "genderChangeCodeUnmasked"; 734 final static String NOTE_MESSAGE = "noteMessage"; 735 final static String SUPPRESS_PERSONAL = "suppressPersonal"; 736 737 } 738 739 }