public AddRouteRespondInfo addRoute(AddRouteRequestInfo addRouteRequest) throws IOException {
        log.debug("Start method \"addRoute\"");
        List<String> stationsForNewRoute = addRouteRequest.getStationsForNewRoute();
        Map<String, Object[]> newWay = addRouteRequest.getNewWay();
        String delimiter = addRouteRequest.getDelimiter();
        for (String stations : newWay.keySet()) {
            String stationAName = stations.split(delimiter)[0];
            String stationBName = stations.split(delimiter)[1];
            Station stationA = stationDAO.loadStationByName(stationAName);
            Station stationB = stationDAO.loadStationByName(stationBName);
            Way way = new Way();
            way.setStationByIdStation1(stationA);
            way.setStationByIdStation2(stationB);
            way.setTime((Timestamp) newWay.get(stations)[0]);
            way.setPrice((Double) newWay.get(stations)[1]);
            if (!wayDAO.saveWay(way)) {
                AddRouteRespondInfo respond = new AddRouteRespondInfo(AddRouteRespondInfo.SERVER_ERROR_STATUS);
                log.debug("Send AddRouteRespondInfo to client with SERVER_ERROR_STATUS");
                return respond;
            }
        }
        Route route = new Route();
        route.setName(addRouteRequest.getRouteName());
        if (!routeDAO.saveRoute(route)) {
            AddRouteRespondInfo respond = new AddRouteRespondInfo(AddRouteRespondInfo.SERVER_ERROR_STATUS);
            log.debug("Send AddRouteRespondInfo to client with SERVER_ERROR_STATUS");
            return respond;
        }
        List<Schedule> schedules = new ArrayList<Schedule>();
        route = routeDAO.loadRoute(route.getName());
        for (int i = 1; i < stationsForNewRoute.size(); i++) {
            Way way = wayDAO.loadWayByStations(stationsForNewRoute.get(i - 1), stationsForNewRoute.get(i));
            Schedule schedule = new Schedule();
            schedule.setRouteByIdRoute(route);
            schedule.setWayByIdWay(way);
            schedule.setSeqNumber(i);
            schedules.add(schedule);
            if (!scheduleDAO.saveSchedule(schedule)) {
                AddRouteRespondInfo respond = new AddRouteRespondInfo(AddRouteRespondInfo.SERVER_ERROR_STATUS);
                log.debug("Send AddRouteRespondInfo to client with SERVER_ERROR_STATUS");
                return respond;
            }
        }
        AddRouteRespondInfo respond = new AddRouteRespondInfo(AddRouteRespondInfo.OK_STATUS);
        log.debug("Send AddRouteRespondInfo to client with OK_STATUS");
        return respond;
    }