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    }