com.ignite.dao.AccountDao.java Source code

Java tutorial

Introduction

Here is the source code for com.ignite.dao.AccountDao.java

Source

/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
package com.ignite.dao;

import com.ignite.domain.Account;
import com.ignite.domain.Client;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.List;
import javax.sql.DataSource;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.jdbc.core.namedparam.MapSqlParameterSource;
import org.springframework.jdbc.core.simple.ParameterizedRowMapper;
import org.springframework.jdbc.core.simple.SimpleJdbcDaoSupport;
import org.springframework.security.access.prepost.PreAuthorize;

/**
 *
 * @author maslo
 */
public class AccountDao extends SimpleJdbcDaoSupport {

    @Autowired
    DataSource dataSource;

    protected final Log logger = LogFactory.getLog(getClass());

    public List<Account> getAccountsForClient(Client client) {
        logger.info("Getting clients");

        JdbcTemplate jdbcTemplate = new JdbcTemplate(dataSource);
        List<Account> products = jdbcTemplate.query(
                "select id, client, balance from account where client=" + "'" + client.getLogin() + "'",
                new AccountMapper());
        return products;
    }

    @PreAuthorize("hasRole('ROLE_TELLER')")
    public void saveAccount(Account account) {
        logger.info("Saving account: " + account.getOwner().getLogin());
        int count = getSimpleJdbcTemplate().update(
                "insert into account (client,balance) values (:client, :balance)",
                new MapSqlParameterSource().addValue("client", account.getOwner().getLogin()).addValue("balance",
                        account.getBalance()));
        logger.info("Rows affected: " + count);
    }

    private static class AccountMapper implements ParameterizedRowMapper<Account> {

        @Override
        public Account mapRow(ResultSet rs, int rowNum) throws SQLException {
            Account account = new Account();
            account.setOwner(null);
            account.setBalance(rs.getDouble("balance"));
            account.setPid(rs.getString("id"));
            return account;
        }

    }
}