public static List<Car> getFreeCars() throws LoginLogicException {
	List<Car> freeCars = new ArrayList<Car>();
	Connection connection = null;
	try {
	    connection = ConnectionPool.getInstance().takeConnection();
	    // ������������������ �������� ������������������ ���������� �� ��������������
	    AbstractDAO<Car> carDao  = new CarDAO(connection);
	    AbstractDAO<Order> orderDao = new OrderDAO(connection);
	    freeCars = carDao.findAll();
	    List<Order> orders = orderDao.findAll();
	    
	    /* �������� �������� ���������� �� �������������� �� ���� ������ ������ �� ����������������
	     * ������ ������������ ��������������, ���� ���������� ������������ ���������������������� 
	     * ���� ������������ ������������������ 
	     */
	    List<Car> nonFree = new ArrayList<Car>();
	    for (Order order : orders) {
		for (Car car : freeCars) {
		    if ((order.getIdCar() == car.getId()) 
			    && ((!order.isFree()) || order.isCrashed())) {
			nonFree.add(car);
		    }
		}
	    }
	    freeCars.removeAll(nonFree);
	    
	} catch (ConnectionPoolException e) {
	    throw new LoginLogicException("Can't take connection from connection pool.",e);
	} catch (DAOException e) {
	    throw new LoginLogicException("Can't find all cars/orders.",e);
	} finally {
	    ConnectionPool.getInstance().closeConnection(connection);
	}
	
	return freeCars;
    }