com.ignite.dao.ClientDao.java Source code

Java tutorial

Introduction

Here is the source code for com.ignite.dao.ClientDao.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.Client;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.List;
import java.util.UUID;
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 ClientDao extends SimpleJdbcDaoSupport {

    @Autowired
    DataSource dataSource;

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

    @PreAuthorize("hasRole('ROLE_TELLER')")
    public Client getClient(String username) {
        logger.info("Getting client");

        JdbcTemplate jdbcTemplate = new JdbcTemplate(dataSource);
        List<Client> products = jdbcTemplate.query(
                "select firstname, lastname, username, pid from users where username=" + "'" + username + "" + "'",
                new ClientMapper());
        return products.get(0);
    }

    @PreAuthorize("hasRole('ROLE_TELLER')")
    public List<Client> getClients() {
        logger.info("Getting clients");

        JdbcTemplate jdbcTemplate = new JdbcTemplate(dataSource);
        List<Client> products = jdbcTemplate.query("select firstname, lastname, username, pid from users",
                new ClientMapper());
        return products;
    }

    @PreAuthorize("hasRole('ROLE_TELLER')")
    public void saveClient(Client client) {
        logger.info("Saving client: " + client.getLastname());
        getSimpleJdbcTemplate().update(
                "insert into users (firstname,lastname,username,password,pid) values (:firstname, :lastname, :username, :password, :pid )",
                new MapSqlParameterSource().addValue("firstname", client.getFirstname())
                        .addValue("lastname", client.getLastname()).addValue("username", client.getLogin())
                        .addValue("password", client.getPassword()).addValue("pid", UUID.randomUUID().toString()));

        getSimpleJdbcTemplate().update("insert into user_roles (username,ROLE) values (:username, :role)",
                new MapSqlParameterSource().addValue("username", client.getLogin()).addValue("role",
                        "ROLE_CLIENT"));
    }

    private static class ClientMapper implements ParameterizedRowMapper<Client> {

        @Override
        public Client mapRow(ResultSet rs, int rowNum) throws SQLException {
            Client client = new Client();
            client.setPid(rs.getString("pid"));
            client.setFirstname(rs.getString("firstname"));
            client.setLastname(rs.getString("lastname"));
            client.setLogin(rs.getString("username"));
            return client;
        }

    }
}