private Request createRequest(
Set<ExternalIdBundle> externalIdBundle, String dataProvider, String dataField, LocalDateRange dateRange,
Integer maxPoints, Map<String, ExternalIdBundle> reverseBundleMap) {
// create request
Request request = getService().createRequest(BLOOMBERG_HISTORICAL_DATA_REQUEST);
Element securitiesElem = request.getElement(BLOOMBERG_SECURITIES_REQUEST);
// identifiers
for (ExternalIdBundle identifiers : externalIdBundle) {
ExternalId preferredId = getPreferredIdentifier(identifiers, dataProvider);
s_logger.debug("Resolved preferred identifier {} from identifier bundle {}", preferredId, identifiers);
String bbgKey = BloombergDomainIdentifierResolver.toBloombergKeyWithDataProvider(preferredId, dataProvider);
securitiesElem.appendValue(bbgKey);
reverseBundleMap.put(bbgKey, identifiers);
}
// field required
Element fieldElem = request.getElement(BLOOMBERG_FIELDS_REQUEST);
fieldElem.appendValue(dataField);
// general settings
request.set("periodicityAdjustment", "ACTUAL");
request.set("periodicitySelection", "DAILY");
request.set("startDate", toBloombergDate(dateRange.getStartDateInclusive()));
if (!dateRange.isEndDateMaximum()) {
request.set("endDate", toBloombergDate(dateRange.getEndDateInclusive()));
}
request.set("adjustmentSplit", true);
if (maxPoints != null && maxPoints <= 0) {
request.set("maxDataPoints", -maxPoints);
}
return request;
}