airport.database.services.users.DispatcherDaoImpl.java Source code

Java tutorial

Introduction

Here is the source code for airport.database.services.users.DispatcherDaoImpl.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 airport.database.services.users;

import airport.database.dispatcher.airplane.FlightDaoImpl;
import java.sql.ResultSet;
import java.sql.SQLException;
import org.apache.log4j.Logger;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.dao.EmptyResultDataAccessException;
import org.springframework.jdbc.core.RowMapper;
import org.springframework.jdbc.core.namedparam.BeanPropertySqlParameterSource;
import org.springframework.jdbc.core.namedparam.NamedParameterJdbcTemplate;
import org.springframework.jdbc.core.namedparam.SqlParameterSource;
import org.springframework.stereotype.Repository;

/**
 *
 * @author mcdoker
 */
@Repository
public class DispatcherDaoImpl implements DispatcherDaoRead {

    private final static Logger LOG = Logger.getLogger(DispatcherDaoImpl.class);

    @Autowired
    private NamedParameterJdbcTemplate jdbcTemplate;

    private final static String SQL_QUERY_GET_DISPATCHER = "SELECT name, surname, rank " + "FROM dispatcher "
            + "WHERE user_id = (SELECT u.user_id FROM users u WHERE u.login = :login)";

    private final static String SQL_QUERY_EXIST_DISPATCHER = "SELECT COUNT(*)" + "FROM dispatcher "
            + "WHERE user_id = (SELECT u.user_id FROM users u WHERE u.login = :login)";

    public void addDispathcer(User user, Dispatcher dispatcher) {

    }

    @Override
    public Dispatcher getDispatcher(User user) {
        SqlParameterSource parameterUser = new BeanPropertySqlParameterSource(user);
        Dispatcher dispatcherResult;

        try {
            dispatcherResult = jdbcTemplate.queryForObject(SQL_QUERY_GET_DISPATCHER, parameterUser,
                    new DispatcherMapper());
        } catch (EmptyResultDataAccessException e) {
            LOG.info("such dispatcher isn't present. User : " + user);

            return new Dispatcher();
        }

        LOG.info("such dispatcher is present. User : " + user + ". Dispatcher : " + dispatcherResult);

        return dispatcherResult;
    }

    @Override
    public boolean isThere(User user) {
        SqlParameterSource parameterUser = new BeanPropertySqlParameterSource(user);

        int countDispatcher = jdbcTemplate.queryForObject(SQL_QUERY_EXIST_DISPATCHER, parameterUser, Integer.class);

        boolean result = countDispatcher > 0;

        if (LOG.isInfoEnabled()) {
            if (result) {
                LOG.info("User is exist. User : " + user);
            } else {
                LOG.info("User isn't exist. User : " + user);
            }
        }

        return result;
    }

    private static final class DispatcherMapper implements RowMapper<Dispatcher> {

        private final static String ARGUMENT_NAME_NAME = "name";
        private final static String ARGUMENT_NAME_SURNAME = "surname";
        private final static String ARGUMENT_NAME_RANK = "rank";

        @Override
        public Dispatcher mapRow(ResultSet rs, int i) throws SQLException {
            Dispatcher dispatcherResult = new Dispatcher();

            dispatcherResult.setName(rs.getString(ARGUMENT_NAME_NAME));
            dispatcherResult.setRank(rs.getString(ARGUMENT_NAME_RANK));
            dispatcherResult.setSurname(rs.getString(ARGUMENT_NAME_SURNAME));

            return dispatcherResult;
        }

    }

}