public TimeseriesMetadataOutput(IoParameters parameters) { setValue(DatasetOutput.VALUE_TYPE, QuantityValue.TYPE, parameters, this::setValueType); }
private OutputCollection<TimeseriesMetadataOutput> transformStations( IoParameters query, OutputCollection<TimeseriesMetadataOutput> metadata) { for (TimeseriesMetadataOutput timeseriesMetadata : metadata) { transformationService.transformInline(timeseriesMetadata .getStation(), query); } return metadata; }
private String createValueTableHeader(TimeseriesMetadataOutput metadata) { DatasetParameters parameters = metadata.getDatasetParameters(); String phenomenon = parameters.getPhenomenon() .getLabel(); return phenomenon + " (" + metadata.getUom() + ")"; }
private TimeseriesMetadataOutput createCondensed(QuantityDatasetEntity entity, DbQuery query, Session session) throws DataAccessException { IoParameters parameters = query.getParameters(); TimeseriesMetadataOutput result = new TimeseriesMetadataOutput(parameters); String locale = query.getLocale(); AbstractFeatureEntity feature = entity.getFeature(); OfferingEntity offering = entity.getOffering(); PhenomenonEntity phenomenon = entity.getPhenomenon(); ProcedureEntity procedure = entity.getProcedure(); String phenomenonLabel = phenomenon.getLabelFrom(locale); String procedureLabel = procedure.getLabelFrom(locale); String stationLabel = feature.getLabelFrom(locale); String offeringLabel = offering.getLabelFrom(locale); Long id = entity.getId(); String uom = entity.getUnitI18nName(locale); String label = createTimeseriesLabel(phenomenonLabel, procedureLabel, stationLabel, offeringLabel); StationOutput station = createCondensedStation(entity, query.withoutFieldsFilter(), session); result.setId(id.toString()); result.setValue(TimeseriesMetadataOutput.LABEL, label, parameters, result::setLabel); result.setValue(TimeseriesMetadataOutput.UOM, uom, parameters, result::setUom); result.setValue(TimeseriesMetadataOutput.STATION, station, parameters, result::setStation); return result; }
@Override @SuppressWarnings("rawtypes") protected TimeseriesMetadataOutput createExpanded(QuantityDatasetEntity series, DbQuery query, Session session) throws DataAccessException { TimeseriesMetadataOutput output = super.createExpanded(series, query, session); if (Strings.isNullOrEmpty(output.getUom())) { DatasetOutput datasetOutput = datasetRepository.createExpanded(series, query, session); output.setUom(OptionalOutput.of(datasetOutput.getUom())); } return output; } }
public StationOutput getStation() { return getIfSerialized(station); }
@Deprecated public Collection<StatusInterval> getStatusIntervals() { return getIfSerializedCollection(statusIntervals); }
private void addDataTable(TimeSeries timeseries, TimeseriesMetadataOutput metadata, TvpDataCollection<Data<QuantityValue>> dataCollection) { TableType dataTable = timeseries.addNewTable(); // TODO add language context dataTable.setLeftColHeader("Date"); dataTable.setRightColHeader(createValueTableHeader(metadata)); Data<QuantityValue> data = dataCollection.getSeries(metadata.getId()); for (QuantityValue valueEntry : data.getValues()) { Entry entry = dataTable.addNewEntry(); // TODO update TableType schema to allow start/end time entry.setTime(new DateTime(valueEntry.getTimestamp()).toString()); BigDecimal value = valueEntry.getValue(); entry.setValue(value != null ? value.toString() : null); } }
@Deprecated public StyleProperties getRenderingHints() { return getIfSerialized(renderingHints); }
@SuppressWarnings(value = {"unchecked", "deprecation"}) private TimeseriesMetadataOutput addStatusIntervals(TimeseriesMetadataOutput output, IoParameters parameters) { if (parameters.isStatusIntervalsRequests()) { final String valueName = TimeseriesMetadataOutput.STATUS_INTERVALS; Predicate<MetadataExtension< ? >> filter = StatusIntervalsExtension.class::isInstance; Optional<Map<String, Object>> extras = getExtras(output, parameters, filter); extras.ifPresent(it -> { Collection<StatusInterval> value = (Collection<StatusInterval>) it.get(valueName); output.setValue(valueName, value, parameters, output::setStatusIntervals); }); } return output; }
@Override public TimeseriesMetadataOutput getParameter(String timeseriesId, IoParameters query) { TimeseriesMetadataOutput metadata = composedService.getParameter( timeseriesId, query); if (metadata != null) { transformationService.transformInline(metadata.getStation(), query); } return metadata; }
@SuppressWarnings("deprecation") private TimeseriesMetadataOutput addRenderingHints(TimeseriesMetadataOutput output, IoParameters parameters) { if (parameters.isRenderingHintsRequests()) { final String valueName = TimeseriesMetadataOutput.RENDERING_HINTS; Predicate<MetadataExtension< ? >> filter = RenderingHintsExtension.class::isInstance; Optional<Map<String, Object>> extras = getExtras(output, parameters, filter); extras.ifPresent(it -> { StyleProperties value = (StyleProperties) it.get(valueName); output.setValue(valueName, value, parameters, output::setRenderingHints); }); } return output; }
private String getStation(DatasetOutput metadata) { ParameterOutput platform = metadata.getDatasetParameters(true).getPlatform(); if (platform == null) { TimeseriesMetadataOutput output = (TimeseriesMetadataOutput) metadata; return output.getStation().getLabel(); } else { return platform.getLabel(); } }
protected TimeseriesMetadataOutput createExpanded(QuantityDatasetEntity series, DbQuery query, Session session) throws DataAccessException { TimeseriesMetadataOutput result = createCondensed(series, query, session); IoParameters params = query.getParameters(); QuantityDataRepository repository = createRepository(ValueType.DEFAULT_VALUE_TYPE); List<ReferenceValueOutput<QuantityValue>> referenceValues = createReferenceValueOutputs(series, query, repository, session); QuantityValue firstValue = repository.getFirstValue(series, session, query); QuantityValue lastValue = repository.getLastValue(series, session, query); DatasetParameters timeseries = createTimeseriesOutput(series, query.withoutFieldsFilter()); result.setValue(TimeseriesMetadataOutput.REFERENCE_VALUES, referenceValues, params, result::setReferenceValues); result.setValue(TimeseriesMetadataOutput.DATASET_PARAMETERS, timeseries, params, result::setDatasetParameters); result.setValue(TimeseriesMetadataOutput.FIRST_VALUE, firstValue, params, result::setFirstValue); result.setValue(TimeseriesMetadataOutput.LAST_VALUE, lastValue, params, result::setLastValue); return result; }