Der erste Schritt besteht aus der Bereitstellung einer neuen Implementierung, die die relevante Primary-Handler-Schnittstelle für den Angabentyp implementiert und den Primärdatensatz identifiziert. Das nachfolgende Code-Snippet veranschaulicht eine Implementierung für PDCPrimaryPhoneNumberHandler: Es sucht einfach die Telefonnummer mit dem spätesten Anfangszeitpunkt (Gültigkeitsbeginn) und legt diese als Primärdatensatz fest.
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());
}
}
}