001    package org.findata.blpwrapper;
002    
003    import com.bloomberglp.blpapi.*;
004    
005    import java.util.logging.Logger;
006    
007    public class IntradayTickDataResult extends DataResult {
008      private String[] requested_fields;
009      private static final String[] returned_fields = {"time", "type", "value", "size"};
010      private String[] securities;
011      private static final String[] data_types = {"DATETIME", "STRING", "FLOAT64", "INT32"};
012      private String[][] result_data;
013    
014      public IntradayTickDataResult(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 tickDataArray = response.getElement("tickData").getElement("tickData");
033    
034        int initial_offset;
035    
036        if (result_data == null) {
037          logger.fine("Initializing result_data for IntradayTickDataResult");
038    
039          initial_offset = 0;
040          result_data = new String[tickDataArray.numValues()][returned_fields.length];
041        } else {
042          logger.fine("Extending existing result_data for IntradayTickDataResult");
043          
044          initial_offset = result_data.length;
045          int combined_length = tickDataArray.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    
052        for (int i = 0; i < tickDataArray.numValues(); i++) {
053          Element tickData = tickDataArray.getValueAsElement(i);
054          
055          for (int j = 0; j < returned_fields.length; j++) {
056            result_data[initial_offset+i][j] = tickData.getElementAsString(returned_fields[j]);
057          }
058        }
059      }
060    }