@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; }
@Override public int hashCode() { // This is a work-around because JSONObject doesn't override hashCode(). // it will be quite expensive, but should suffice. return getRawJSON().toString().hashCode(); } }
/** * {@inheritDoc} */ public MetaDataResult ofMetaData(final JSONObject rawData) { return MetaDataResult.of(rawData); } /**
/** * The main body of the code. */ private void run() { ClassicQuandlSession session = ClassicQuandlSession.create(); SearchResult searchResult = session.search(SearchRequest.Builder.ofQuery("Apple").withMaxPerPage(2).build()); System.out.println("Current page:" + searchResult.getCurrentPage()); System.out.println("Documents per page:" + searchResult.getDocumentsPerPage()); System.out.println("Total matching documents:" + searchResult.getTotalDocuments()); for (MetaDataResult document : searchResult.getMetaDataResultList()) { System.out.println("Quandl code " + document.getQuandlCode() + " matched"); System.out.println("Available columns are: " + document.getHeaderDefinition()); } }
@Test public void testMetaDataResult() { MetaDataResult metaDataResult1 = MetaDataResult.of(getTestObj1()); MetaDataResult metaDataResult2 = MetaDataResult.of(getTestObj2()); MetaDataResult metaDataResult3 = MetaDataResult.of(getTestObj1()); Assert.assertEquals(metaDataResult1, metaDataResult1); Assert.assertEquals(metaDataResult1, metaDataResult3); Assert.assertEquals(metaDataResult3, metaDataResult1); Assert.assertNotEquals(metaDataResult1, metaDataResult2); Assert.assertNotEquals(metaDataResult2, metaDataResult1); // not strictly within the hashCode requirements, but we'd like this to be the case. Assert.assertNotEquals(metaDataResult1.hashCode(), metaDataResult2.hashCode()); Assert.assertEquals(metaDataResult1.hashCode(), metaDataResult1.hashCode()); Assert.assertEquals(metaDataResult1.hashCode(), metaDataResult3.hashCode()); }
/** * The main body of the code. */ private void run() { QuandlSession session = QuandlSession.create(); MetaDataResult metaData = session.getMetaData(MetaDataRequest.of("WIKI/AAPL")); System.out.println(metaData.toPrettyPrintedString()); }
if (searchResult.getMetaDataResultList().size() > 0) { MetaDataResult metaDataResult = searchResult.getMetaDataResultList().get(0); if (metaDataResult.getQuandlCode() != null) { quandlCodes.add(metaDataResult.getQuandlCode()); } else { s_logger.error("Meta data result (for req {}) returned without embedded Quandl code, result was {}", req, metaDataResult);
/** * Get the Quandl code associated with this metadata. * * @return the quandl code (DATASOURCE/CODE form), null if not present. */ public String getQuandlCode() { try { String dataSourceField = getString(DATA_SOURCE_FIELD); String codeField = getString(CODE_FIELD); // if either not present, will throw an exception. return dataSourceField + "/" + codeField; } catch (RuntimeException ex) { return null; } }
/** * Factory method for creating and instance of a MetaDataResult. * * @param jsonObject the JSON object returned by Quandl, not null * @return a MetaDataResult instance, not null */ public static MetaDataResult of(final JSONObject jsonObject) { ArgumentChecker.notNull(jsonObject, "jsonObject"); return new MetaDataResult(jsonObject); }
/** * The main body of the code. */ private void run() { QuandlSession session = QuandlSession.create(); SearchResult searchResult = session.search(new SearchRequest.Builder().withQuery("Apple").withMaxPerPage(2).build()); System.out.println("Current page:" + searchResult.getCurrentPage()); System.out.println("Documents per page:" + searchResult.getDocumentsPerPage()); System.out.println("Total matching documents:" + searchResult.getTotalDocuments()); for (MetaDataResult document : searchResult.getMetaDataResultList()) { System.out.println("Quandl code " + document.getQuandlCode() + " matched"); System.out.println("Available columns are: " + document.getHeaderDefinition()); } }
@Test public void testMetaDataResult() { MetaDataResult metaDataResult1 = MetaDataResult.of(getTestObj1()); MetaDataResult metaDataResult2 = MetaDataResult.of(getTestObj2()); MetaDataResult metaDataResult3 = MetaDataResult.of(getTestObj1()); Assert.assertEquals(metaDataResult1, metaDataResult1); Assert.assertEquals(metaDataResult1, metaDataResult3); Assert.assertEquals(metaDataResult3, metaDataResult1); Assert.assertNotEquals(metaDataResult1, metaDataResult2); Assert.assertNotEquals(metaDataResult2, metaDataResult1); // not strictly within the hashCode requirements, but we'd like this to be the case. Assert.assertNotEquals(metaDataResult1.hashCode(), metaDataResult2.hashCode()); Assert.assertEquals(metaDataResult1.hashCode(), metaDataResult1.hashCode()); Assert.assertEquals(metaDataResult1.hashCode(), metaDataResult3.hashCode()); }
/** * 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()); }
if (searchResult.getMetaDataResultList().size() > 0) { MetaDataResult metaDataResult = searchResult.getMetaDataResultList().get(0); if (metaDataResult.getQuandlCode() != null) { quandlCodes.add(metaDataResult.getQuandlCode()); } else { s_logger.error("Meta data result (for req {}) returned without embedded Quandl code, result was {}", req, metaDataResult);
/** * Extract a list of MetaDataResult objects, each one representing a match. Throws a QuandlRuntimeException if it cannot construct a valid * HeaderDefinition * * @return the header definition, not null */ public List<MetaDataResult> getMetaDataResultList() { JSONArray jsonArray = null; try { jsonArray = _jsonObject.getJSONArray(DATASETS_ARRAY_FIELD); List<MetaDataResult> metaDataResults = new ArrayList<MetaDataResult>(jsonArray.length()); for (int i = 0; i < jsonArray.length(); i++) { metaDataResults.add(MetaDataResult.of(jsonArray.getJSONObject(i))); } return metaDataResults; } catch (JSONException ex) { s_logger.error("Metadata had unexpected structure - could not extract datasets field, was:\n{}", _jsonObject.toString()); throw new QuandlRuntimeException("Metadata had unexpected structure", ex); } }
@Override public boolean equals(final Object obj) { if (this == obj) { return true; } if (obj == null) { return false; } if (!(obj instanceof MetaDataResult)) { return false; } final MetaDataResult other = (MetaDataResult) obj; // This is a work-around because JSONObject doesn't override equals(). // it will be quite expensive, but should suffice. return getRawJSON().toString().equals(other.getRawJSON().toString()); }
/** * The main body of the code. */ private void run() { ClassicQuandlSession session = ClassicQuandlSession.create(); MetaDataResult metaData = session.getMetaData(MetaDataRequest.of("WIKI/AAPL")); System.out.println(metaData.toPrettyPrintedString()); }
@Test(expectedExceptions = QuandlRuntimeException.class) public final void testMetaDataResult() { MetaDataResult.of(null); }
/** * Pretty print a MetaDataResult as an indented piece of JSON code. Throws a QuandlRuntimeException if it can't render the nested * JSONObject to a String. * * @param metaDataResult the metaDataResult, not null * @return a String representation of the object, probably multi-line. */ public static String toPrettyPrintedString(final MetaDataResult metaDataResult) { return toPrettyPrintedString(metaDataResult.getRawJSON()); }
@Test(expectedExceptions = QuandlRuntimeException.class) public final void testMetaDataResult() { MetaDataResult.of(null); }
/** * Load file using internal counter to generate file name and compare contents to the result provided. * @param metaDataResult the result to check file contents against */ public final void processResult(final MetaDataResult metaDataResult) { processResult(metaDataResult.getRawJSON()); }