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; }