All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.knowm.xchange.coinbasepro.dto.CoinbaseProTrades Maven / Gradle / Ivy

package org.knowm.xchange.coinbasepro.dto;

import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import org.knowm.xchange.coinbasepro.dto.marketdata.CoinbaseProTrade;
import si.mazi.rescu.HttpResponseAware;

public class CoinbaseProTrades extends ArrayList implements HttpResponseAware {

  private static final long serialVersionUID = 8072963227369004488L;
  private Map> headers;
  private Long earliestTradeId;
  private Long latestTradeId;

  public CoinbaseProTrades() {
    super();
    earliestTradeId = null;
    latestTradeId = null;
  }

  public boolean addAll(CoinbaseProTrades coinbaseProTrades) {

    if (earliestTradeId == null) {
      earliestTradeId = coinbaseProTrades.getEarliestTradeId();
    } else if (coinbaseProTrades.getEarliestTradeId() != null) {
      earliestTradeId = Math.min(earliestTradeId, coinbaseProTrades.getEarliestTradeId());
    }

    if (latestTradeId == null) {
      latestTradeId = coinbaseProTrades.getLatestTradeId();
    } else if (coinbaseProTrades.getLatestTradeId() != null) {
      latestTradeId = Math.max(latestTradeId, coinbaseProTrades.getLatestTradeId());
    }

    return super.addAll(coinbaseProTrades);
  }

  @Override
  public void setResponseHeaders(Map> headers) {
    this.headers = headers;
    earliestTradeId = getHeaderAsLong("Cb-After");
    latestTradeId = getHeaderAsLong("Cb-Before");
  }

  @Override
  public Map> getResponseHeaders() {
    return headers;
  }

  public Long getHeaderAsLong(String key) {
    Long header = null;
    try {
      header = Long.valueOf(getResponseHeaders().get(key).get(0));
    } catch (NullPointerException | NumberFormatException e) {
      // nop
    }
    return header;
  }

  public Long getEarliestTradeId() {
    return earliestTradeId;
  }

  public Long getLatestTradeId() {
    return latestTradeId;
  }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy