Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[MOSIP-34112] Release 1.2.0.x code marge for Bio-dedupes updated flow #1901

Original file line number Diff line number Diff line change
@@ -1,45 +1,49 @@
package io.mosip.registration.processor.biodedupe.constants;

public class BioDedupeConstants {

/** The Constant FILE_SEPARATOR. */
public static final String FILE_SEPARATOR = "\\";

/** The Constant INDIVIDUAL_BIOMETRICS. */
public static final String INDIVIDUAL_BIOMETRICS = "individualBiometrics";

public static final String VALUE = "value";

public static final String CBEFF_PRESENT_IN_PACKET = "Cbeff is present in the packet, destination stage is abis_handler";

public static final String CBEFF_NOT_PRESENT_IN_PACKET = "Cbeff is not present in the packet. This will be sent to manual verification.";

public static final String CBEFF_ABSENT_IN_PACKET = "Cbeff is absent in the packet for child, destination stage is UIN";

public static final String UPDATE_PACKET_BIOMETRIC_NOT_NULL = "Update packet individual biometric not null, destination stage is abis_handler";

public static final String UPDATE_PACKET_BIOMETRIC_NULL = "Update packet individual biometric null, destination stage is UIN";

public static final String ABIS_RESPONSE_NOT_NULL = "ABIS response Details not null, destination stage is Manual_verification";

public static final String ABIS_RESPONSE_NULL = "ABIS response Details null, destination stage is UIN";

public static final String CBEFF_NOT_FOUND = "Cbeff not found for the lost packet";

public static final String APPLICANT_TYPE_CHILD = "Applicant type is child and Cbeff not present returning false";

public static final String APPLICANT_TYPE_ADULT = "Applicant type is adult and Cbeff not present throwing exception";

public static final String LOST_PRE_ABIS_IDENTITIFICATION = "Lost Packet Pre abis identification";

public static final String NO_MATCH_FOUND_FOR_LOST = "No match found, rejecting the lost packet for ";

public static final String FOUND_UIN_IN_BIO_CHECK = "Found a matching UIN in bio check for the lost packet ";

public static final String FOUND_UIN_IN_DEMO_CHECK = "Found a matching UIN in demo check for the lost packet ";

public static final String MULTIPLE_RID_FOUND = "Multiple matched regId found, saving data in manual verification";

/** The Constant INTERNAL_ERROR. */
private static final String INTERNAL_ERROR = "Internal error occurred in bio-dedupe stage while processing for registrationId ";
}
package io.mosip.registration.processor.biodedupe.constants;

public class BioDedupeConstants {

/** The Constant FILE_SEPARATOR. */
public static final String FILE_SEPARATOR = "\\";

/** The Constant INDIVIDUAL_BIOMETRICS. */
public static final String INDIVIDUAL_BIOMETRICS = "individualBiometrics";

public static final String VALUE = "value";

public static final String CBEFF_PRESENT_IN_PACKET = "Cbeff is present in the packet, destination stage is abis_handler";

public static final String CBEFF_NOT_PRESENT_IN_PACKET = "Cbeff is not present in the packet. This will be sent to manual verification.";

public static final String CBEFF_ABSENT_IN_PACKET = "Cbeff is absent in the packet for child, destination stage is UIN";

public static final String UPDATE_PACKET_BIOMETRIC_NOT_NULL = "Update packet individual biometric not null, destination stage is abis_handler";

public static final String UPDATE_PACKET_BIOMETRIC_NULL = "Update packet individual biometric null, destination stage is UIN";

public static final String ABIS_RESPONSE_NOT_NULL = "ABIS response Details not null, destination stage is Manual_verification";

public static final String ABIS_RESPONSE_NULL = "ABIS response Details null, destination stage is UIN";

public static final String CBEFF_NOT_FOUND = "Cbeff not found for the lost packet";

public static final String APPLICANT_TYPE_CHILD = "Applicant type is child and Cbeff not present returning false";

public static final String APPLICANT_TYPE_ADULT = "Applicant type is adult and Cbeff not present throwing exception";

public static final String LOST_PRE_ABIS_IDENTITIFICATION = "Lost Packet Pre abis identification";

public static final String NO_MATCH_FOUND_FOR_LOST = "No match found, rejecting the lost packet for ";

public static final String FOUND_UIN_IN_BIO_CHECK = "Found a matching UIN in bio check for the lost packet ";

public static final String FOUND_UIN_IN_DEMO_CHECK = "Found a matching UIN in demo check for the lost packet ";

public static final String MULTIPLE_RID_FOUND = "Multiple matched regId found, saving data in manual verification";

/** The Constant INTERNAL_ERROR. */
private static final String INTERNAL_ERROR = "Internal error occurred in bio-dedupe stage while processing for registrationId ";

public static final String BIOMETRIC_MATCH_FOUND_WITH_SELF = "Biometric match found successfully, destination stage is UIN";

public static final String BIOMETRIC_MATCH_FOUND_WITH_OTHER = "Biometric match found with other user, rejecting packet for ";
}
Original file line number Diff line number Diff line change
Expand Up @@ -2,9 +2,11 @@

