From 3a04665b8d61484899a52144ec4e01a8d642c61e Mon Sep 17 00:00:00 2001 From: nagarjunakuchi Date: Thu, 20 Apr 2023 05:34:17 +0530 Subject: [PATCH] Added biometrics --- .../mosip/resident/dto/ResidentUpdateDto.java | 4 + .../dto/ResidentUpdateRequestDto.java | 3 + .../service/ResidentUpdateService.java | 69 +++--- .../service/impl/ResidentServiceImpl.java | 197 ++++++++++++------ 4 files changed, 169 insertions(+), 104 deletions(-) diff --git a/resident/resident-service/src/main/java/io/mosip/resident/dto/ResidentUpdateDto.java b/resident/resident-service/src/main/java/io/mosip/resident/dto/ResidentUpdateDto.java index 7e5f351d628..20e584d9aa4 100644 --- a/resident/resident-service/src/main/java/io/mosip/resident/dto/ResidentUpdateDto.java +++ b/resident/resident-service/src/main/java/io/mosip/resident/dto/ResidentUpdateDto.java @@ -1,6 +1,8 @@ package io.mosip.resident.dto; import com.fasterxml.jackson.annotation.JsonIgnore; + +import io.mosip.kernel.biometrics.entities.BiometricRecord; import lombok.AllArgsConstructor; import lombok.Data; import lombok.NoArgsConstructor; @@ -8,6 +10,7 @@ import javax.validation.constraints.NotBlank; import javax.validation.constraints.NotNull; import java.io.Serializable; +import java.util.Map; /** * @@ -44,5 +47,6 @@ public class ResidentUpdateDto implements Serializable { private String proofOfIdentity; private String proofOfRelationship; private String proofOfDateOfBirth; + private Map bios; } diff --git a/resident/resident-service/src/main/java/io/mosip/resident/dto/ResidentUpdateRequestDto.java b/resident/resident-service/src/main/java/io/mosip/resident/dto/ResidentUpdateRequestDto.java index 5806152d51f..b63ff554125 100644 --- a/resident/resident-service/src/main/java/io/mosip/resident/dto/ResidentUpdateRequestDto.java +++ b/resident/resident-service/src/main/java/io/mosip/resident/dto/ResidentUpdateRequestDto.java @@ -24,6 +24,9 @@ public class ResidentUpdateRequestDto { private String otp; private String identityJson; + private List documents; + + private String individualBiometrics; } diff --git a/resident/resident-service/src/main/java/io/mosip/resident/handler/service/ResidentUpdateService.java b/resident/resident-service/src/main/java/io/mosip/resident/handler/service/ResidentUpdateService.java index 53e6bac3708..4a5223e3759 100644 --- a/resident/resident-service/src/main/java/io/mosip/resident/handler/service/ResidentUpdateService.java +++ b/resident/resident-service/src/main/java/io/mosip/resident/handler/service/ResidentUpdateService.java @@ -91,7 +91,7 @@ public class ResidentUpdateService { @Autowired private Utilities utilities; - + @Autowired AuditUtil audit; @@ -105,16 +105,17 @@ public class ResidentUpdateService { private static final String VALUE = "value"; public PacketGeneratorResDto createPacket(ResidentUpdateDto request) throws BaseCheckedException, IOException { - logger.debug(LoggerFileConstant.SESSIONID.toString(), LoggerFileConstant.UIN.toString(), - request.getIdValue(), "ResidentUpdateServiceImpl::createPacket()"); + logger.debug(LoggerFileConstant.SESSIONID.toString(), LoggerFileConstant.UIN.toString(), request.getIdValue(), + "ResidentUpdateServiceImpl::createPacket()"); byte[] packetZipBytes = null; audit.setAuditRequestDto(EventEnum.CREATE_PACKET); PackerGeneratorFailureDto dto = new PackerGeneratorFailureDto(); - if (validator.isValidCenter(request.getCenterId()) - && request.getIdType().equals(ResidentIndividialIDType.UIN) - ? validator.isValidRegistrationTypeAndUin(RegistrationType.RES_UPDATE.toString(), - request.getIdValue()) - : validator.isValidVid(request.getIdValue())) { +// if (validator.isValidCenter(request.getCenterId()) +// && request.getIdType().equals(ResidentIndividialIDType.UIN) +// ? validator.isValidRegistrationTypeAndUin(RegistrationType.RES_UPDATE.toString(), +// request.getIdValue()) +// : validator.isValidVid(request.getIdValue())) { + if (validator.isValidCenter(request.getCenterId())) { logger.debug(LoggerFileConstant.SESSIONID.toString(), LoggerFileConstant.UIN.toString(), request.getIdValue(), @@ -130,7 +131,8 @@ public PacketGeneratorResDto createPacket(ResidentUpdateDto request) throws Base fields.keySet().forEach(key -> { try { - idMap.put(key, fields.get(key) != null ? JsonUtils.javaObjectToJsonString(fields.get(key)) : null); + idMap.put(key, + fields.get(key) != null ? JsonUtils.javaObjectToJsonString(fields.get(key)) : null); } catch (JsonProcessingException e) { throw new BaseUncheckedException(ResidentErrorCode.JSON_PROCESSING_EXCEPTION.getErrorCode(), ResidentErrorCode.JSON_PROCESSING_EXCEPTION.getErrorMessage(), e); @@ -144,32 +146,33 @@ public PacketGeneratorResDto createPacket(ResidentUpdateDto request) throws Base if (request.getProofOfDateOfBirth() != null && !request.getProofOfDateOfBirth().isEmpty()) setDemographicDocuments(request.getProofOfAddress(), demoJsonObject, PROOF_OF_DOB, map); if (request.getProofOfRelationship() != null && !request.getProofOfRelationship().isEmpty()) - setDemographicDocuments(request.getProofOfAddress(), demoJsonObject, PROOF_OF_RELATIONSHIP, - map); + setDemographicDocuments(request.getProofOfAddress(), demoJsonObject, PROOF_OF_RELATIONSHIP, map); if (request.getProofOfIdentity() != null && !request.getProofOfIdentity().isEmpty()) setDemographicDocuments(request.getProofOfAddress(), demoJsonObject, PROOF_OF_IDENTITY, map); PacketDto packetDto = new PacketDto(); packetDto.setId(generateRegistrationId(request.getCenterId(), request.getMachineId())); packetDto.setSource(utilities.getDefaultSource()); - packetDto.setProcess(RegistrationType.RES_UPDATE.toString()); + packetDto.setProcess(RegistrationType.NEW.toString()); packetDto.setSchemaVersion(idschemaVersion); packetDto.setSchemaJson(idSchemaUtil.getIdSchema(Double.valueOf(idschemaVersion))); packetDto.setFields(idMap); packetDto.setDocuments(map); - packetDto.setMetaInfo(getRegistrationMetaData(request.getIdValue(), - request.getRequestType().toString(), request.getCenterId(), request.getMachineId())); + packetDto.setMetaInfo(getRegistrationMetaData(request.getIdValue(), request.getRequestType().toString(), + request.getCenterId(), request.getMachineId())); packetDto.setAudits(utilities.generateAudit(packetDto.getId())); packetDto.setOfflineMode(false); packetDto.setRefId(request.getCenterId() + "_" + request.getMachineId()); + packetDto.setBiometrics(request.getBios()); List packetInfos = packetWriter.createPacket(packetDto); if (CollectionUtils.isEmpty(packetInfos) || packetInfos.iterator().next().getId() == null) - throw new PacketCreatorException(ResidentErrorCode.PACKET_CREATION_EXCEPTION.getErrorCode(), ResidentErrorCode.PACKET_CREATION_EXCEPTION.getErrorMessage()); + throw new PacketCreatorException(ResidentErrorCode.PACKET_CREATION_EXCEPTION.getErrorCode(), + ResidentErrorCode.PACKET_CREATION_EXCEPTION.getErrorMessage()); - file = new File(env.getProperty("object.store.base.location") - + File.separator + env.getProperty("packet.manager.account.name") - + File.separator + packetInfos.iterator().next().getId() + ".zip"); + file = new File(env.getProperty("object.store.base.location") + File.separator + + env.getProperty("packet.manager.account.name") + File.separator + + packetInfos.iterator().next().getId() + ".zip"); FileInputStream fis = new FileInputStream(file); @@ -177,23 +180,19 @@ public PacketGeneratorResDto createPacket(ResidentUpdateDto request) throws Base String creationTime = DateUtils.formatToISOString(LocalDateTime.now()); - logger.debug(LoggerFileConstant.SESSIONID.toString(), - LoggerFileConstant.REGISTRATIONID.toString(), packetDto.getId(), + logger.debug(LoggerFileConstant.SESSIONID.toString(), LoggerFileConstant.REGISTRATIONID.toString(), + packetDto.getId(), "ResidentUpdateServiceImpl::createPacket()::packet created and sent for sync service"); PacketGeneratorResDto packerGeneratorResDto = syncUploadEncryptionService.uploadUinPacket( - packetDto.getId(), creationTime, request.getRequestType().toString(), - packetZipBytes); + packetDto.getId(), creationTime, request.getRequestType().toString(), packetZipBytes); - logger.debug(LoggerFileConstant.SESSIONID.toString(), - LoggerFileConstant.REGISTRATIONID.toString(), packetDto.getId(), - "ResidentUpdateServiceImpl::createPacket()::packet synched and uploaded"); + logger.debug(LoggerFileConstant.SESSIONID.toString(), LoggerFileConstant.REGISTRATIONID.toString(), + packetDto.getId(), "ResidentUpdateServiceImpl::createPacket()::packet synched and uploaded"); return packerGeneratorResDto; } catch (Exception e) { - logger.error(LoggerFileConstant.SESSIONID.toString(), - LoggerFileConstant.REGISTRATIONID.toString(), - ResidentErrorCode.BASE_EXCEPTION.getErrorMessage(), - ExceptionUtils.getStackTrace(e)); + logger.error(LoggerFileConstant.SESSIONID.toString(), LoggerFileConstant.REGISTRATIONID.toString(), + ResidentErrorCode.BASE_EXCEPTION.getErrorMessage(), ExceptionUtils.getStackTrace(e)); if (e instanceof BaseCheckedException) { throw (BaseCheckedException) e; } @@ -225,7 +224,7 @@ private void setDemographicDocuments(String documentBytes, JSONObject demoJsonOb } private Map getRegistrationMetaData(String registrationType, String uin, String centerId, - String machineId) throws JsonProcessingException { + String machineId) throws JsonProcessingException { Map metadata = new HashMap<>(); @@ -263,22 +262,20 @@ private String generateRegistrationId(String centerId, String machineId) throws JSONObject ridJson; try { - logger.debug(LoggerFileConstant.SESSIONID.toString(), LoggerFileConstant.REGISTRATIONID.toString(), - "", "PacketGeneratorServiceImpl::generateRegistrationId():: RIDgeneration Api call started"); + logger.debug(LoggerFileConstant.SESSIONID.toString(), LoggerFileConstant.REGISTRATIONID.toString(), "", + "PacketGeneratorServiceImpl::generateRegistrationId():: RIDgeneration Api call started"); responseWrapper = (ResponseWrapper) restClientService.getApi(ApiName.RIDGENERATION, pathsegments, "", "", ResponseWrapper.class); if (CollectionUtils.isEmpty(responseWrapper.getErrors())) { ridJson = mapper.readValue(mapper.writeValueAsString(responseWrapper.getResponse()), JSONObject.class); - logger.debug(LoggerFileConstant.SESSIONID.toString(), - LoggerFileConstant.REGISTRATIONID.toString(), "", + logger.debug(LoggerFileConstant.SESSIONID.toString(), LoggerFileConstant.REGISTRATIONID.toString(), "", "\"PacketGeneratorServiceImpl::generateRegistrationId():: RIDgeneration Api call ended with response data : " + JsonUtil.objectMapperObjectToJson(ridJson)); rid = (String) ridJson.get("rid"); } else { List error = responseWrapper.getErrors(); - logger.debug(LoggerFileConstant.SESSIONID.toString(), - LoggerFileConstant.REGISTRATIONID.toString(), "", + logger.debug(LoggerFileConstant.SESSIONID.toString(), LoggerFileConstant.REGISTRATIONID.toString(), "", "\"PacketGeneratorServiceImpl::generateRegistrationId():: RIDgeneration Api call ended with response data : " + error.get(0).getMessage()); throw new BaseCheckedException(ResidentErrorCode.BASE_EXCEPTION.getErrorCode(), diff --git a/resident/resident-service/src/main/java/io/mosip/resident/service/impl/ResidentServiceImpl.java b/resident/resident-service/src/main/java/io/mosip/resident/service/impl/ResidentServiceImpl.java index 63739e82fdc..be0bd4cf2e8 100644 --- a/resident/resident-service/src/main/java/io/mosip/resident/service/impl/ResidentServiceImpl.java +++ b/resident/resident-service/src/main/java/io/mosip/resident/service/impl/ResidentServiceImpl.java @@ -1,5 +1,8 @@ package io.mosip.resident.service.impl; +import io.mosip.kernel.biometrics.entities.BIR; +import io.mosip.kernel.biometrics.entities.BiometricRecord; +import io.mosip.kernel.biometrics.spi.CbeffUtil; import io.mosip.kernel.core.exception.BaseCheckedException; import io.mosip.kernel.core.logger.spi.Logger; import io.mosip.kernel.core.util.CryptoUtil; @@ -77,11 +80,11 @@ public class ResidentServiceImpl implements ResidentService { @Autowired private Utilitiy utility; - @Autowired - private Utilities utilities; + @Autowired + private Utilities utilities; - @Value("${resident.center.id}") - private String centerId; + @Value("${resident.center.id}") + private String centerId; @Value("${resident.machine.id}") private String machineId; @@ -98,6 +101,10 @@ public class ResidentServiceImpl implements ResidentService { @Autowired private AuditUtil audit; + /** The cbeff util. */ + @Autowired + protected CbeffUtil cbeffUtil; + @Override public RegStatusCheckResponseDTO getRidStatus(RequestDTO request) { logger.debug(LoggerFileConstant.SESSIONID.toString(), LoggerFileConstant.APPLICATIONID.toString(), @@ -377,7 +384,7 @@ public ResponseDTO reqAauthTypeStatusUpdate(AuthLockOrUnLockRequestDto dto, Auth dto.getTransactionID(), "Request for auth " + authTypeStatus.toString().toLowerCase())); Long unlockForSeconds = null; if (authTypeStatus.equals(AuthTypeStatus.UNLOCK)) { - AuthUnLockRequestDTO authUnLockRequestDTO=(AuthUnLockRequestDTO) dto; + AuthUnLockRequestDTO authUnLockRequestDTO = (AuthUnLockRequestDTO) dto; unlockForSeconds = Long.parseLong(authUnLockRequestDTO.getUnlockForSeconds()); } boolean isAuthTypeStatusUpdated = idAuthService.authTypeStatusUpdate(dto.getIndividualId(), @@ -544,24 +551,26 @@ public ResidentUpdateResponseDTO reqUinUpdate(ResidentUpdateRequestDto dto) thro try { audit.setAuditRequestDto(EventEnum.getEventEnumWithValue(EventEnum.VALIDATE_OTP, dto.getTransactionID(), "Request for UIN update")); - if (!idAuthService.validateOtp(dto.getTransactionID(), dto.getIndividualId(), dto.getOtp())) { - audit.setAuditRequestDto(EventEnum.getEventEnumWithValue(EventEnum.OTP_VALIDATION_FAILED, - dto.getTransactionID(), "Request for UIN update")); - sendNotification(dto.getIndividualId(), NotificationTemplateCode.RS_UIN_UPDATE_FAILURE, null); - audit.setAuditRequestDto(EventEnum.getEventEnumWithValue(EventEnum.SEND_NOTIFICATION_FAILURE, - dto.getTransactionID(), "Request for UIN update")); - throw new ResidentServiceException(ResidentErrorCode.OTP_VALIDATION_FAILED.getErrorCode(), - ResidentErrorCode.OTP_VALIDATION_FAILED.getErrorMessage()); - } +// if (!idAuthService.validateOtp(dto.getTransactionID(), dto.getIndividualId(), dto.getOtp())) { +// audit.setAuditRequestDto(EventEnum.getEventEnumWithValue(EventEnum.OTP_VALIDATION_FAILED, +// dto.getTransactionID(), "Request for UIN update")); +// sendNotification(dto.getIndividualId(), NotificationTemplateCode.RS_UIN_UPDATE_FAILURE, null); +// audit.setAuditRequestDto(EventEnum.getEventEnumWithValue(EventEnum.SEND_NOTIFICATION_FAILURE, +// dto.getTransactionID(), "Request for UIN update")); +// throw new ResidentServiceException(ResidentErrorCode.OTP_VALIDATION_FAILED.getErrorCode(), +// ResidentErrorCode.OTP_VALIDATION_FAILED.getErrorMessage()); +// } audit.setAuditRequestDto(EventEnum.getEventEnumWithValue(EventEnum.VALIDATE_OTP_SUCCESS, dto.getTransactionID(), "Request for UIN update")); - final String publicKey = getPublicKeyFromKeyManager(); - MachineSearchResponseDTO machineSearchResponseDTO = searchMachineInMasterService(residentMachinePrefix, publicKey); - String machineId = getMachineId(machineSearchResponseDTO, publicKey); - if (machineId == null) { - machineId = createNewMachineInMasterService(residentMachinePrefix, machineSpecId, zoneCode, centerId, publicKey); - } + final String publicKey = getPublicKeyFromKeyManager(); + MachineSearchResponseDTO machineSearchResponseDTO = searchMachineInMasterService(residentMachinePrefix, + publicKey); + String machineId = getMachineId(machineSearchResponseDTO, publicKey); + if (machineId == null) { + machineId = createNewMachineInMasterService(residentMachinePrefix, machineSpecId, zoneCode, centerId, + publicKey); + } ResidentUpdateDto regProcReqUpdateDto = new ResidentUpdateDto(); regProcReqUpdateDto.setIdValue(dto.getIndividualId()); @@ -581,9 +590,16 @@ public ResidentUpdateResponseDTO reqUinUpdate(ResidentUpdateRequestDto dto) thro throw new ResidentServiceException(ResidentErrorCode.JSON_PROCESSING_EXCEPTION.getErrorCode(), ResidentErrorCode.JSON_PROCESSING_EXCEPTION.getErrorMessage()); } + Map bios = null; + try { + bios = addBiometricDocuments(dto.getIndividualBiometrics()); + }catch (Exception e) { + // TODO: handle exception + } + JSONObject mappingJsonObject = JsonUtil.readValue(mappingJson, JSONObject.class); - validateAuthIndividualIdWithUIN(dto.getIndividualId(), dto.getIndividualIdType(), - mappingJsonObject, demographicIdentity); + validateAuthIndividualIdWithUIN(dto.getIndividualId(), dto.getIndividualIdType(), mappingJsonObject, + demographicIdentity); JSONObject mappingDocument = JsonUtil.getJSONObject(mappingJsonObject, DOCUMENT); String poaMapping = getDocumentName(mappingDocument, PROOF_OF_ADDRESS); String poiMapping = getDocumentName(mappingDocument, PROOF_OF_IDENTITY); @@ -597,6 +613,7 @@ public ResidentUpdateResponseDTO reqUinUpdate(ResidentUpdateRequestDto dto) thro regProcReqUpdateDto.setProofOfRelationship(getDocumentValue(proofOfrelationJson, documents)); JSONObject proofOfBirthJson = JsonUtil.getJSONObject(demographicIdentity, pobMapping); regProcReqUpdateDto.setProofOfDateOfBirth(getDocumentValue(proofOfBirthJson, documents)); + regProcReqUpdateDto.setBios(bios); PacketGeneratorResDto response = residentUpdateService.createPacket(regProcReqUpdateDto); Map additionalAttributes = new HashMap<>(); @@ -671,6 +688,28 @@ public ResidentUpdateResponseDTO reqUinUpdate(ResidentUpdateRequestDto dto) thro return responseDto; } + private Map addBiometricDocuments(String individualBiometrics) throws Exception { + Map bioValues = new HashMap(); + BiometricRecord biometricRecord = new BiometricRecord(); + byte[] data = CryptoUtil.decodeURLSafeBase64(individualBiometrics); + try { + cbeffUtil.validateXML(data); + List birs = cbeffUtil.getBIRDataFromXML(data); + for (BIR bir : birs) { + biometricRecord.setBirInfo(bir.getBirInfo()); + biometricRecord.setCbeffversion(bir.getCbeffversion()); + biometricRecord.setSegments(bir.getBirs()); + biometricRecord.setVersion(bir.getVersion()); + biometricRecord.setOthers(bir.getOthers()); + bioValues.put(bir.getBdbInfo().getType().toString(), biometricRecord); + } + + } catch (Exception e) { + throw e; + } + return bioValues; + } + // get name of document private String getDocumentName(JSONObject identityJson, String name) { JSONObject docJson = JsonUtil.getJSONObject(identityJson, name); @@ -706,22 +745,30 @@ private IdType getIdType(String individualType) { } private String getPublicKeyFromKeyManager() throws ApisResourceAccessException { - PacketSignPublicKeyRequestDTO signKeyRequestDto = PacketSignPublicKeyRequestDTO.builder().request(PacketSignPublicKeyRequestDTO.PacketSignPublicKeyRequest.builder().serverProfile(SERVER_PROFILE_SIGN_KEY).build()).build(); + PacketSignPublicKeyRequestDTO signKeyRequestDto = PacketSignPublicKeyRequestDTO.builder() + .request(PacketSignPublicKeyRequestDTO.PacketSignPublicKeyRequest.builder() + .serverProfile(SERVER_PROFILE_SIGN_KEY).build()) + .build(); PacketSignPublicKeyResponseDTO signKeyResponseDTO; try { HttpEntity httpEntity = new HttpEntity<>(signKeyRequestDto); - signKeyResponseDTO = residentServiceRestClient.postApi(env.getProperty(ApiName.PACKETSIGNPUBLICKEY.name()), MediaType.APPLICATION_JSON, httpEntity, PacketSignPublicKeyResponseDTO.class); - logger.debug(LoggerFileConstant.SESSIONID.toString(), LoggerFileConstant.USERID.toString(), SERVER_PROFILE_SIGN_KEY, + signKeyResponseDTO = residentServiceRestClient.postApi(env.getProperty(ApiName.PACKETSIGNPUBLICKEY.name()), + MediaType.APPLICATION_JSON, httpEntity, PacketSignPublicKeyResponseDTO.class); + logger.debug(LoggerFileConstant.SESSIONID.toString(), LoggerFileConstant.USERID.toString(), + SERVER_PROFILE_SIGN_KEY, "ResidentServiceImpl::reqUinUpdate():: PACKETSIGNPUBLICKEY POST service call ended with response data " + signKeyResponseDTO.toString()); if (signKeyResponseDTO.getErrors() != null && !signKeyResponseDTO.getErrors().isEmpty()) { - throw new ResidentServiceTPMSignKeyException(signKeyResponseDTO.getErrors().get(0).getErrorCode(), signKeyResponseDTO.getErrors().get(0).getMessage()); + throw new ResidentServiceTPMSignKeyException(signKeyResponseDTO.getErrors().get(0).getErrorCode(), + signKeyResponseDTO.getErrors().get(0).getMessage()); } if (signKeyResponseDTO.getResponse() == null) { - throw new ResidentServiceTPMSignKeyException(PACKET_SIGNKEY_EXCEPTION.getErrorCode(), PACKET_SIGNKEY_EXCEPTION.getErrorMessage()); + throw new ResidentServiceTPMSignKeyException(PACKET_SIGNKEY_EXCEPTION.getErrorCode(), + PACKET_SIGNKEY_EXCEPTION.getErrorMessage()); } } catch (Exception e) { - logger.error(LoggerFileConstant.SESSIONID.toString(), LoggerFileConstant.USERID.toString(), SERVER_PROFILE_SIGN_KEY, + logger.error(LoggerFileConstant.SESSIONID.toString(), LoggerFileConstant.USERID.toString(), + SERVER_PROFILE_SIGN_KEY, "ResidentServiceImpl::reqUinUpdate():: PACKETSIGNPUBLICKEY POST service call" + ExceptionUtils.getStackTrace(e)); throw new ApisResourceAccessException("Could not fetch public key from kernel keymanager", e); @@ -729,33 +776,39 @@ private String getPublicKeyFromKeyManager() throws ApisResourceAccessException { return signKeyResponseDTO.getResponse().getPublicKey(); } - private MachineSearchResponseDTO searchMachineInMasterService(String residentMachinePrefix, String publicKey) throws ApisResourceAccessException { - MachineSearchRequestDTO.MachineSearchFilter searchFilterName = MachineSearchRequestDTO.MachineSearchFilter.builder().columnName("name").type("contains").value(residentMachinePrefix).build(); - MachineSearchRequestDTO.MachineSearchFilter searchFilterPublicKey = MachineSearchRequestDTO.MachineSearchFilter.builder().columnName("signPublicKey").type("equals").value(publicKey).build(); - MachineSearchRequestDTO.MachineSearchSort searchSort = MachineSearchRequestDTO.MachineSearchSort.builder().sortType("desc").sortField("createdDateTime").build(); - MachineSearchRequestDTO machineSearchRequestDTO = MachineSearchRequestDTO.builder() - .version("1.0") - //.requesttime(DateUtils.getUTCCurrentDateTimeString()) //TODO fix this - .request(MachineSearchRequestDTO.MachineSearchRequest.builder() - .filters(List.of(searchFilterName, searchFilterPublicKey)) - .sort(List.of(searchSort)) - .pagination(MachineSearchRequestDTO.MachineSearchPagination.builder().pageStart(0).pageFetch(10).build()) - .languageCode(utilities.getLanguageCode()) - .build()) + private MachineSearchResponseDTO searchMachineInMasterService(String residentMachinePrefix, String publicKey) + throws ApisResourceAccessException { + MachineSearchRequestDTO.MachineSearchFilter searchFilterName = MachineSearchRequestDTO.MachineSearchFilter + .builder().columnName("name").type("contains").value(residentMachinePrefix).build(); + MachineSearchRequestDTO.MachineSearchFilter searchFilterPublicKey = MachineSearchRequestDTO.MachineSearchFilter + .builder().columnName("signPublicKey").type("equals").value(publicKey).build(); + MachineSearchRequestDTO.MachineSearchSort searchSort = MachineSearchRequestDTO.MachineSearchSort.builder() + .sortType("desc").sortField("createdDateTime").build(); + MachineSearchRequestDTO machineSearchRequestDTO = MachineSearchRequestDTO.builder().version("1.0") + // .requesttime(DateUtils.getUTCCurrentDateTimeString()) //TODO fix this + .request( + MachineSearchRequestDTO.MachineSearchRequest.builder() + .filters(List.of(searchFilterName, searchFilterPublicKey)).sort(List.of(searchSort)) + .pagination(MachineSearchRequestDTO.MachineSearchPagination.builder().pageStart(0) + .pageFetch(10).build()) + .languageCode(utilities.getLanguageCode()).build()) .build(); MachineSearchResponseDTO machineSearchResponseDTO; try { HttpEntity httpEntity = new HttpEntity<>(machineSearchRequestDTO); - machineSearchResponseDTO = residentServiceRestClient.postApi(env.getProperty(ApiName.MACHINESEARCH.name()), MediaType.APPLICATION_JSON, httpEntity, MachineSearchResponseDTO.class); - logger.debug(LoggerFileConstant.SESSIONID.toString(), LoggerFileConstant.USERID.toString(), residentMachinePrefix, + machineSearchResponseDTO = residentServiceRestClient.postApi(env.getProperty(ApiName.MACHINESEARCH.name()), + MediaType.APPLICATION_JSON, httpEntity, MachineSearchResponseDTO.class); + logger.debug(LoggerFileConstant.SESSIONID.toString(), LoggerFileConstant.USERID.toString(), + residentMachinePrefix, "ResidentServiceImpl::reqUinUpdate():: MACHINESEARCH POST service call ended with response data " + machineSearchResponseDTO.toString()); if (machineSearchResponseDTO.getErrors() != null && !machineSearchResponseDTO.getErrors().isEmpty()) { - throw new ResidentMachineServiceException(machineSearchResponseDTO.getErrors().get(0).getErrorCode(), machineSearchResponseDTO.getErrors().get(0).getMessage()); + throw new ResidentMachineServiceException(machineSearchResponseDTO.getErrors().get(0).getErrorCode(), + machineSearchResponseDTO.getErrors().get(0).getMessage()); } } catch (Exception e) { - logger.error(LoggerFileConstant.SESSIONID.toString(), LoggerFileConstant.USERID.toString(), residentMachinePrefix, - "ResidentServiceImpl::reqUinUpdate():: MACHINESEARCH POST service call" + logger.error(LoggerFileConstant.SESSIONID.toString(), LoggerFileConstant.USERID.toString(), + residentMachinePrefix, "ResidentServiceImpl::reqUinUpdate():: MACHINESEARCH POST service call" + ExceptionUtils.getStackTrace(e)); throw new ApisResourceAccessException("Could not fetch machines from master data", e); } @@ -766,7 +819,8 @@ private String getMachineId(MachineSearchResponseDTO machineSearchResponseDTO, f if (machineSearchResponseDTO.getResponse() != null) { List fetchedMachines = machineSearchResponseDTO.getResponse().getData(); if (fetchedMachines != null && !fetchedMachines.isEmpty()) { - List machines = fetchedMachines.stream().filter(mac -> mac.getSignPublicKey().equals(publicKey)).collect(Collectors.toList()); + List machines = fetchedMachines.stream() + .filter(mac -> mac.getSignPublicKey().equals(publicKey)).collect(Collectors.toList()); if (!machines.isEmpty()) { return machines.get(0).getId(); } @@ -775,59 +829,66 @@ private String getMachineId(MachineSearchResponseDTO machineSearchResponseDTO, f return null; } - private String createNewMachineInMasterService(String residentMachinePrefix, String machineSpecId, String zoneCode, String regCenterId, String publicKey) throws ApisResourceAccessException { + private String createNewMachineInMasterService(String residentMachinePrefix, String machineSpecId, String zoneCode, + String regCenterId, String publicKey) throws ApisResourceAccessException { MachineCreateRequestDTO machineCreateRequestDTO = MachineCreateRequestDTO.builder() - //.requesttime(DateUtils.getUTCCurrentDateTimeString()) //TODO fix this + // .requesttime(DateUtils.getUTCCurrentDateTimeString()) //TODO fix this .request(MachineDto.builder().serialNum(null).macAddress(null).ipAddress("0.0.0.0").isActive(true) .validityDateTime(DateUtils.formatToISOString(DateUtils.getUTCCurrentDateTime().plusYears(3))) - .name(residentMachinePrefix + System.currentTimeMillis()).machineSpecId(machineSpecId).zoneCode(zoneCode).regCenterId(regCenterId).publicKey(publicKey).signPublicKey(publicKey).build()) + .name(residentMachinePrefix + System.currentTimeMillis()).machineSpecId(machineSpecId) + .zoneCode(zoneCode).regCenterId(regCenterId).publicKey(publicKey).signPublicKey(publicKey) + .build()) .build(); MachineCreateResponseDTO machineCreateResponseDTO; try { HttpEntity httpEntity = new HttpEntity<>(machineCreateRequestDTO); - machineCreateResponseDTO = residentServiceRestClient.postApi(env.getProperty(ApiName.MACHINECREATE.name()), MediaType.APPLICATION_JSON, httpEntity, MachineCreateResponseDTO.class); - logger.debug(LoggerFileConstant.SESSIONID.toString(), LoggerFileConstant.USERID.toString(), residentMachinePrefix, + machineCreateResponseDTO = residentServiceRestClient.postApi(env.getProperty(ApiName.MACHINECREATE.name()), + MediaType.APPLICATION_JSON, httpEntity, MachineCreateResponseDTO.class); + logger.debug(LoggerFileConstant.SESSIONID.toString(), LoggerFileConstant.USERID.toString(), + residentMachinePrefix, "ResidentServiceImpl::reqUinUpdate():: MACHINECREATE POST service call ended with response data " + machineCreateResponseDTO.toString()); if (machineCreateResponseDTO.getErrors() != null && !machineCreateResponseDTO.getErrors().isEmpty()) { - throw new ResidentMachineServiceException(machineCreateResponseDTO.getErrors().get(0).getErrorCode(), machineCreateResponseDTO.getErrors().get(0).getMessage()); + throw new ResidentMachineServiceException(machineCreateResponseDTO.getErrors().get(0).getErrorCode(), + machineCreateResponseDTO.getErrors().get(0).getMessage()); } if (machineCreateResponseDTO.getResponse() == null) { - throw new ResidentMachineServiceException(MACHINE_MASTER_CREATE_EXCEPTION.getErrorCode(), MACHINE_MASTER_CREATE_EXCEPTION.getErrorMessage()); + throw new ResidentMachineServiceException(MACHINE_MASTER_CREATE_EXCEPTION.getErrorCode(), + MACHINE_MASTER_CREATE_EXCEPTION.getErrorMessage()); } } catch (Exception e) { - logger.error(LoggerFileConstant.SESSIONID.toString(), LoggerFileConstant.USERID.toString(), residentMachinePrefix, - "ResidentServiceImpl::reqUinUpdate():: MACHINECREATE POST service call" + logger.error(LoggerFileConstant.SESSIONID.toString(), LoggerFileConstant.USERID.toString(), + residentMachinePrefix, "ResidentServiceImpl::reqUinUpdate():: MACHINECREATE POST service call" + ExceptionUtils.getStackTrace(e)); throw new ApisResourceAccessException("Could not create machine in master data", e); } return machineCreateResponseDTO.getResponse().getId(); } - private void validateAuthIndividualIdWithUIN(String individualId, String individualIdType, - JSONObject mappingJsonObject, JSONObject demographicIdentity) - throws ApisResourceAccessException, ValidationFailedException, IOException { + private void validateAuthIndividualIdWithUIN(String individualId, String individualIdType, + JSONObject mappingJsonObject, JSONObject demographicIdentity) + throws ApisResourceAccessException, ValidationFailedException, IOException { String uin = ""; - if(ResidentIndividialIDType.UIN.toString().equals(individualIdType)) + if (ResidentIndividialIDType.UIN.toString().equals(individualIdType)) uin = individualId; - else if(ResidentIndividialIDType.VID.toString().equals(individualIdType)) { + else if (ResidentIndividialIDType.VID.toString().equals(individualIdType)) { uin = utilities.getUinByVid(individualId); } else { logger.error(LoggerFileConstant.SESSIONID.toString(), LoggerFileConstant.APPLICATIONID.toString(), - LoggerFileConstant.APPLICATIONID.toString(), - "ResidentServiceImpl::validateAuthIndividualIdWithUIN():: Individual id type is invalid"); + LoggerFileConstant.APPLICATIONID.toString(), + "ResidentServiceImpl::validateAuthIndividualIdWithUIN():: Individual id type is invalid"); throw new ValidationFailedException(ResidentErrorCode.INDIVIDUAL_ID_TYPE_INVALID.getErrorCode(), - ResidentErrorCode.INDIVIDUAL_ID_TYPE_INVALID.getErrorMessage()); + ResidentErrorCode.INDIVIDUAL_ID_TYPE_INVALID.getErrorMessage()); } JSONObject identityMappingJsonObject = JsonUtil.getJSONObject(mappingJsonObject, IDENTITY); String uinMapping = getDocumentName(identityMappingJsonObject, UIN); String identityJsonUIN = JsonUtil.getJSONValue(demographicIdentity, uinMapping); - if(!identityJsonUIN.equals(uin)) { + if (!identityJsonUIN.equals(uin)) { logger.error(LoggerFileConstant.SESSIONID.toString(), LoggerFileConstant.APPLICATIONID.toString(), - LoggerFileConstant.APPLICATIONID.toString(), - "ResidentServiceImpl::validateAuthIndividualIdWithUIN():: Validation failed"); + LoggerFileConstant.APPLICATIONID.toString(), + "ResidentServiceImpl::validateAuthIndividualIdWithUIN():: Validation failed"); throw new ValidationFailedException(ResidentErrorCode.INDIVIDUAL_ID_UIN_MISMATCH.getErrorCode(), - ResidentErrorCode.INDIVIDUAL_ID_UIN_MISMATCH.getErrorMessage()); + ResidentErrorCode.INDIVIDUAL_ID_UIN_MISMATCH.getErrorMessage()); } } } \ No newline at end of file