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 }