Skip to content

Instantly share code, notes, and snippets.

@jimmoores
Created February 16, 2012 17:00
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save jimmoores/1846458 to your computer and use it in GitHub Desktop.
Save jimmoores/1846458 to your computer and use it in GitHub Desktop.
Time Series Update Example
public void updateTimeSeries(String description, ExternalIdBundle externalIdBundle, LocalDateDoubleTimeSeries timeSeries) {
HistoricalTimeSeriesInfoSearchRequest htsSearchReq = new HistoricalTimeSeriesInfoSearchRequest();
ExternalIdSearch idSearch = new ExternalIdSearch(externalIdBundle);
htsSearchReq.setExternalIdSearch(idSearch);
htsSearchReq.setDataField(PRICE_FIELD);
HistoricalTimeSeriesInfoSearchResult searchResult = _htsMaster.search(htsSearchReq);
if (searchResult.getDocuments().size() > 0) {
HistoricalTimeSeriesInfoDocument doc = searchResult.getFirstDocument();
ManageableHistoricalTimeSeries manageableHistoricalTimeSeries = _htsMaster.getTimeSeries(doc.getUniqueId());
LocalDateDoubleTimeSeries ts = manageableHistoricalTimeSeries.getTimeSeries();
LocalDateDoubleTimeSeries existingSeries = timeSeries.subSeries(ts.getEarliestTime(), true, ts.getLatestTime(), true);
if (!existingSeries.equals(ts)) {
// correct any older points that might have changed.
s_logger.info("Correcting time series " + externalIdBundle + "[" + PRICE_FIELD + "] from " + ts.getEarliestTime() + " to " + ts.getLatestTime());
_htsMaster.correctTimeSeriesDataPoints(doc.getObjectId(), existingSeries);
}
LocalDateDoubleTimeSeries newSeries = timeSeries.subSeries(ts.getLatestTime(), false, timeSeries.getLatestTime(), true);
if (newSeries.size() > 0) {
s_logger.info("Updating time series " + externalIdBundle + "[" + PRICE_FIELD + "] from " + newSeries.getEarliestTime() + " to " + newSeries.getLatestTime());
_htsMaster.updateTimeSeriesDataPoints(doc.getObjectId(), newSeries);
}
} else {
// add it
ManageableHistoricalTimeSeriesInfo info = new ManageableHistoricalTimeSeriesInfo();
info.setDataField(PRICE_FIELD);
info.setDataSource(DATA_SOURCE);
info.setDataProvider(DATA_PROVIDER);
info.setObservationTime(OBSERVATION_TIME);
info.setExternalIdBundle(ExternalIdBundleWithDates.of(externalIdBundle));
info.setName(description);
HistoricalTimeSeriesInfoDocument htsInfoDoc = new HistoricalTimeSeriesInfoDocument();
htsInfoDoc.setInfo(info);
HistoricalTimeSeriesInfoDocument addedInfoDoc = _htsMaster.add(htsInfoDoc);
s_logger.info("Adding time series " + externalIdBundle + " from " + timeSeries.getEarliestTime() + " to " + timeSeries.getLatestTime());
_htsMaster.updateTimeSeriesDataPoints(addedInfoDoc.getObjectId(), timeSeries);
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment