/* * Copyright (C) 2012 - present by Yann Le Tallec. * Please see distribution for license. */ package com.assylias.jbloomberg; import com.bloomberglp.blpapi.Element; import org.slf4j.Logger; import org.slf4j.LoggerFactory; /** * * A ResultParser to parse the responses received from the Bloomberg Session when sending a Reference Data request. * * This implementation is thread safe as the Bloomberg API might send results through more than one thread. */ final class ReferenceResultParser extends AbstractResultParser<ReferenceData> { private static final Logger logger = LoggerFactory.getLogger(ReferenceResultParser.class); @Override protected ReferenceData getRequestResult() { return new ReferenceData(); } @Override protected void parseResponseNoResponseError(Element response) { if (response.hasElement(SECURITY_DATA, true)) { Element securityDataArray = response.getElement(SECURITY_DATA); parseSecurityDataArray(securityDataArray); } } private void parseSecurityDataArray(Element securityDataArray) { int numSecurities = securityDataArray.numValues(); for (int i = 0; i < numSecurities; i++) { Element securityData = securityDataArray.getValueAsElement(i); parseSecurityData(securityData); } } /** * There should be no more error at this point and we can happily parse the interesting portion of the response * */ @Override protected void parseFieldDataArray(String security, Element fieldDataArray) { int numberOfFields = fieldDataArray.numElements(); for (int i = 0; i < numberOfFields; i++) { Element field = fieldDataArray.getElement(i); addField(security, field); } } }