Step 1: Provide a Converter Implementation

The code snippet below demonstrates the implementation for the PDCConverter. It retrieves all Sample Foreign Residency information for a person/prospect person from the legacy SampleForeignResidency table, converts this information to a dynamic evidence data structure and stores the resulting information.

public class SampleForeignResidencyConverterImpl 
  implements PDCConverter {

  @Inject
  private EvidenceTypeDefDAO etDefDAO;

  @Inject
  private EvidenceTypeVersionDefDAO etVerDefDAO;

  public void storeEvidence(ConcernRoleKey concernRoleKey, CaseIDKey caseIDKey)
    throws AppException, InformationalException {

    PDCCaseIDCaseParticipantRoleID pdcCaseIDCaseParticipantRoleID = 
      new PDCCaseIDCaseParticipantRoleID();

    ParticipantDataCase participantDataCaseObj = ParticipantDataCaseFactory.newInstance();     
    pdcCaseIDCaseParticipantRoleID.caseID = 
      participantDataCaseObj.getParticipantDataCase(concernRoleKey).caseID;

    CaseIDTypeCodeKey caseIDTypeCodeKey = new CaseIDTypeCodeKey();
    caseIDTypeCodeKey.caseID = pdcCaseIDCaseParticipantRoleID.caseID;
    caseIDTypeCodeKey.typeCode = CASEPARTICIPANTROLETYPE.PRIMARY;

    pdcCaseIDCaseParticipantRoleID.caseParticipantRoleID = 
      CaseParticipantRoleFactory.newInstance().readByCaseIDAndTypeCode(caseIDTypeCodeKey).dtls.caseParticipantRoleID;    

    SampleForeignResidency sampleForeignResidencyObj = SampleForeignResidencyFactory.newInstance();

    SampleForeignResidencyReadMultiKey sampleForeignResidencyReadMultiKey = 
      new SampleForeignResidencyReadMultiKey();
    sampleForeignResidencyReadMultiKey.concernRoleID = concernRoleKey.concernRoleID;

    SampleForeignResidencyReadMultiDtlsList sampleForeignResidencyList = 
      sampleForeignResidencyObj.searchByConcernRole(sampleForeignResidencyReadMultiKey);

	  for (SampleForeignResidencyReadMultiDtls sampleForeignResidencyReadMultiDtls : sampleForeignResidencyList.dtls) {

      final EvidenceTypeKey eType = new EvidenceTypeKey();
      eType.evidenceType = "SampleForeignResidency";

      EvidenceTypeDef evidenceType = 
        etDefDAO.readActiveEvidenceTypeDefByTypeCode(eType.evidenceType);

      EvidenceTypeVersionDef evTypeVersion = 
        etVerDefDAO.getActiveEvidenceTypeVersionAtDate(evidenceType, Date.getCurrentDate());

      DynamicEvidenceDataDetails dynamicEvidenceDataDetails = 
        DynamicEvidenceDataDetailsFactory.newInstance(evTypeVersion);

      DynamicEvidenceDataAttributeDetails participant = 
        dynamicEvidenceDataDetails.getAttribute("participant");

      DynamicEvidenceTypeConverter.setAttribute(participant,
        pdcCaseIDCaseParticipantRoleID.caseParticipantRoleID);

      DynamicEvidenceDataAttributeDetails country = 
        dynamicEvidenceDataDetails.getAttribute("country");

      DynamicEvidenceTypeConverter.setAttribute(country,
        sampleForeignResidencyReadMultiDtls.countryCode);

      DynamicEvidenceDataAttributeDetails fromDate = 
        dynamicEvidenceDataDetails.getAttribute("fromDate");

      DynamicEvidenceTypeConverter.setAttribute(fromDate, sampleForeignResidencyReadMultiDtls.startDate);

      DynamicEvidenceDataAttributeDetails endDate = 
        dynamicEvidenceDataDetails.getAttribute("toDate");

      DynamicEvidenceTypeConverter.setAttribute(endDate, sampleForeignResidencyReadMultiDtls.endDate);

      DynamicEvidenceDataAttributeDetails reasonCode = 
        dynamicEvidenceDataDetails.getAttribute("reason");

      DynamicEvidenceTypeConverter.setAttribute(reasonCode, sampleForeignResidencyReadMultiDtls.reasonCode);

      EvidenceControllerInterface evidenceControllerObj = 
        (EvidenceControllerInterface) EvidenceControllerFactory.newInstance();

      EvidenceDescriptorInsertDtls evidenceDescriptorInsertDtls = new EvidenceDescriptorInsertDtls();
      evidenceDescriptorInsertDtls.participantID = concernRoleKey.concernRoleID;
      evidenceDescriptorInsertDtls.evidenceType = eType.evidenceType;
      evidenceDescriptorInsertDtls.receivedDate = curam.util.type.Date.getCurrentDate();
      evidenceDescriptorInsertDtls.caseID = pdcCaseIDCaseParticipantRoleID.caseID;

      EIEvidenceInsertDtls eiEvidenceInsertDtls = new EIEvidenceInsertDtls();

      eiEvidenceInsertDtls.descriptor.assign(evidenceDescriptorInsertDtls);
      eiEvidenceInsertDtls.descriptor.participantID = concernRoleKey.concernRoleID;
      eiEvidenceInsertDtls.descriptor.changeReason = EVIDENCECHANGEREASON.REPORTEDBYCLIENT;
      eiEvidenceInsertDtls.evidenceObject = dynamicEvidenceDataDetails;

      evidenceControllerObj.insertEvidence(eiEvidenceInsertDtls);
    }
  }
}