import java.io.IOException;
import java.util.ArrayList;
import java.util.HashSet;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
import java.util.Optional;
import java.util.Set;

import org.apache.commons.lang3.exception.ExceptionUtils;
Expand Down Expand Up @@ -132,6 +134,9 @@ public class BioDedupeProcessor {
@Value("${registration.processor.missing.biometric.verification.enabled:true}")
private boolean missingBiometricVerificationEnabled;

@Value("${registration.processor.biometrics-update.single-match.auto-reject.enabled:false}")
private boolean biometricsUpdateSingleMatchAutoReject;

/** The reg proc logger. */
private static Logger regProcLogger = RegProcessorLogger.getLogger(BioDedupeProcessor.class);

Expand Down Expand Up @@ -180,9 +185,7 @@ public MessageDTO process(MessageDTO object, String stageName) {
newPacketPreAbisIdentification(registrationStatusDto, object);
} else if (packetStatus.equalsIgnoreCase(AbisConstant.POST_ABIS_IDENTIFICATION)) {
postAbisIdentification(registrationStatusDto, object, registrationType);

}

} else if (registrationType.equalsIgnoreCase(SyncTypeDto.UPDATE.toString())
|| registrationType.equalsIgnoreCase(SyncTypeDto.RES_UPDATE.toString())) {
String packetStatus = abisHandlerUtil.getPacketStatus(registrationStatusDto);
Expand Down Expand Up @@ -435,24 +438,99 @@ private void postAbisIdentification(InternalRegistrationStatusDto registrationSt
registrationStatusDto.getRegistrationId(), BioDedupeConstants.ABIS_RESPONSE_NULL);

} else {
registrationStatusDto.setStatusCode(RegistrationStatusCode.FAILED.name());
registrationStatusDto.setStatusComment(StatusUtil.BIO_DEDUPE_POTENTIAL_MATCH.getMessage());
registrationStatusDto.setSubStatusCode(StatusUtil.BIO_DEDUPE_POTENTIAL_MATCH.getCode());
registrationStatusDto.setLatestTransactionStatusCode(RegistrationTransactionStatusCode.FAILED.toString());
moduleId = PlatformSuccessMessages.RPR_BIO_METRIC_POTENTIAL_MATCH.getCode();
packetInfoManager.saveManualAdjudicationData(matchedRegIds, object,
DedupeSourceName.BIO, moduleId, moduleName,null,null);
//send message to manual adjudication
object.setInternalError(Boolean.FALSE);
object.setRid(registrationStatusDto.getRegistrationId());
object.setIsValid(Boolean.TRUE);
object.setReg_type(registrationType);
object.setMessageBusAddress(MessageBusAddress.MANUAL_ADJUDICATION_BUS_IN);

regProcLogger.info(LoggerFileConstant.SESSIONID.toString(), LoggerFileConstant.REGISTRATIONID.toString(),
if (registrationType.equalsIgnoreCase(RegistrationType.UPDATE.name())) {
updatePostAbisIdentification(registrationStatusDto, object, registrationType, moduleName,
matchedRegIds);
}else {
sendToManualAdjudicationStage(registrationStatusDto, object, registrationType, moduleName, matchedRegIds);
regProcLogger.info(LoggerFileConstant.SESSIONID.toString(), LoggerFileConstant.REGISTRATIONID.toString(),
registrationStatusDto.getRegistrationId(), BioDedupeConstants.ABIS_RESPONSE_NOT_NULL);
}
}
}

