protected int addSpToPurposeAssociation(int receiptToSPAssocId, ReceiptPurposeInput receiptPurposeInput) throws ConsentManagementServerException { int spToPurposeAssocId; JdbcTemplate jdbcTemplate = JdbcUtils.getNewTemplate(); try { spToPurposeAssocId = jdbcTemplate.withTransaction(template -> template.executeInsert(INSERT_SP_TO_PURPOSE_ASSOC_SQL, (preparedStatement -> { preparedStatement.setInt(1, receiptToSPAssocId); preparedStatement.setInt(2, receiptPurposeInput.getPurposeId()); preparedStatement.setString(3, receiptPurposeInput.getConsentType()); preparedStatement.setInt(4, receiptPurposeInput.isPrimaryPurpose() ? 1 : 0); preparedStatement.setString(5, receiptPurposeInput.getTermination()); preparedStatement.setInt(6, receiptPurposeInput.isThirdPartyDisclosure() ? 1 : 0); preparedStatement.setString(7, receiptPurposeInput.getThirdPartyName()); }), receiptPurposeInput, true)); } catch (TransactionException e) { throw ConsentUtils.handleServerException(ErrorMessages.ERROR_CODE_ADD_SP_TO_PURPOSE_ASSOC, String.valueOf(receiptPurposeInput.getPurposeName()), e); } return spToPurposeAssocId; }
private ReceiptPurposeInput getReceiptPurposeInput(String consentType, String termination, Purpose purpose, List<PIICategoryValidity> piiCategoryIds, List<Integer> purposeCategoryIds) { ReceiptPurposeInput purposeInput = new ReceiptPurposeInput(); purposeInput.setPrimaryPurpose(true); purposeInput.setTermination(termination); purposeInput.setConsentType(consentType); purposeInput.setThirdPartyDisclosure(false); purposeInput.setPurposeId(purpose.getId()); purposeInput.setPurposeCategoryId(purposeCategoryIds); purposeInput.setPiiCategory(piiCategoryIds); return purposeInput; }
if (receiptPurposeInput.getPurposeId() == null) { throw handleClientException(ERROR_CODE_PURPOSE_ID_MANDATORY, serviceName); } else { Purpose purpose = getPurpose(receiptPurposeInput.getPurposeId()); receiptPurposeInput.setPurposeName(purpose.getName()); if (isBlank(receiptPurposeInput.getConsentType())) { throw handleClientException(ERROR_CODE_CONSENT_TYPE_MANDATORY, serviceName); if (isEmpty(receiptPurposeInput.getPurposeCategoryId())) { throw handleClientException(ERROR_CODE_AT_LEAST_ONE_CATEGORY_ID_REQUIRED, serviceName); } else { receiptPurposeInput.getPurposeCategoryId().forEach(rethrowConsumer(this::getPurposeCategory)); if (isEmpty(receiptPurposeInput.getPiiCategory())) { throw handleClientException(ERROR_CODE_AT_LEAST_ONE_PII_CATEGORY_ID_REQUIRED, serviceName); } else { receiptPurposeInput.getPiiCategory().forEach(rethrowConsumer(piiCategoryValidity -> getPIICategory (piiCategoryValidity.getId()))); if (receiptPurposeInput.isPrimaryPurpose() == null) { throw handleClientException(ERROR_CODE_IS_PRIMARY_PURPOSE_IS_REQUIRED, serviceName); if (isBlank(receiptPurposeInput.getTermination())) { throw handleClientException(ERROR_CODE_TERMINATION_IS_REQUIRED, serviceName);
/** * If the consent is not given for a PII * * @param keySet * @param receipt * @return * @throws ConsentUtilityServiceException */ public Set<String> filterPIIsFromReceipt(Set<String> keySet, ReceiptInput receipt) throws ConsentUtilityServiceException { if (keySet == null || receipt == null) { throw new ConsentUtilityServiceException("Key set and receipt should not be null"); } List<ReceiptServiceInput> services = receipt.getServices(); Set<String> consentedPIIs = new HashSet<>(); for (ReceiptServiceInput service : services) { List<ReceiptPurposeInput> purposes = service.getPurposes(); for (ReceiptPurposeInput consentPurpose : purposes) { List<PIICategoryValidity> piiCategories = consentPurpose.getPiiCategory(); for (PIICategoryValidity piiCategory : piiCategories) { consentedPIIs.add(getPIIName(consentPurpose.getPurposeId(), piiCategory.getId())); } } } keySet.retainAll(consentedPIIs); return keySet; }
@Override public void addReceipt(ReceiptInput receiptInput) throws ConsentManagementException { JdbcTemplate jdbcTemplate = JdbcUtils.getNewTemplate(); try { jdbcTemplate.withTransaction(template -> { revokeActiveReceipts(receiptInput); addReceiptInfo(receiptInput); receiptInput.getServices().forEach(rethrowConsumer(receiptServiceInput -> { int receiptToSPAssocId = addReceiptSPAssociation(receiptInput.getConsentReceiptId(), receiptServiceInput); receiptServiceInput.getPurposes().forEach(rethrowConsumer(receiptPurposeInput -> { int spToPurposeAssocId = addSpToPurposeAssociation(receiptToSPAssocId, receiptPurposeInput); receiptPurposeInput.getPurposeCategoryId().forEach(rethrowConsumer(id -> addSpPurposeToPurposeCategoryAssociation(spToPurposeAssocId, id))); receiptPurposeInput.getPiiCategory().forEach(rethrowConsumer(piiCategoryValidity -> addSpPurposeToPiiCategoryAssociation(spToPurposeAssocId, piiCategoryValidity.getId(), piiCategoryValidity.getValidity()))); })); })); if (receiptInput.getProperties() != null) { addReceiptProperties(receiptInput.getConsentReceiptId(), receiptInput.getProperties()); } return null; }); } catch (TransactionException e) { throw ConsentUtils.handleServerException(ErrorMessages.ERROR_CODE_ADD_CONSENT_RECEIPT, receiptInput.getPiiPrincipalId(), e); } }
/** * If the consent is not given for a PII * * @param keySet * @param receipt * @return * @throws ConsentUtilityServiceException */ public Set<String> filterPIIsFromReceipt(Set<String> keySet, ReceiptInput receipt) throws ConsentUtilityServiceException { if (keySet == null || receipt == null) { throw new ConsentUtilityServiceException("Key set and receipt should not be null"); } List<ReceiptServiceInput> services = receipt.getServices(); Set<String> consentedPIIs = new HashSet<>(); for (ReceiptServiceInput service : services) { List<ReceiptPurposeInput> purposes = service.getPurposes(); for (ReceiptPurposeInput consentPurpose : purposes) { List<PIICategoryValidity> piiCategories = consentPurpose.getPiiCategory(); for (PIICategoryValidity piiCategory : piiCategories) { consentedPIIs.add(getPIIName(consentPurpose.getPurposeId(), piiCategory.getId())); } } } keySet.retainAll(consentedPIIs); return keySet; }
private ReceiptPurposeInput getReceiptPurposeInput(String consentType, String termination, Purpose purpose, List<PIICategoryValidity> piiCategoryIds, List<Integer> purposeCategoryIds) { ReceiptPurposeInput purposeInput = new ReceiptPurposeInput(); purposeInput.setPrimaryPurpose(true); purposeInput.setTermination(termination); purposeInput.setConsentType(consentType); purposeInput.setThirdPartyDisclosure(false); purposeInput.setPurposeId(purpose.getId()); purposeInput.setPurposeCategoryId(purposeCategoryIds); purposeInput.setPiiCategory(piiCategoryIds); return purposeInput; }
List<ReceiptPurposeInput> consentPurposes = service.getPurposes(); for (ReceiptPurposeInput consentPurpose : consentPurposes) { if (consentPurpose.getPurposeId() == purpose.getId()) { purposeConsented = true; List<PIICategoryValidity> pIICategories = consentPurpose.getPiiCategory(); Set<Integer> consentedPIIs = getPIIs(pIICategories);
ReceiptPurposeInput receiptPurposeInput = new ReceiptPurposeInput(); receiptPurposeInput.setConsentType(FrameworkConstants.Consent.EXPLICIT_CONSENT_TYPE); receiptPurposeInput.setPrimaryPurpose(true); receiptPurposeInput.setThirdPartyDisclosure(false); receiptPurposeInput.setPurposeId(receiptPurpose.getInt("purposeId")); JSONArray purposeCategoryId = receiptPurpose.getJSONArray("purposeCategoryId"); List<Integer> purposeCategoryIdArray = new ArrayList<>(); purposeCategoryIdArray.add(purposeCategoryId.getInt(index)); receiptPurposeInput.setTermination(FrameworkConstants.Consent.INFINITE_TERMINATION); receiptPurposeInput.setPurposeCategoryId(purposeCategoryIdArray); receiptPurposeInput.setTermination(FrameworkConstants.Consent.INFINITE_TERMINATION); List<PIICategoryValidity> piiCategoryValidities = new ArrayList<>(); JSONArray piiCategories = (JSONArray) receiptPurpose.get(FrameworkConstants.Consent.PII_CATEGORY); piiCategoryValidities.add(piiCategoryValidity); receiptPurposeInput.setPiiCategory(piiCategoryValidities); return receiptPurposeInput;
List<ReceiptPurposeInput> consentPurposes = service.getPurposes(); for (ReceiptPurposeInput consentPurpose : consentPurposes) { if (consentPurpose.getPurposeId() == purpose.getId()) { purposeConsented = true; List<PIICategoryValidity> pIICategories = consentPurpose.getPiiCategory(); Set<Integer> consentedPIIs = getPIIs(pIICategories);
ReceiptPurposeInput receiptPurposeInput = new ReceiptPurposeInput(); receiptPurposeInput.setConsentType(FrameworkConstants.Consent.EXPLICIT_CONSENT_TYPE); receiptPurposeInput.setPrimaryPurpose(true); receiptPurposeInput.setThirdPartyDisclosure(false); receiptPurposeInput.setPurposeId(receiptPurpose.getInt("purposeId")); JSONArray purposeCategoryId = receiptPurpose.getJSONArray("purposeCategoryId"); List<Integer> purposeCategoryIdArray = new ArrayList<>(); purposeCategoryIdArray.add(purposeCategoryId.getInt(index)); receiptPurposeInput.setTermination(FrameworkConstants.Consent.INFINITE_TERMINATION); receiptPurposeInput.setPurposeCategoryId(purposeCategoryIdArray); receiptPurposeInput.setTermination(FrameworkConstants.Consent.INFINITE_TERMINATION); List<PIICategoryValidity> piiCategoryValidities = new ArrayList<>(); JSONArray piiCategories = (JSONArray) receiptPurpose.get(FrameworkConstants.Consent.PII_CATEGORY); piiCategoryValidities.add(piiCategoryValidity); receiptPurposeInput.setPiiCategory(piiCategoryValidities); return receiptPurposeInput;