private GetObservationByIdRequest buildGetObservationByIdRequest(String observationId) { GetObservationByIdRequest request = new GetObservationByIdRequest(); ArrayList<String> observationIds = new ArrayList<String>(1); observationIds.add(observationId); request.setObservationIdentifier(observationIds); request.setService(bindingConstants.getSosService()); request.setVersion(bindingConstants.getSosVersion()); SwesExtensions extensions = createSubsettingExtension(true); request.setExtensions(extensions); return request; }
@Override protected GetObservationByIdRequest decodeRequest(JsonNode node) throws OwsExceptionReport { GetObservationByIdRequest req = new GetObservationByIdRequest(); req.setObservationIdentifier(parseObservationIdentifiers(node)); return req; }
private AbstractServiceRequest<?> parseGetObservationById(GetObservationByIdDocument getObsByIdDoc) throws OwsExceptionReport { GetObservationByIdRequest getObsByIdRequest = new GetObservationByIdRequest(); GetObservationById getObsById = getObsByIdDoc.getGetObservationById(); getObsByIdRequest.setService(getObsById.getService()); getObsByIdRequest.setVersion(getObsById.getVersion()); if (getObsById.isSetResponseFormat()) { try { String responseFormat = URLDecoder.decode(getObsById.getResponseFormat(), "UTF-8"); // parse responseFormat through MediaType to ensure it's a mime type and eliminate whitespace variations getObsByIdRequest.setResponseFormat(MediaType.normalizeString(responseFormat)); } catch (UnsupportedEncodingException e) { throw new NoApplicableCodeException().causedBy(e).withMessage("Error while decoding response format!"); } } else { getObsByIdRequest.setResponseFormat(OmConstants.CONTENT_TYPE_OM.toString()); } Enum responseMode = getObsById.getResponseMode(); if (responseMode != null && responseMode.toString().equalsIgnoreCase(SosConstants.RESPONSE_MODE_INLINE)) { getObsByIdRequest.setResponseMode(SosConstants.RESPONSE_MODE_INLINE); } if (getObsById.isSetResultModel()) { getObsByIdRequest.setResultModel(OMHelper.getObservationTypeFor(getObsById.getResultModel())); } getObsByIdRequest.setObservationIdentifier(Arrays.asList(getObsById.getObservationId())); return getObsByIdRequest; }
@Override public AbstractServiceRequest<?> decode(Map<String, String> element) throws OwsExceptionReport { final GetObservationByIdRequest request = new GetObservationByIdRequest(); final CompositeOwsException exceptions = new CompositeOwsException(); request.setObservationIdentifier(KvpHelper.checkParameterMultipleValues(parameterValues, parameterName)); } else { if (!request.isSetService()) { exceptions.add(new MissingServiceParameterException()); if (!request.isSetVersion()) { exceptions.add(new MissingVersionParameterException()); if (!CollectionHelper.isNotEmpty(request.getObservationIdentifier())) { exceptions.add(new MissingParameterValueException(Sos2Constants.GetObservationByIdParams.observation));
private static Set<RequestResponseModifierKeyType> getKeyTypes() { Set<String> services = Sets.newHashSet(SosConstants.SOS); Set<String> versions = Sets.newHashSet(Sos1Constants.SERVICEVERSION, Sos2Constants.SERVICEVERSION); Map<AbstractServiceRequest<?>, AbstractServiceResponse> requestResponseMap = Maps.newHashMap(); requestResponseMap.put(new GetObservationRequest(), new GetObservationResponse()); requestResponseMap.put(new GetObservationByIdRequest(), new GetObservationByIdResponse()); Set<RequestResponseModifierKeyType> keys = Sets.newHashSet(); for (String service : services) { for (String version : versions) { for (AbstractServiceRequest<?> request : requestResponseMap.keySet()) { keys.add(new RequestResponseModifierKeyType(service, version, request)); keys.add(new RequestResponseModifierKeyType(service, version, request, requestResponseMap .get(request))); } } } return keys; }
/** * Query observations for observation identifiers * * @param request * GetObservationById request * @param session * Hibernate session * @return Resulting observations * @throws CodedException * If an error occurs during querying the database */ @SuppressWarnings("unchecked") private List<Observation<?>> queryObservation(GetObservationByIdRequest request, Session session) throws OwsExceptionReport { Criteria c = DaoFactory.getInstance().getObservationDAO() .getObservationClassCriteriaForResultModel(request.getResultModel(), session); c.add(Restrictions.in(AbstractObservation.IDENTIFIER, request.getObservationIdentifier())); LOGGER.debug("QUERY queryObservation(request): {}", HibernateHelper.getSqlString(c)); return c.list(); }
@Override public GetObservationByIdResponse getObservationById(GetObservationByIdRequest request) throws OwsExceptionReport { Session session = null; try { session = sessionHolder.getSession(); List<OmObservation> omObservations = Lists.newArrayList(); if (DaoFactory.getInstance().isSeriesDAO()) { omObservations.addAll(querySeriesObservation(request, session)); } List<Observation<?>> observations = Lists.newArrayList(); observations.addAll(queryObservation(request, session)); omObservations.addAll(HibernateObservationUtilities.createSosObservationsFromObservations( checkObservations(observations, request), request, LocaleHelper.fromRequest(request), session)); GetObservationByIdResponse response = new GetObservationByIdResponse(); response.setService(request.getService()); response.setVersion(request.getVersion()); response.setResponseFormat(request.getResponseFormat()); response.setResultModel(request.getResultModel()); response.setObservationCollection(omObservations); return response; } catch (HibernateException he) { throw new NoApplicableCodeException().causedBy(he).withMessage("Error while querying observation data!"); } catch (ConverterException ce) { throw new NoApplicableCodeException().causedBy(ce).withMessage("Error while processing observation data!"); } finally { sessionHolder.returnSession(session); } }
req.getGetObservationByIdRequest().getObservationIdentifier().get(0)); // TODO NPE handling?
OmObservation observationTemplate = createSosObservationFromSeries.iterator().next(); HibernateSeriesStreamingValue streamingValue = getSeriesStreamingValue(request, series.getSeriesId()); streamingValue.setResponseFormat(request.getResponseFormat()); streamingValue.setObservationTemplate(observationTemplate); observationTemplate.setValue(streamingValue);