Package rewards.internal.reward

Source Code of rewards.internal.reward.JdbcRewardRepository

package rewards.internal.reward;

import javax.sql.DataSource;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.jdbc.core.simple.SimpleJdbcTemplate;
import org.springframework.stereotype.Repository;

import rewards.AccountContribution;
import rewards.Dining;
import rewards.RewardConfirmation;

import common.datetime.SimpleDate;

/**
* JDBC implementation of a reward repository that records the result of a reward transaction by inserting a reward
* confirmation record.
*/
@Repository
public class JdbcRewardRepository implements RewardRepository {
 
  private SimpleJdbcTemplate jdbcTemplate;

  @Autowired
  public JdbcRewardRepository(DataSource dataSource) {
    this.jdbcTemplate = new SimpleJdbcTemplate(dataSource);
  }

  public RewardConfirmation confirmReward(AccountContribution contribution, Dining dining) {
    String sql = "insert into T_REWARD (CONFIRMATION_NUMBER, REWARD_AMOUNT, REWARD_DATE, ACCOUNT_NUMBER, DINING_MERCHANT_NUMBER, DINING_DATE, DINING_AMOUNT) values (?, ?, ?, ?, ?, ?, ?)";
    String confirmationNumber = nextConfirmationNumber();
    jdbcTemplate.update(sql, confirmationNumber, contribution.getAmount().asBigDecimal(),
        SimpleDate.today().asDate(), contribution.getAccountNumber(), dining.getMerchantNumber(),
        dining.getDate().asDate(), dining.getAmount().asBigDecimal());
    return new RewardConfirmation(confirmationNumber, contribution);
  }

  private String nextConfirmationNumber() {
    String sql = "select next value for S_REWARD_CONFIRMATION_NUMBER from DUAL_REWARD_CONFIRMATION_NUMBER";
    return jdbcTemplate.queryForObject(sql, String.class);
  }
}
TOP

Related Classes of rewards.internal.reward.JdbcRewardRepository

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.