001 package org.findata.blpwrapper; 002 003 import com.bloomberglp.blpapi.*; 004 005 import java.util.logging.Logger; 006 007 public abstract class DataResult { 008 public abstract void processResponse(Element response, Logger logger, boolean throwInvalidSecurityError) throws WrapperException; 009 public abstract String[][] getData() throws WrapperException; 010 public abstract String[] getColumnNames() throws WrapperException; 011 public abstract String[] getDataTypes() throws WrapperException; 012 013 public void processSecurityError(Element securityData, Logger logger, boolean throwError) throws WrapperException { 014 if (securityData.hasElement("securityError")) { 015 logger.info("securityError info\n" + securityData.getElement("security") + "\n" + securityData.getElement("securityError")); 016 017 if (throwError) { 018 // Note this will only show the first invalid security. 019 throw new WrapperException("invalid security " + securityData.getElementAsString("security")); 020 } 021 } 022 } 023 024 public void processFieldExceptions(Element securityData, Logger logger) throws WrapperException { 025 Element field_exceptions = securityData.getElement("fieldExceptions"); 026 if (field_exceptions.numValues() > 0) { 027 for (int k = 0; k < field_exceptions.numValues(); k++) { 028 Element exception = field_exceptions.getValueAsElement(k); 029 logger.info("fieldError info\n" + securityData.getElement("security") + "\n" + exception.getElement("fieldId")); 030 031 Element errorInfo = exception.getElement("errorInfo"); 032 logger.info("" + errorInfo); 033 String errorType = errorInfo.getElementAsString("subcategory"); 034 if (errorType.equals("INVALID_FIELD")) { 035 throw new WrapperException("invalid field " + exception.getElementAsString("fieldId")); 036 } else if (errorType.equals("NOT_APPLICABLE_TO_REF_DATA")) { 037 // Not a fatal error. Just return null value. 038 } else if (errorType.equals("NOT_APPLICABLE_TO_HIST_DATA")) { 039 // Not a fatal error. Just return null value. 040 } else { 041 throw new WrapperException("unknown field error type " + errorType); 042 } 043 } 044 } 045 } 046 }