public List<StrikeAbstract> getStrikesGrid(
      int intervalDuration, int intervalOffset, int rasterSize, int countThreshold, int region) {
    List<StrikeAbstract> strikes = new ArrayList<StrikeAbstract>();

    nextId = 0;
    incrementalResult = false;

    try {
      JSONObject response =
          client.call(
              "get_strikes_grid",
              intervalDuration,
              rasterSize,
              intervalOffset,
              region,
              countThreshold);

      readRasterData(response, strikes);
      rasterParameters.setInfo(String.format("%.0f km", rasterSize / 1000f));
      readHistogramData(response);
    } catch (Exception e) {
      skipServer();
      throw new RuntimeException(e);
    }

    Log.v(
        Main.LOG_TAG,
        String.format(
            "JsonRpcDataProvider: read %d bytes (%d raster positions, region %d)",
            client.getLastNumberOfTransferredBytes(), strikes.size(), region));

    return strikes;
  }
  public List<StrikeAbstract> getStrikes(int timeInterval, int intervalOffset, int region) {
    List<StrikeAbstract> strikes = new ArrayList<StrikeAbstract>();
    rasterParameters = null;

    if (intervalOffset < 0) {
      nextId = 0;
    }
    incrementalResult = nextId != 0;

    try {
      JSONObject response =
          client.call("get_strikes", timeInterval, intervalOffset < 0 ? intervalOffset : nextId);

      readStrikes(response, strikes);
      readHistogramData(response);
    } catch (Exception e) {
      skipServer();
      throw new RuntimeException(e);
    }

    Log.v(
        Main.LOG_TAG,
        String.format(
            "JsonRpcDataProvider: read %d bytes (%d new strikes, region %d)",
            client.getLastNumberOfTransferredBytes(), strikes.size(), region));
    return strikes;
  }