/** * Factory method to create a meta data request instance. * * @param quandlCodes the list of quandl codes for the meta data required, not null * @return an instance of the MetaDataRequest for the given quandlCode, not null */ public static MultiMetaDataRequest of(final List<String> quandlCodes) { ArgumentChecker.notNullOrEmpty(quandlCodes, "quandlCodes"); return new MultiMetaDataRequest(quandlCodes); }
/** * Append any specified parameters to the provided WebTarget. * * @param webTarget a web target used by the Jersey Client API, not null * @return the WebTarget with any path and query parameters appended, not null */ public WebTarget appendPathAndQueryParameters(final WebTarget webTarget) { ArgumentChecker.notNull(webTarget, "webTarget"); WebTarget resultTarget = webTarget; resultTarget = resultTarget.path(MULTI_SET_NAME + EXTENSION); resultTarget = resultTarget.queryParam(COLUMNS_PARAM, buildCodeList(_quandlCodes)); // This is a hack that stops Quandl from returning all the data as part of the query resultTarget = resultTarget.queryParam(EXCLUDE_DATA_PARAM, INFINITE_FUTURE); return resultTarget; }
/** * Process a multi-metadata request into a descriptive title string. * @param request the multi-metadata request * @return the title string */ public String processMultiMetaDataRequest(final MultiMetaDataRequest request) { StringBuilder result = new StringBuilder(); for (String code : request.getQuandlCodes()) { if (result.length() > 0) { result.append(","); } result.append(code); } return result.toString(); } /**
@Test(expectedExceptions = QuandlRuntimeException.class) public final void testMultiMetaDataRequest() { MultiMetaDataRequest.of((List<String>) null); }
@Test(expectedExceptions = QuandlRuntimeException.class) public final void testMultiMetaDataRequestVarArgs() { MultiMetaDataRequest.of((String[]) null); }
@Test(expectedExceptions = QuandlRuntimeException.class) public void testEmptyGetMultiMetaData() { QuandlSession session = getTestSession("https://www.quandl.com/api/v3/multisets.json?columns=WIKI.MSFT,OFDP.FUTURE_CL1,WIKI.LIFE&trim_start=2100-01-01"); MetaDataResult result = session.getMetaData(MultiMetaDataRequest.of()); // expect this to throw an exception Assert.assertEquals(result, MetaDataResult.of(new JSONObject())); }
/** * Factory method to create a meta data request instance. * * @param quandlCodes the list of quandl codes for the meta data required (varargs), not null * @return an instance of the MetaDataRequest for the given quandlCode, not null */ public static MultiMetaDataRequest of(final String... quandlCodes) { ArgumentChecker.notNullOrEmpty(quandlCodes, "quandlCodes"); return new MultiMetaDataRequest(Arrays.asList(quandlCodes)); }
@Override public Map<String, HeaderDefinition> getMultipleHeaderDefinition(final MultiMetaDataRequest request) { final Map<String, HeaderDefinition> bulkMetaData = new LinkedHashMap<String, HeaderDefinition>(); for (final String quandlCode : request.getQuandlCodes()) { try { MetaDataResult metaData = getMetaData(MetaDataRequest.of(quandlCode)); bulkMetaData.put(quandlCode, metaData.getHeaderDefinition()); } catch (final QuandlRuntimeException qre) { s_logger.error("There was a problem requesting metadata for {}, skipping", quandlCode, qre); continue; } } return bulkMetaData; }
/** * Run a set of randomized Multi meta data 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 */ @SuppressWarnings("unused") private void runMultiMetaDataRequests(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 { MetaDataResult metaData = session.getMetaData(req); resultProcessor.processResult(metaData); //s_logger.info(req.toString()); //s_logger.info(PrettyPrinter.toPrettyPrintedString(metaData.getRawJSON())); } catch (QuandlRuntimeException qre) { s_logger.warn("Caught exception", qre); s_logger.info("Continuing..."); } } }
/** * 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(); MetaDataResult metaData = session.getMetaData(MultiMetaDataRequest.of("WIKI/AAPL", "DOE/RWTC", "WIKI/MSFT")); System.out.println(metaData.toPrettyPrintedString()); }
/** * 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)); }
/** * The main body of the code. */ private void run() { QuandlSession quandl = QuandlSession.create(); SearchResult searchResult = quandl.search(SearchRequest.Builder.ofQuery("Apple").withMaxPerPage(2).build()); System.out.println(searchResult.toPrettyPrintedString()); for (MetaDataResult metaData : searchResult.getMetaDataResultList()) { System.out.println(PrettyPrinter.toPrettyPrintedString(metaData.getRawJSON())); } TabularResult tabularResult = null; tabularResult = quandl.getDataSet(DataSetRequest.Builder.of("WIKI/AAPL").withFrequency(Frequency.QUARTERLY) .withColumn(CLOSE_COLUMN).withTransform(Transform.NORMALIZE).build()); System.out.println(PrettyPrinter.toPrettyPrintedString(tabularResult)); TabularResult tabularResultMulti = quandl.getDataSets( MultiDataSetRequest.Builder.of( QuandlCodeRequest.allColumns("WIKI/AAPL"), QuandlCodeRequest.allColumns("DOE/RWTC") ).withStartDate(RECENTISH_DATE) .build()); System.out.println(PrettyPrinter.toPrettyPrintedString(tabularResultMulti)); MetaDataResult metaData = quandl.getMetaData(MetaDataRequest.of("WIKI/AAPL")); System.out.println(PrettyPrinter.toPrettyPrintedString(metaData.getRawJSON())); MetaDataResult metaData2 = quandl.getMetaData(MultiMetaDataRequest.of("WIKI/AAPL", "DOE/RWTC", "WIKI/MSFT")); System.out.println(PrettyPrinter.toPrettyPrintedString(metaData2.getRawJSON())); }