001 package org.findata.blpwrapper;
002
003 import com.bloomberglp.blpapi.*;
004
005 import java.util.logging.Logger;
006
007 public class IntradayBarDataResult extends DataResult {
008 private String[] requested_fields;
009 private static final String[] returned_fields = {"time", "open", "high", "low", "close", "numEvents", "volume"};
010 private String[] securities;
011 private static final String[] data_types = {"DATETIME", "FLOAT64", "FLOAT64", "FLOAT64", "FLOAT64", "INT32", "INT64"};
012 private String[][] result_data;
013
014 public IntradayBarDataResult(String[] argSecurities, String[] argFields) {
015 securities = argSecurities;
016 requested_fields = argFields;
017 }
018
019 public String[][] getData() {
020 return(result_data);
021 }
022
023 public String[] getDataTypes() {
024 return(data_types);
025 }
026
027 public String[] getColumnNames() {
028 return(returned_fields);
029 }
030
031 public void processResponse(Element response, Logger logger, boolean throwInvalidTickerError) throws WrapperException {
032 Element barDataArray = response.getElement("barData").getElement("barTickData");
033
034 int initial_offset;
035
036 if (result_data == null) {
037 logger.fine("Initializing result_data for IntradayBarDataResult");
038
039 initial_offset = 0;
040 result_data = new String[barDataArray.numValues()][returned_fields.length];
041 } else {
042 logger.fine("Extending existing result_data for IntradayBarDataResult");
043
044 initial_offset = result_data.length;
045 int combined_length = barDataArray.numValues() + initial_offset;
046 String[][] combined_result_data = new String[combined_length][returned_fields.length];
047 System.arraycopy(result_data, 0, combined_result_data, 0, initial_offset);
048 result_data = combined_result_data;
049 }
050
051 for (int i = 0; i < barDataArray.numValues(); i++) {
052 Element barData = barDataArray.getValueAsElement(i);
053
054 for (int j = 0; j < returned_fields.length; j++) {
055 result_data[initial_offset+i][j] = barData.getElementAsString(returned_fields[j]);
056 }
057 }
058 }
059 }