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

com.tigerbrokers.stock.openapi.client.util.builder.QuoteParamBuilder Maven / Gradle / Ivy

package com.tigerbrokers.stock.openapi.client.util.builder;

import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.alibaba.fastjson.serializer.SerializerFeature;
import com.tigerbrokers.stock.openapi.client.config.ClientConfig;
import com.tigerbrokers.stock.openapi.client.struct.enums.KType;
import com.tigerbrokers.stock.openapi.client.struct.enums.Language;
import com.tigerbrokers.stock.openapi.client.struct.enums.Market;
import com.tigerbrokers.stock.openapi.client.struct.enums.TimeLineType;
import com.tigerbrokers.stock.openapi.client.struct.enums.TimeZoneId;
import com.tigerbrokers.stock.openapi.client.struct.param.QuoteParameter;
import com.tigerbrokers.stock.openapi.client.util.DateUtils;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

/**
 * Description:
 * Created by lijiawen on 2018/07/24.
 */
public class QuoteParamBuilder {

  private Map paramMap = new HashMap<>();

  private QuoteParamBuilder() {
  }

  public static QuoteParamBuilder instance() {
    return new QuoteParamBuilder();
  }

  public QuoteParamBuilder period(KType period) {
    if (period != null) {
      if (period.name().startsWith("min")) {
        String ktypeName = "";
        switch (period) {
          case min1:
            ktypeName = "1min";
            break;
          case min5:
            ktypeName = "5min";
            break;
          case min15:
            ktypeName = "15min";
            break;
          case min30:
            ktypeName = "30min";
            break;
          case min60:
            ktypeName = "60min";
            break;
        }
        paramMap.put("period", ktypeName);
      } else {
        paramMap.put("period", period.name());
      }
    }
    return this;
  }

  public QuoteParamBuilder period(TimeLineType period) {
    if (period != null) {
      switch (period) {
        case day:
          paramMap.put("period", "day");
          break;
        case day5:
          paramMap.put("period", "5day");
          break;
      }
    }
    return this;
  }

  public QuoteParamBuilder symbol(String symbol) {
    if (symbol != null) {
      paramMap.put("symbol", symbol);
    }
    return this;
  }

  public QuoteParamBuilder symbols(List symbols) {
    if (symbols != null) {
      paramMap.put("symbols", symbols);
    }
    return this;
  }

  public QuoteParamBuilder beginTime(Long beginTime) {
    if (beginTime != null && beginTime > 0) {
      paramMap.put("begin_time", beginTime);
    }
    return this;
  }

  public QuoteParamBuilder beginTime(String beginTime) {
    return beginTime(beginTime, ClientConfig.DEFAULT_CONFIG.getDefaultTimeZone());
  }

  public QuoteParamBuilder beginTime(String beginTime, TimeZoneId zoneId) {
    return setTime("begin_time", beginTime, zoneId);
  }

  public QuoteParamBuilder endTime(Long endTime) {
    if (endTime != null && endTime > 0) {
      paramMap.put("end_time", endTime);
    }
    return this;
  }

  public QuoteParamBuilder endTime(String endTime) {
    return endTime(endTime, ClientConfig.DEFAULT_CONFIG.getDefaultTimeZone());
  }

  public QuoteParamBuilder endTime(String endTime, TimeZoneId zoneId) {
    return setTime("end_time", endTime, zoneId);
  }

  public QuoteParamBuilder setTime(String key, String time, TimeZoneId zoneId) {
    Date date = DateUtils.getZoneDate(time, zoneId);
    if (date != null) {
      paramMap.put(key, date.getTime());
    }
    return this;
  }

  public QuoteParamBuilder limit(Integer limit) {
    if (limit != null) {
      paramMap.put("limit", limit);
    }
    return this;
  }

  public QuoteParamBuilder right(String right) {
    if (right != null) {
      paramMap.put("right", right);
    }
    return this;
  }

  public QuoteParamBuilder hourTrading(Boolean hourTrading) {
    if (hourTrading != null) {
      paramMap.put("include_hour_trading", hourTrading);
    }
    return this;
  }

  public QuoteParamBuilder askBid(Boolean askBid) {
    if (askBid != null) {
      paramMap.put("include_ask_bid", askBid);
    }
    return this;
  }

  public QuoteParamBuilder market(Market market) {
    if (market != null) {
      paramMap.put("market", market);
    }
    return this;
  }

  public QuoteParamBuilder beginIndex(Integer beginIndex) {
    if (beginIndex != null) {
      paramMap.put("begin_index", beginIndex);
    }
    return this;
  }

  public QuoteParamBuilder endIndex(Integer endIndex) {
    if (endIndex != null) {
      paramMap.put("end_index", endIndex);
    }
    return this;
  }

  public QuoteParamBuilder language(Language language) {
    if (language != null) {
      paramMap.put("lang", language.name());
    }
    return this;
  }

  public QuoteParamBuilder industryId(Integer industryId) {
    if (industryId != null) {
      paramMap.put("industry_id", industryId);
    }
    return this;
  }

  public QuoteParamBuilder industryLevel(String industryLevel) {
    if (industryLevel != null) {
      paramMap.put("industry_level", industryLevel);
    }
    return this;
  }

  public QuoteParameter build() {
    return JSONObject.parseObject(JSON.toJSONString(paramMap, SerializerFeature.WriteEnumUsingToString), QuoteParameter.class);
  }

  public String buildJson() {
    return JSONObject.toJSONString(paramMap, SerializerFeature.WriteEnumUsingToString);
  }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy