Java tutorial
/* * 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.dispatcher.airplane; import java.sql.ResultSet; import java.sql.SQLException; import java.util.ArrayList; import java.util.List; 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.MapSqlParameterSource; import org.springframework.jdbc.core.namedparam.NamedParameterJdbcTemplate; import org.springframework.jdbc.core.namedparam.SqlParameterSource; import org.springframework.stereotype.Repository; /** * * @author mcdoker */ @Repository public class FlightDaoImpl implements FlightDao { private final static Logger LOG = Logger.getLogger(FlightDaoImpl.class); @Autowired private NamedParameterJdbcTemplate jdbcTemplate; private final static String SQL_QUERY_ADD_FLIGHT = "INSERT INTO flight(\n" + " flight_number, from_city, to_city, hour_of_departure, arrival_time, \n" + " airplane_number, flight_state, type_machine)\n" + " VALUES (:flightNumber, :fromity, :toCity, :hourOfDeparture, :arrivalTime, " + " :airplaneNumber, :flightState, :typeMachine)"; private final static String SQL_QUERY_REMOVE_FLIGT = "DELETE FROM flight " + "WHERE flight_number = :flightNumber"; private final static String SQL_QUERY_REMOVE_ALL_FLIGHT = "DELETE FROM FLIGHT"; private final static String SQL_QUERY_SELECT_ALL_FLIGHT = "SELECT flight_number, from_city, to_city, hour_of_departure, arrival_time, \n" + " airplane_number, flight_state, type_machine " + "FROM flight"; private final static String SQL_QUERY_SELECT_FLIGHT_STATE = "SELECT flight_state FROM flight " + "WHERE flight_number = :flightNumber"; @Override public void addFlight(Flight flight) { SqlParameterSource paramertFlight = new BeanPropertySqlParameterSource(flight); jdbcTemplate.update(SQL_QUERY_ADD_FLIGHT, paramertFlight); if (LOG.isInfoEnabled()) { LOG.info("add flight. Flight" + (flight != null ? flight.toString() : "")); } } @Override public void removeFlight(Flight flight) { SqlParameterSource parameterFlight = new BeanPropertySqlParameterSource(flight); jdbcTemplate.update(SQL_QUERY_REMOVE_FLIGT, parameterFlight); if (LOG.isInfoEnabled()) { LOG.info("remove flight. Flight: " + (flight != null ? flight.toString() : "")); } } @Override public void removeAllFlight() { jdbcTemplate.getJdbcOperations().update(SQL_QUERY_REMOVE_ALL_FLIGHT); if (LOG.isInfoEnabled()) { LOG.info("remove all flight"); } } @Override public List<Flight> getAllFlight() { List<Flight> resultMessages; try { resultMessages = jdbcTemplate.getJdbcOperations().query(SQL_QUERY_SELECT_ALL_FLIGHT, new FlightMapper()); } catch (EmptyResultDataAccessException e) { if (LOG.isInfoEnabled()) { LOG.info("flights aren't present"); } return new ArrayList<>(); } if (LOG.isInfoEnabled()) { LOG.info("get all flight " + resultMessages); } return resultMessages; } @Override public String getFlightState(String flightNumber) { MapSqlParameterSource mapSqlParameterSource = new MapSqlParameterSource("flightNumber", flightNumber); String resultStateFlight = jdbcTemplate.queryForObject(SQL_QUERY_SELECT_FLIGHT_STATE, mapSqlParameterSource, String.class); if (LOG.isInfoEnabled()) { LOG.info("get flight state. FlightNumber : " + flightNumber + ". Result : " + resultStateFlight); } return resultStateFlight; } private static class FlightMapper implements RowMapper<Flight> { private final static String PARAMETR_FLIGHT_FLIGHT_NUMBER = "flight_number"; private final static String PARAMETR_FLIGHT_FROM_CITY = "from_city"; private final static String PARAMETR_FLIGHT_TO_CITY = "to_city"; private final static String PARAMETR_FLIGHT_HOUR_OF_DEPARTURE = "hour_of_departure"; private final static String PARAMETR_FLIGHT_ARRIVAL_TIME = "arrival_time"; private final static String PARAMETR_FLIGHT_AIRPLANE_NUMBER = "airplane_number"; private final static String PARAMETR_FLIGHT_FLIGHT_STATE = "flight_state"; private final static String PARAMETR_FLIGHT_TYPE_MACHINE = "type_machine"; @Override public Flight mapRow(ResultSet rs, int rowNum) throws SQLException { Flight flightResult = new Flight(); flightResult.setAirplaneNumber(rs.getString(PARAMETR_FLIGHT_AIRPLANE_NUMBER)); flightResult.setArrivalTime(rs.getString(PARAMETR_FLIGHT_ARRIVAL_TIME)); flightResult.setFlightNumber(rs.getString(PARAMETR_FLIGHT_FLIGHT_NUMBER)); flightResult.setFromity(rs.getString(PARAMETR_FLIGHT_FROM_CITY)); flightResult.setHourOfDeparture(rs.getString(PARAMETR_FLIGHT_HOUR_OF_DEPARTURE)); flightResult.setToCity(rs.getString(PARAMETR_FLIGHT_TO_CITY)); flightResult.setTypeMachine(rs.getString(PARAMETR_FLIGHT_TYPE_MACHINE)); String valueStateFlight = rs.getString(PARAMETR_FLIGHT_FLIGHT_STATE); for (StateFlight sf : StateFlight.values()) { if (sf.getActionName().equals(valueStateFlight)) { flightResult.setFlightState(sf); break; } } return flightResult; } } }