@Override
  public Collection<DepositProductData> retrieveAll(final DepositAccountType depositAccountType) {

    this.context.authenticatedUser();
    final DepositProductMapper depositProductMapper =
        this.getDepositProductMapper(depositAccountType);
    if (depositProductMapper == null) return null;

    final StringBuilder sqlBuilder = new StringBuilder(400);
    sqlBuilder.append("select ");
    sqlBuilder.append(depositProductMapper.schema());
    sqlBuilder.append(" where sp.deposit_type_enum = ? ");

    return this.jdbcTemplate.query(
        sqlBuilder.toString(), depositProductMapper, new Object[] {depositAccountType.getValue()});
  }
  @Override
  public DepositProductData retrieveOne(
      final DepositAccountType depositAccountType, final Long fixedDepositProductId) {
    try {
      this.context.authenticatedUser();

      final DepositProductMapper depositProductMapper =
          this.getDepositProductMapper(depositAccountType);
      if (depositProductMapper == null) return null;

      final StringBuilder sqlBuilder = new StringBuilder(400);
      sqlBuilder.append("select ");
      sqlBuilder.append(depositProductMapper.schema());
      sqlBuilder.append(" where sp.id = ? and sp.deposit_type_enum = ? ");

      return this.jdbcTemplate.queryForObject(
          sqlBuilder.toString(),
          depositProductMapper,
          new Object[] {fixedDepositProductId, depositAccountType.getValue()});

    } catch (final EmptyResultDataAccessException e) {
      throw new FixedDepositProductNotFoundException(fixedDepositProductId);
    }
  }