private String toString(SosProcedureDescription desc, String format) throws OwsExceptionReport { if (desc instanceof SosProcedureDescriptionUnknowType && desc.isSetSensorDescriptionXmlString()) { return desc.getSensorDescriptionXmlString(); } XmlOptions options = XmlOptionsHelper.getInstance().getXmlOptions(); return CodingHelper.encodeObjectToXml(format, desc).xmlText(options); }
/** * Get SensorDescription String from procedure description * * @param procedureDescription * Procedure description * @param procedureIdentifier * Procedure identifier * @return SensorDescription String */ private String getSensorDescriptionFromProcedureDescription(final SosProcedureDescription procedureDescription, final String procedureIdentifier) { if (procedureDescription instanceof SensorML) { final SensorML sensorML = (SensorML) procedureDescription; // if SensorML is not a wrapper if (!sensorML.isWrapper()) { return sensorML.getSensorDescriptionXmlString(); } // if SensorML is a wrapper and member size is 1 else if (sensorML.isWrapper() && sensorML.getMembers().size() == 1) { return sensorML.getMembers().get(0).getSensorDescriptionXmlString(); } else { // TODO: get sensor description for procedure identifier return ""; } } // if procedureDescription not SensorML else { return procedureDescription.getSensorDescriptionXmlString(); } }
@Override public XmlObject encode(final Object response, final Map<HelperValues, String> additionalValues) throws OwsExceptionReport { XmlObject encodedObject = null; if (response instanceof AbstractSensorML) { encodedObject = createSensorDescription((AbstractSensorML) response); } // FIXME workaround? if of type UnknowProcedureType try to parse the // description string, UNIT is missing "NOT_DEFINED"?! else if (response instanceof SosProcedureDescriptionUnknowType) { final String procDescXMLString = ((SosProcedureDescription) response).getSensorDescriptionXmlString(); final AbstractSensorML sensorDesc = new AbstractSensorML(); sensorDesc.setSensorDescriptionXmlString(procDescXMLString); encodedObject = createSensorDescriptionFromString(sensorDesc); } else { throw new UnsupportedEncoderInputException(this, response); } // check if all gml:id are unique XmlHelper.makeGmlIdsUnique(encodedObject.getDomNode()); if (LOGGER.isTraceEnabled()) { LOGGER.debug("Encoded object {} is valid: {}", encodedObject.schemaType().toString(), XmlHelper.validateDocument(encodedObject)); } return encodedObject; }
@Override public XmlObject encode(Object objectToEncode, Map<HelperValues, String> additionalValues) throws OwsExceptionReport, UnsupportedEncoderInputException { XmlObject encodedObject = null; try { if (objectToEncode instanceof SosProcedureDescription) { SosProcedureDescription description = (SosProcedureDescription) objectToEncode; if (description.isSetSensorDescriptionXmlString()) { encodedObject = XmlObject.Factory .parse(((SosProcedureDescription) objectToEncode).getSensorDescriptionXmlString()); addValuesToXmlObject(encodedObject, (SosProcedureDescription) objectToEncode); encodedObject = checkForAdditionalValues(encodedObject, additionalValues); } else { encodedObject = encodeDescription(description, additionalValues); } } else { throw new UnsupportedEncoderInputException(this, objectToEncode); } } catch (final XmlException xmle) { throw new NoApplicableCodeException().causedBy(xmle); } // check if all gml:id are unique XmlHelper.makeGmlIdsUnique(encodedObject.getDomNode()); if (LOGGER.isTraceEnabled()) { LOGGER.debug("Encoded object {} is valid: {}", encodedObject.schemaType().toString(), XmlHelper.validateDocument(encodedObject)); } return encodedObject; }
procedureDescription.getSensorDescriptionXmlString(), currentTime, session);