content: package redis.clients.jedis.params.geo;
  
  import redis.clients.jedis.Protocol;
  import redis.clients.jedis.params.Params;
  import redis.clients.util.SafeEncoder;
  
  import java.util.ArrayList;
  
  public class GeoRadiusParam extends Params {
    private static final String WITHCOORD = "withcoord";
    private static final String WITHDIST = "withdist";
  
    // Do not add WITHHASH since we can't classify result of WITHHASH and WITHDIST,
    // and WITHHASH is for debugging purposes
  
    private static final String ASC = "asc";
    private static final String DESC = "desc";
    private static final String COUNT = "count";
  
    private GeoRadiusParam() {
    }
  
    public static GeoRadiusParam geoRadiusParam() {
      return new GeoRadiusParam();
    }
  
    public GeoRadiusParam withCoord() {
      addParam(WITHCOORD);
      return this;
    }
  
    public GeoRadiusParam withDist() {
      addParam(WITHDIST);
      return this;
    }
  
    public GeoRadiusParam sortAscending() {
      addParam(ASC);
      return this;
    }
  
    public GeoRadiusParam sortDescending() {
      addParam(DESC);
      return this;
    }
  
    public GeoRadiusParam count(int count) {
      if (count > 0) {
        addParam(COUNT, count);
      }
      return this;
    }
  
    public byte[][] getByteParams(byte[]... args) {
      ArrayList<byte[]> byteParams = new ArrayList<byte[]>();
      for (byte[] arg : args) {
        byteParams.add(arg);
      }
  
      if (contains(WITHCOORD)) {
        byteParams.add(SafeEncoder.encode(WITHCOORD));
      }
      if (contains(WITHDIST)) {
        byteParams.add(SafeEncoder.encode(WITHDIST));
      }
  
      if (contains(COUNT)) {
        byteParams.add(SafeEncoder.encode(COUNT));
        byteParams.add(Protocol.toByteArray((Integer) getParam(COUNT)));
      }
  
      if (contains(ASC)) {
        byteParams.add(SafeEncoder.encode(ASC));
      } else if (contains(DESC)) {
        byteParams.add(SafeEncoder.encode(DESC));
      }
  
      return byteParams.toArray(new byte[byteParams.size()][]);
    }
  }
  