/** * Get featureOfInterest identifiers for requested parameters * * @param req * GetFeatureOfInterest request * @param session * Hibernate session * @return Resulting FeatureOfInterest identifiers list * @throws OwsExceptionReport * If an error occurs during processing */ private Collection<AbstractFeatureEntity> queryFeaturesForParameter(GetFeatureOfInterestRequest req, Session session) throws OwsExceptionReport { // try { Collection<DatasetEntity> datasets = new DatasetDao(session).get(createDbQuery(req)); if (datasets != null) { return datasets.stream() .filter(d -> d.isSetFeature() && (d.isPublished() || !d.isPublished() && d.getValueType().equalsIgnoreCase(NotInitializedDataset.DATASET_TYPE))) .map(d -> d.getFeature()).collect(Collectors.toSet()); } return Collections.emptySet(); // return new FeatureDao(session).getAllInstances(createDbQuery(req)); // } catch (DataAccessException dae) { // throw new NoApplicableCodeException().causedBy(dae) // .withMessage("Error while querying data for GetFeatureOfInterest!"); // } }
private List<ReferenceValueOutput<QuantityValue>> createReferenceValueOutputs(QuantityDatasetEntity series, DbQuery query, QuantityDataRepository repository, Session session) throws DataAccessException { List<ReferenceValueOutput<QuantityValue>> outputs = new ArrayList<>(); List<QuantityDatasetEntity> referenceValues = series.getReferenceValues(); DataDao<QuantityDataEntity> dataDao = createDataDao(session); for (DatasetEntity referenceSeriesEntity : referenceValues) { if (referenceSeriesEntity.isPublished() && referenceSeriesEntity instanceof QuantityDatasetEntity) { ReferenceValueOutput<QuantityValue> refenceValueOutput = new ReferenceValueOutput<>(); ProcedureEntity procedure = referenceSeriesEntity.getProcedure(); refenceValueOutput.setLabel(procedure.getNameI18n(query.getLocale())); refenceValueOutput.setReferenceValueId(referenceSeriesEntity.getId() .toString()); QuantityDatasetEntity quantityDatasetEntity = (QuantityDatasetEntity) referenceSeriesEntity; QuantityDataEntity lastValue = dataDao.getDataValueViaTimeend(series, query); refenceValueOutput.setLastValue(repository.createSeriesValueFor(lastValue, quantityDatasetEntity, query)); outputs.add(refenceValueOutput); } } return outputs; }
@Override public void execute() { LOGGER.debug("Executing FeatureOfInterestCacheUpdate"); startStopwatch(); try { Collection<FeatureEntity> features = new FeatureDao(getSession()).get(new DbQuery(IoParameters.createDefaults())); for (FeatureEntity featureEntity : features) { String identifier = featureEntity.getIdentifier(); getCache().addFeatureOfInterest(identifier); Collection<DatasetEntity> datasets = new DatasetDao<>(getSession()).get(createDatasetDbQuery(featureEntity)); if (datasets != null && !datasets.isEmpty()) { if (datasets.stream().anyMatch(d -> d.isPublished() || d instanceof NotInitializedDataset)) { getCache().addPublishedFeatureOfInterest(identifier); } getCache().setProceduresForFeatureOfInterest(identifier, getProcedures(datasets)); } if (featureEntity.isSetName()) { getCache().addFeatureOfInterestIdentifierHumanReadableName(identifier, featureEntity.getName()); } if (featureEntity.hasParents()) { getCache().addParentFeatures(identifier, getParents(featureEntity)); } } } catch (HibernateException he) { getErrors().add(new NoApplicableCodeException().causedBy(he).withMessage("Error while updating featureOfInterest cache!")); } LOGGER.debug("Finished executing FeatureOfInterestCacheUpdate ({})", getStopwatchResult()); }
if (datasets.stream().anyMatch(d -> d.isPublished() || d instanceof NotInitializedDataset)) { getCache().addPublishedObservableProperty(identifier);
protected DatasetEntity getOrInsert(ObservationContext ctx, Data<?> observation, Session session) throws OwsExceptionReport { Criteria criteria = getDefaultAllSeriesCriteria(session); ctx.addIdentifierRestrictionsToCritera(criteria); criteria.setMaxResults(1); LOGGER.debug("QUERY getOrInsertSeries(feature, observableProperty, procedure, offering): {}", HibernateHelper.getSqlString(criteria)); DatasetEntity series = (DatasetEntity) criteria.uniqueResult(); if (series == null || series instanceof NotInitializedDataset) { series = preCheckDataset(ctx, observation, series, session); } if (series == null || (series.isSetFeature() && !series.getFeature().getIdentifier().equals(ctx.getFeatureOfInterest().getIdentifier()))) { series = (DatasetEntity) getDatasetFactory().visit(observation); ctx.addValuesToSeries(series); series.setDeleted(false); series.setPublished(ctx.isPublish()); } else if (!series.isSetFeature()) { ctx.addValuesToSeries(series); series.setDeleted(false); series.setPublished(ctx.isPublish()); } else if (ctx.isPublish() && !series.isPublished()) { series.setPublished(ctx.isPublish()); } else if (series.isDeleted()) { series.setDeleted(false); } else { return series; } session.saveOrUpdate(series); session.flush(); return series; }
protected DatasetEntity getOrInsert(ObservationContext ctx, Data<?> observation, Session session) throws OwsExceptionReport { Criteria criteria = getDefaultAllSeriesCriteria(session); ctx.addIdentifierRestrictionsToCritera(criteria); criteria.setMaxResults(1); LOGGER.debug("QUERY getOrInsertSeries(feature, observableProperty, procedure, offering): {}", HibernateHelper.getSqlString(criteria)); DatasetEntity series = (DatasetEntity) criteria.uniqueResult(); if (series == null || series instanceof NotInitializedDataset) { series = preCheckDataset(ctx, observation, series, session); } if (series == null || (series.isSetFeature() && !series.getFeature().getIdentifier().equals(ctx.getFeatureOfInterest().getIdentifier()))) { series = (DatasetEntity) getDatasetFactory().visit(observation); ctx.addValuesToSeries(series); series.setDeleted(false); series.setPublished(ctx.isPublish()); } else if (!series.isSetFeature()) { ctx.addValuesToSeries(series); series.setDeleted(false); series.setPublished(ctx.isPublish()); } else if (ctx.isPublish() && !series.isPublished()) { series.setPublished(ctx.isPublish()); } else if (series.isDeleted()) { series.setDeleted(false); } else { return series; } session.saveOrUpdate(series); session.flush(); return series; }
protected void getProcedureInformationFromDbAndAddItToCacheMaps() throws OwsExceptionReport { if (datasets != null) { String identifier = procedure.getIdentifier(); getCache().addProcedure(identifier); if (!datasets.isEmpty() && datasets.stream() .anyMatch(d -> d.isPublished() || d instanceof NotInitializedDataset && !d.isDeleted())) { getCache().addPublishedProcedure(identifier); } if (procedure.isSetName()) { getCache().addProcedureIdentifierHumanReadableName(identifier, procedure.getName()); } getCache().setOfferingsForProcedure(identifier, DatasourceCacheUpdateHelper .getAllOfferingIdentifiersFromDatasets(datasets)); getCache().setObservablePropertiesForProcedure(identifier, DatasourceCacheUpdateHelper .getAllObservablePropertyIdentifiersFromDatasets(datasets)); if (procedure.hasParents()) { Collection<String> parents = getParents(procedure); getCache().addParentProcedures(identifier, parents); getCache().addPublishedProcedures(parents); } TimePeriod phenomenonTime = new TimePeriod(); for (DatasetEntity dataset : datasets) { OfferingEntity offering = dataset.getOffering(); phenomenonTime.extendToContain( new TimePeriod(offering.getPhenomenonTimeStart(), offering.getPhenomenonTimeEnd())); } getCache().setMinPhenomenonTimeForProcedure(identifier, phenomenonTime.getStart()); getCache().setMaxPhenomenonTimeForProcedure(identifier, phenomenonTime.getEnd()); } }
.anyMatch(d -> d.isPublished() || d instanceof NotInitializedDataset && !d.isDeleted())) { getCache().addPublishedOffering(identifier);