private void updatePostAbisIdentification(InternalRegistrationStatusDto registrationStatusDto, MessageDTO object,
vishwa-vyom marked this conversation as resolved.
Show resolved Hide resolved
String registrationType, String moduleName, Set<String> matchedRegIds)
throws IOException, ApisResourceAccessException, PacketManagerException, JsonProcessingException {
Set<String> uniqueUins = new HashSet<String>();
boolean sendToManualAdjudication = false;
for(String matchedRegistrationId:matchedRegIds) {
String uin = idRepoService.getUinByRid(matchedRegistrationId, utilities.getGetRegProcessorDemographicIdentity());
// TODO need to check this condition is necessary
if (StringUtils.isEmpty(uin)) {
InternalRegistrationStatusDto matchedRegistrationStatusDto = registrationStatusService
.getRegistrationStatus(matchedRegistrationId, null, null, null);
if (matchedRegistrationStatusDto.getStatusCode()
.equals(RegistrationStatusCode.PROCESSING.name())) {
sendToManualAdjudication = true;
break;
}
} else {
uniqueUins.add(uin);
}
}
regProcLogger.info(LoggerFileConstant.SESSIONID.toString(),
LoggerFileConstant.REGISTRATIONID.toString(), registrationStatusDto.getRegistrationId(),
"sendToManualAdjudication : " + sendToManualAdjudication + " ::uniqueUins count : " + uniqueUins.size() +
" ::biometricsUpdateSingleMatchAutoReject : " + biometricsUpdateSingleMatchAutoReject);
if (sendToManualAdjudication || uniqueUins.size() > 1) {
sendToManualAdjudicationStage(registrationStatusDto, object, registrationType, moduleName,
matchedRegIds);
} else {
Optional<String> optionalMatchedUin = uniqueUins.stream().findFirst();
String matchedUIN = optionalMatchedUin.get();
String updateUin = utilities.getUIn(registrationStatusDto.getRegistrationId(), registrationType,
ProviderStageName.BIO_AUTH);
if (StringUtils.equals(matchedUIN, updateUin)) {
registrationStatusDto
.setLatestTransactionStatusCode(RegistrationTransactionStatusCode.SUCCESS.toString());
object.setIsValid(Boolean.TRUE);
registrationStatusDto.setStatusCode(RegistrationStatusCode.PROCESSING.name());
registrationStatusDto.setStatusComment(StatusUtil.BIO_DEDUPE_SUCCESS.getMessage());
registrationStatusDto.setSubStatusCode(StatusUtil.BIO_DEDUPE_SUCCESS.getCode());
regProcLogger.info(LoggerFileConstant.SESSIONID.toString(),
LoggerFileConstant.REGISTRATIONID.toString(), registrationStatusDto.getRegistrationId(),
BioDedupeConstants.BIOMETRIC_MATCH_FOUND_WITH_SELF);
} else {
if (biometricsUpdateSingleMatchAutoReject) {
registrationStatusDto.setLatestTransactionStatusCode(
RegistrationTransactionStatusCode.FAILED.toString());
object.setIsValid(Boolean.FALSE);
registrationStatusDto.setStatusCode(RegistrationStatusCode.REJECTED.name());
registrationStatusDto
.setStatusComment(StatusUtil. UPDATE_PACKET_BIOMETRICS_MATCHED_WITH_OTHER.getMessage());
registrationStatusDto
.setSubStatusCode(StatusUtil. UPDATE_PACKET_BIOMETRICS_MATCHED_WITH_OTHER.getCode());
regProcLogger.info(LoggerFileConstant.SESSIONID.toString(),
LoggerFileConstant.REGISTRATIONID.toString(),
registrationStatusDto.getRegistrationId(),
BioDedupeConstants.BIOMETRIC_MATCH_FOUND_WITH_OTHER
+ registrationStatusDto.getRegistrationId());
} else {
sendToManualAdjudicationStage(registrationStatusDto, object, registrationType, moduleName,
matchedRegIds);
}

}
}
}

private void sendToManualAdjudicationStage(InternalRegistrationStatusDto registrationStatusDto, MessageDTO object,
String registrationType, String moduleName, Set<String> matchedRegIds) {
String moduleId;
registrationStatusDto.setStatusCode(RegistrationStatusCode.FAILED.name());
registrationStatusDto.setStatusComment(StatusUtil.BIO_DEDUPE_POTENTIAL_MATCH.getMessage());
registrationStatusDto.setSubStatusCode(StatusUtil.BIO_DEDUPE_POTENTIAL_MATCH.getCode());
registrationStatusDto.setLatestTransactionStatusCode(RegistrationTransactionStatusCode.FAILED.toString());
moduleId = PlatformSuccessMessages.RPR_BIO_METRIC_POTENTIAL_MATCH.getCode();
packetInfoManager.saveManualAdjudicationData(matchedRegIds, object,
DedupeSourceName.BIO, moduleId, moduleName,null,null);
//send message to manual adjudication
object.setInternalError(Boolean.FALSE);
object.setRid(registrationStatusDto.getRegistrationId());
object.setIsValid(Boolean.TRUE);
object.setReg_type(registrationType);
object.setMessageBusAddress(MessageBusAddress.MANUAL_ADJUDICATION_BUS_IN);
}

/**
Expand Down
Loading
Loading