复制器实现应为上一节中描述的三种方法提供实现。这些方法应将动态证据数据转换为适于写入旧数据库表的数据,并为此证据类型更新旧数据库表。
public class SampleForeignResidencyReplicatorImpl
implements SampleForeignResidencyReplicator {
protected SampleForeignResidencyReplicatorImpl() {
}
public void replicateInsertEvidence(
final EvidenceDescriptorDtls evidenceDescriptorDtls)
throws AppException, InformationalException {
SampleForeignResidency sampleForeignResidencyObj =
SampleForeignResidencyFactory.newInstance();
SampleForeignResidencyDtls sampleForeignResidencyDtls =
new SampleForeignResidencyDtls();
UniqueID uniqueIDObj = UniqueIDFactory.newInstance();
EvidenceControllerInterface evidenceControllerObj =
(EvidenceControllerInterface) EvidenceControllerFactory.newInstance();
EIEvidenceKey eiEvidenceKey = new EIEvidenceKey();
eiEvidenceKey.evidenceID = evidenceDescriptorDtls.relatedID;
eiEvidenceKey.evidenceType = evidenceDescriptorDtls.evidenceType;
EIEvidenceReadDtls eiEvidenceReadDtls =
evidenceControllerObj.readEvidence(eiEvidenceKey);
DynamicEvidenceDataDetails dynamicEvidenceDataDetails =
(DynamicEvidenceDataDetails) eiEvidenceReadDtls.evidenceObject;
sampleForeignResidencyDtls.countryCode =
dynamicEvidenceDataDetails.getAttribute("country").getValue();
sampleForeignResidencyDtls.startDate =
(Date) DynamicEvidenceTypeConverter.convert(
dynamicEvidenceDataDetails.getAttribute("fromDate"));
sampleForeignResidencyDtls.endDate =
(Date) DynamicEvidenceTypeConverter.convert(
dynamicEvidenceDataDetails.getAttribute("toDate"));
sampleForeignResidencyDtls.reasonCode =
dynamicEvidenceDataDetails.getAttribute("reason").getValue();
sampleForeignResidencyDtls.concernRoleID = evidenceDescriptorDtls.participantID;
sampleForeignResidencyDtls.foreignResidencyID = uniqueIDObj.getNextID();
sampleForeignResidencyDtls.statusCode = RECORDSTATUS.NORMAL;
sampleForeignResidencyObj.insert(sampleForeignResidencyDtls);
}
public void replicateModifyEvidence(
final EvidenceDescriptorDtls evidenceDescriptorDtls,
final EvidenceDescriptorDtls previousActiveEvidDescriptorDtls)
throws AppException, InformationalException {
List<SampleForeignResidencyKey> sampleForeignResidencyKeyList =
new ArrayList<SampleForeignResidencyKey>();
SampleForeignResidencyDtls sampleForeignResidencyDtls =
new SampleForeignResidencyDtls();
EvidenceControllerInterface evidenceControllerObj =
(EvidenceControllerInterface) EvidenceControllerFactory.newInstance();
EIEvidenceKey eiEvidenceKey = new EIEvidenceKey();
eiEvidenceKey.evidenceID = previousActiveEvidDescriptorDtls.relatedID;
eiEvidenceKey.evidenceType = previousActiveEvidDescriptorDtls.evidenceType;
EIEvidenceReadDtls eiEvidenceReadDtls =
evidenceControllerObj.readEvidence(eiEvidenceKey);
DynamicEvidenceDataDetails dynamicEvidenceDataDetails =
(DynamicEvidenceDataDetails) eiEvidenceReadDtls.evidenceObject;
sampleForeignResidencyDtls.countryCode =
dynamicEvidenceDataDetails.getAttribute("country").getValue();
sampleForeignResidencyDtls.startDate =
(Date) DynamicEvidenceTypeConverter.convert(
dynamicEvidenceDataDetails.getAttribute("fromDate"));
sampleForeignResidencyDtls.endDate =
(Date) DynamicEvidenceTypeConverter.convert(
dynamicEvidenceDataDetails.getAttribute("toDate"));
sampleForeignResidencyDtls.reasonCode =
dynamicEvidenceDataDetails.getAttribute("reason").getValue();
SampleForeignResidency sampleForeignResidencyObj =
SampleForeignResidencyFactory.newInstance();
SampleForeignResidencyReadMultiKey sampleForeignResidencyReadMultiKey =
new SampleForeignResidencyReadMultiKey();
sampleForeignResidencyReadMultiKey.concernRoleID =
previousActiveEvidDescriptorDtls.participantID;
SampleForeignResidencyReadMultiDtlsList sampleForeignResidencyReadMultiDtlsList =
sampleForeignResidencyObj.searchByConcernRole(sampleForeignResidencyReadMultiKey);
for (SampleForeignResidencyReadMultiDtls sampleForeignResidencyReadMultiDtls :
sampleForeignResidencyReadMultiDtlsList.dtls) {
if ((sampleForeignResidencyReadMultiDtls.countryCode.equals(
sampleForeignResidencyDtls.countryCode))
&& (sampleForeignResidencyReadMultiDtls.reasonCode.equals(
sampleForeignResidencyDtls.reasonCode))) {
SampleForeignResidencyKey sampleForeignResidencyKey = new SampleForeignResidencyKey();
sampleForeignResidencyKey.sampleForeignResidencyID =
sampleForeignResidencyReadMultiDtls.sampleForeignResidencyID;
sampleForeignResidencyKeyList.add(sampleForeignResidencyKey);
}
}
for (SampleForeignResidencyKey sampleForeignResidencyKey : sampleForeignResidencyKeyList) {
sampleForeignResidencyDtls = new SampleForeignResidencyDtls();
eiEvidenceKey = new EIEvidenceKey();
eiEvidenceKey.evidenceID = evidenceDescriptorDtls.relatedID;
eiEvidenceKey.evidenceType = evidenceDescriptorDtls.evidenceType;
eiEvidenceReadDtls = evidenceControllerObj.readEvidence(eiEvidenceKey);
dynamicEvidenceDataDetails =
(DynamicEvidenceDataDetails) eiEvidenceReadDtls.evidenceObject;
sampleForeignResidencyDtls.countryCode =
dynamicEvidenceDataDetails.getAttribute("country").getValue();
sampleForeignResidencyDtls.startDate = (Date) DynamicEvidenceTypeConverter.convert(
dynamicEvidenceDataDetails.getAttribute("fromDate"));
sampleForeignResidencyDtls.endDate = (Date) DynamicEvidenceTypeConverter.convert(
dynamicEvidenceDataDetails.getAttribute("toDate"));
sampleForeignResidencyDtls.reasonCode =
dynamicEvidenceDataDetails.getAttribute("reason").getValue();
sampleForeignResidencyDtls.concernRoleID = evidenceDescriptorDtls.participantID;
SampleForeignResidencyDtls sampleForeignResidencyReadDtls =
sampleForeignResidencyObj.read(sampleForeignResidencyKey);
sampleForeignResidencyReadDtls.assign(sampleForeignResidencyDtls);
sampleForeignResidencyObj.modify(sampleForeignResidencyKey, sampleForeignResidencyReadDtls);
}
}
public void replicateRemoveEvidence(
final EvidenceDescriptorDtls evidenceDescriptorDtls)
throws AppException, InformationalException {
List<SampleForeignResidencyKey> sampleForeignResidencyKeyList =
new ArrayList<SampleForeignResidencyKey>();
SampleForeignResidencyDtls sampleForeignResidencyDtls =
new SampleForeignResidencyDtls();
EvidenceControllerInterface evidenceControllerObj =
(EvidenceControllerInterface) EvidenceControllerFactory.newInstance();
EIEvidenceKey eiEvidenceKey = new EIEvidenceKey();
eiEvidenceKey.evidenceID = evidenceDescriptorDtls.relatedID;
eiEvidenceKey.evidenceType = evidenceDescriptorDtls.evidenceType;
EIEvidenceReadDtls eiEvidenceReadDtls =
evidenceControllerObj.readEvidence(eiEvidenceKey);
DynamicEvidenceDataDetails dynamicEvidenceDataDetails =
(DynamicEvidenceDataDetails) eiEvidenceReadDtls.evidenceObject;
sampleForeignResidencyDtls.countryCode =
dynamicEvidenceDataDetails.getAttribute("country").getValue();
sampleForeignResidencyDtls.startDate =
(Date) DynamicEvidenceTypeConverter.convert(
dynamicEvidenceDataDetails.getAttribute("fromDate"));
sampleForeignResidencyDtls.endDate =
(Date) DynamicEvidenceTypeConverter.convert(
dynamicEvidenceDataDetails.getAttribute("toDate"));
sampleForeignResidencyDtls.reasonCode =
dynamicEvidenceDataDetails.getAttribute("reason").getValue();
SampleForeignResidency sampleForeignResidencyObj =
SampleForeignResidencyFactory.newInstance();
SampleForeignResidencyReadMultiKey sampleForeignResidencyReadMultiKey =
new SampleForeignResidencyReadMultiKey();
sampleForeignResidencyReadMultiKey.concernRoleID =
evidenceDescriptorDtls.participantID;
SampleForeignResidencyReadMultiDtlsList sampleForeignResidencyReadMultiDtlsList =
sampleForeignResidencyObj.searchByConcernRole(sampleForeignResidencyReadMultiKey);
for (SampleForeignResidencyReadMultiDtls sampleForeignResidencyReadMultiDtls :
sampleForeignResidencyReadMultiDtlsList.dtls) {
if ((sampleForeignResidencyReadMultiDtls.countryCode.equals(
sampleForeignResidencyDtls.countryCode))
&& (sampleForeignResidencyReadMultiDtls.reasonCode.equals(
sampleForeignResidencyDtls.reasonCode))) {
SampleForeignResidencyKey sampleForeignResidencyKey = new SampleForeignResidencyKey();
sampleForeignResidencyKey.sampleForeignResidencyID =
sampleForeignResidencyReadMultiDtls.sampleForeignResidencyID;
sampleForeignResidencyKeyList.add(sampleForeignResidencyKey);
}
}
for (SampleForeignResidencyKey sampleForeignResidencyKey : sampleForeignResidencyKeyList) {
sampleForeignResidencyDtls = sampleForeignResidencyObj.read(sampleForeignResidencyKey);
sampleForeignResidencyDtls.statusCode = RECORDSTATUS.CANCELLED;
sampleForeignResidencyObj.modify(sampleForeignResidencyKey, sampleForeignResidencyDtls);
}
}
}