Paso 1: Proporcionar una implementación de manejador principal

El primer paso es proporcionar una nueva implementación que implemente la interfaz de manejador primario pertinente para el tipo de pruebas e identifique el registro principal. El fragmento de código siguiente muestra una implementación para PDCPrimaryPhoneNumberHandler. Simplemente toma el número de teléfono con la última fecha de inicio y lo establece como registro principal.

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());  
    }
  }
}