Exemple #1
0
    @Override
    public void run() {

      RouteCalculationResult res = provider.calculateRouteImpl(params);
      if (params.calculationProgress.isCancelled) {
        currentRunningJob = null;
        return;
      }
      final boolean onlineSourceWithoutInternet =
          !res.isCalculated()
              && params.type.isOnline()
              && !settings.isInternetConnectionAvailable();
      if (onlineSourceWithoutInternet && settings.GPX_ROUTE_CALC_OSMAND_PARTS.get()) {
        if (params.previousToRecalculate != null && params.previousToRecalculate.isCalculated()) {
          res = provider.recalculatePartOfflineRoute(res, params);
        }
      }

      synchronized (RoutingHelper.this) {
        if (res.isCalculated()) {
          setNewRoute(res, params.start);
        } else {
          evalWaitInterval = evalWaitInterval * 3 / 2;
          evalWaitInterval = Math.min(evalWaitInterval, 120000);
        }
        currentRunningJob = null;
      }

      if (res.isCalculated()) {
        String msg =
            app.getString(R.string.new_route_calculated_dist)
                + ": "
                + OsmAndFormatter.getFormattedDistance(res.getWholeDistance(), app);
        if (res.getRoutingTime() != 0f) {
          msg += " (" + Algorithms.formatDuration((int) res.getRoutingTime()) + ")";
        }
        showMessage(msg);
      } else if (onlineSourceWithoutInternet) {
        showMessage(
            app.getString(R.string.error_calculating_route)
                + ":\n"
                + app.getString(
                    R.string.internet_connection_required_for_online_route)); // $NON-NLS-1$
      } else {
        if (res.getErrorMessage() != null) {
          showMessage(
              app.getString(R.string.error_calculating_route)
                  + ":\n"
                  + res.getErrorMessage()); // $NON-NLS-1$
        } else {
          showMessage(app.getString(R.string.empty_route_calculated));
        }
      }
      lastTimeEvaluatedRoute = System.currentTimeMillis();
    }