@Override public MetaDataResult getMetaData(final MultiMetaDataRequest request) { ArgumentChecker.notNull(request, "request"); Map<String, HeaderDefinition> multipleHeaderDefinition = getMultipleHeaderDefinition(request); try { JSONObject result = new JSONObject(); if (multipleHeaderDefinition.size() > 0) { result.append(JSON_COLUMN_NAMES_FIELD, DATE_COLUMN); result.append(JSON_COLUMNS_FIELD, DATE_COLUMN); } for (Map.Entry<String, HeaderDefinition> entry : multipleHeaderDefinition.entrySet()) { String quandlCode = entry.getKey(); HeaderDefinition headerDef = entry.getValue(); for (String columnName : headerDef.getColumnNames()) { if (!columnName.equals(DATE_COLUMN)) { // skip Date column for each data set. result.append(JSON_COLUMN_NAMES_FIELD, quandlCode + " - " + columnName); result.append(JSON_COLUMNS_FIELD, columnName); } } } result.put(JSON_DATA_FIELD, new JSONArray()); result.put(JSON_ERRORS_FIELD, Collections.emptyMap()); result.put(JSON_FREQUENCY_FIELD, (Object) null); result.put(JSON_FROM_DATE_FIELD, (Object) null); result.put(JSON_TO_DATE_FIELD, (Object) null); return MetaDataResult.of(result); } catch (JSONException ex) { throw new QuandlRuntimeException("Problem building JSON response", ex); } }
/** * Run a set of randomized Multi header requests, of varying size between 1 and MAX_CODES_PER_MULTI_REQ. * @param session the Quandl session * @param resultProcessor a result processor to either record or check the results * @param quandlCodes a random set of Quandl codes to construct requests from */ private void runMultiHeaderRequests(final QuandlSession session, final ResultProcessor resultProcessor, final Set<String> quandlCodes) { Iterator<String> iter = quandlCodes.iterator(); while (iter.hasNext()) { int chunkSize = _random.nextInt(MAX_CODES_PER_MULTI_REQ - 1) + 1; // means we never get 0 sized chunks. List<String> chunk = new ArrayList<String>(); while (iter.hasNext() && chunkSize > 0) { chunk.add(iter.next()); chunkSize--; } MultiMetaDataRequest req = MultiMetaDataRequest.of(chunk); try { Map<String, HeaderDefinition> metaData = session.getMultipleHeaderDefinition(req); resultProcessor.processResult(metaData); //s_logger.info(req.toString()); //s_logger.info(PrettyPrinter.toPrettyPrintedString(metaData)); } catch (QuandlRuntimeException qre) { s_logger.warn("Caught exception", qre); s_logger.info("Continuing..."); } } }
/** * The main body of the code. */ private void run() { QuandlSession session = QuandlSession.create(); Map<String, HeaderDefinition> headers = session.getMultipleHeaderDefinition(MultiMetaDataRequest.of("WIKI/AAPL", "DOE/RWTC", "WIKI/MSFT")); System.out.println(PrettyPrinter.toPrettyPrintedString(headers)); }