Step 1: Provide a Primary Handler Implementation

The first step is to provide a new implementation that implements the relevant primary handler interface for the evidence type and identifies the primary record. The code snippet below demonstrates an implementation for PDCPrimaryPhoneNumberHandler, it simply takes the phone number with the latest start date and sets it as the primary record.

public class SamplePrimaryPhoneNumberHandlerImpl 
  implements PDCPrimaryPhoneNumberHandler {

  protected SamplePrimaryPhoneNumberHandlerImpl() {
  }

  public void setPrimaryPhoneNumber(EvidenceDescriptorDtls evidenceDescriptorDtls) 
    throws AppException, InformationalException {

    ConcernRoleKey concernRoleKey = new ConcernRoleKey();
    concernRoleKey.concernRoleID = evidenceDescriptorDtls.participantID;
    
    ConcernRolePhoneNumberDtlsList concernRolePhoneNumberDtlsList = 
      ConcernRolePhoneNumberFactory.newInstance().searchByConcernRole(concernRoleKey);

    ConcernRole concernRoleObj = ConcernRoleFactory.newInstance();
    ConcernRoleDtls concernRoleDtls = concernRoleObj.read(concernRoleKey);
    Date currentPrimaryPhoneNumberStartDate = Date.kZeroDate;

    List<SampleSortedPhoneNumber> list = new ArrayList<SampleSortedPhoneNumber>();
    
    for (ConcernRolePhoneNumberDtls concernRolePhoneNumberDtls:concernRolePhoneNumberDtlsList.dtls) {
    
      PhoneNumberKey phoneNumberKey = new PhoneNumberKey();
      phoneNumberKey.phoneNumberID = concernRolePhoneNumberDtls.phoneNumberID;
      
      if (concernRolePhoneNumberDtls.phoneNumberID == concernRoleDtls.primaryPhoneNumberID) {
        currentPrimaryPhoneNumberStartDate = concernRolePhoneNumberDtls.startDate;
      }
      
      SampleSortedPhoneNumber sampleSortedPhoneNumber = 
        new SampleSortedPhoneNumber(concernRolePhoneNumberDtls);
      list.add(sampleSortedPhoneNumber);
    }    
     
    Collections.sort(list);
      
    SampleSortedPhoneNumber newPrimaryPhoneNumber = list.get(0);

    if (newPrimaryPhoneNumber.getStartDate().after(currentPrimaryPhoneNumberStartDate)) {
      concernRoleDtls.primaryPhoneNumberID = newPrimaryPhoneNumber.getPhoneNumberID();
      concernRoleObj.pdcModify(concernRoleKey, concernRoleDtls);
    }
}
  class SampleSortedPhoneNumber implements Comparable<SampleSortedPhoneNumber> {
    private long phoneNumberID;
    private Date startDate;
    
    SampleSortedPhoneNumber(ConcernRolePhoneNumberDtls dtls) {
      this.phoneNumberID = dtls.phoneNumberID;
      this.startDate = dtls.startDate;
    }
    
    public long getPhoneNumberID() {
      return phoneNumberID;
    }

    public Date getStartDate() {
      return startDate;
    }
    
    public int compareTo(SampleSortedPhoneNumber o) {
      return o.getStartDate().compareTo(this.getStartDate());  
    }
  }
}