@Override protected InsertSensorRequest decodeRequest(JsonNode node) throws OwsExceptionReport { final InsertSensorRequest r = new InsertSensorRequest(); final SosInsertionMetadata meta = new SosInsertionMetadata(); meta.setFeatureOfInterestTypes(parseStringOrStringList(node.path(FEATURE_OF_INTEREST_TYPE))); meta.setObservationTypes(parseStringOrStringList(node.path(OBSERVATION_TYPE))); r.setMetadata(meta); r.setObservableProperty(parseStringOrStringList(node.path(OBSERVABLE_PROPERTY))); r.setProcedureDescriptionFormat(node.path(PROCEDURE_DESCRIPTION_FORMAT).textValue()); r.setRelatedFeature(parseFeatureRelationships(node.path(RELATED_FEATURE))); r.setProcedureDescription(parseProcedureDescription(node.path(PROCEDURE_DESCRIPTION), r.getProcedureDescriptionFormat())); return r; }
checkForTransactionalEntity(); final InsertSensorResponse response = new InsertSensorResponse(); response.setService(request.getService()); response.setVersion(request.getVersion()); final String assignedProcedureID = request.getAssignedProcedureIdentifier(); final SosOffering firstAssignedOffering = request.getFirstAssignedOffering(); Session session = null; Transaction transaction = null; final ProcedureDescriptionFormat procedureDescriptionFormat = new ProcedureDescriptionFormatDAO().getOrInsertProcedureDescriptionFormat( request.getProcedureDescriptionFormat(), session); if (procedureDescriptionFormat != null) { final Procedure hProcedure = new ProcedureDAO().getOrInsertProcedure(assignedProcedureID, procedureDescriptionFormat, request.getProcedureDescription(), request.isType(), session); getSensorDescriptionFromProcedureDescription(request.getProcedureDescription(), assignedProcedureID), new DateTime(DateTimeZone.UTC), session); if (!request.isType()) { final List<ObservationType> observationTypes = new ObservationTypeDAO() .getOrInsertObservationTypes(request.getMetadata().getObservationTypes(), session); final List<FeatureOfInterestType> featureOfInterestTypes = new FeatureOfInterestTypeDAO() .getOrInsertFeatureOfInterestTypes(request.getMetadata().getFeatureOfInterestTypes(), session); if (observationTypes != null && featureOfInterestTypes != null) { final List<ObservableProperty> hObservableProperties = getOrInsertNewObservableProperties(request.getObservableProperty(),
@Override protected RestRequest decodePostRequest(HttpServletRequest httpRequest, String pathPayload) throws OwsExceptionReport { if (isContentOfPostRequestValid(httpRequest)) { InsertSensorRequest insertSensorRequest = new InsertSensorRequest(); insertSensorRequest.setVersion(bindingConstants.getSosVersion()); insertSensorRequest.setService(bindingConstants.getSosService()); insertSensorRequest.setProcedureDescriptionFormat(bindingConstants.getDefaultDescribeSensorOutputFormat()); // parse request in xml object and get procedure description XmlObject sensorPostContent = XmlHelper.parseXmlSosRequest(httpRequest); if (sensorPostContent instanceof SensorDocument) { SensorDocument xb_SensorRestDoc = (SensorDocument) sensorPostContent; SensorType xb_SensorRest = xb_SensorRestDoc.getSensor(); AbstractProcessType xb_ProcessRest = xb_SensorRest.getProcess(); SystemType xb_system = (SystemType) xb_ProcessRest.substitute(SensorMLConstants.SYSTEM_QNAME, SystemType.type); SosProcedureDescription procedureDescription = createSosProcedureDescriptionFromSmlSystem(xb_system); insertSensorRequest.setProcedureDescription(procedureDescription); // xmlobject class sosREST:Sensor + links // requires: SosInsertionMetadata insertionMetadata = setInsertionMetadata(insertSensorRequest, xb_system); insertSensorRequest.setMetadata(insertionMetadata); return new SensorsPostRequest(insertSensorRequest,xb_system); } } return null; }
private SosInsertionMetadata setInsertionMetadata(InsertSensorRequest insertSensorRequest, SystemType xb_system) throws OwsExceptionReport { // - one observable property insertSensorRequest.setObservableProperty(getObservablePropertiesFromSmlSystem(xb_system)); SosInsertionMetadata insertionMetadata = new SosInsertionMetadata(); Capabilities xb_insertionMetadata = null; final String insertionMetadataTagName = "InsertionMetadata"; if (xb_system.getCapabilitiesArray().length > 0) { for (Capabilities xb_Capability : xb_system.getCapabilitiesArray()) { if (xb_Capability.isSetName() && xb_Capability.getName().equalsIgnoreCase(insertionMetadataTagName)) { xb_insertionMetadata = xb_Capability; break; } } } if (xb_insertionMetadata == null) { throw new MissingParameterValueException(insertionMetadataTagName); } setAdditionalMetadata(insertionMetadata,xb_insertionMetadata); return insertionMetadata; }