private String addSensorMLWrapperForXmlDescription(final AbstractProcessType xbProcessType) { final SensorMLDocument xbSensorMLDoc = SensorMLDocument.Factory.newInstance(XmlOptionsHelper.getInstance().getXmlOptions()); final net.opengis.sensorML.x101.SensorMLDocument.SensorML xbSensorML = xbSensorMLDoc.addNewSensorML(); xbSensorML.setVersion(SensorMLConstants.VERSION_V101); final Member member = xbSensorML.addNewMember(); final AbstractProcessType xbAbstractProcessType = (AbstractProcessType) member .addNewProcess() .substitute( getQnameForType(xbProcessType.schemaType()), xbProcessType.schemaType()); xbAbstractProcessType.set(xbProcessType); return xbSensorMLDoc.xmlText(XmlOptionsHelper.getInstance().getXmlOptions()); }
private SensorML parseSensorML(final SensorMLDocument xbSensorML) throws OwsExceptionReport { final SensorML sensorML = new SensorML(); // get member process for (final Member xbMember : xbSensorML.getSensorML().getMemberArray()) { if (xbMember.getProcess() != null) { if (xbMember.getProcess() instanceof AbstractProcessType) { final AbstractProcessType xbAbstractProcess = xbMember.getProcess(); AbstractProcess abstractProcess = null; if (xbAbstractProcess.schemaType() == SystemType.type) { abstractProcess = parseSystem((SystemType) xbAbstractProcess); } else if (xbAbstractProcess.schemaType() == ProcessModelType.type) { abstractProcess = parseProcessModel((ProcessModelType) xbAbstractProcess); } else if (xbAbstractProcess.schemaType() == ComponentType.type) { abstractProcess = parseComponent((ComponentType) xbAbstractProcess); } else { throw new InvalidParameterValueException() .at(XmlHelper.getLocalName(xbMember)) .withMessage( "The process of a member of the SensorML Document (%s) is not supported!", xbMember.getProcess().getDomNode().getNodeName()); } sensorML.addMember(abstractProcess); } else { throw new InvalidParameterValueException() .at(XmlHelper.getLocalName(xbMember)) .withMessage( "The process of a member of the SensorML Document (%s) is not supported!", xbMember.getProcess().getDomNode().getNodeName()); } } else { throw new InvalidParameterValueException() .at(XmlHelper.getLocalName(xbMember)) .withMessage( "The process of a member of the SensorML Document is null (%s)!", xbMember.getProcess()); } } sensorML.setSensorDescriptionXmlString( xbSensorML.xmlText(XmlOptionsHelper.getInstance().getXmlOptions())); return sensorML; }
private void parseAbstractProcess( final AbstractProcessType xbAbstractProcess, final AbstractProcess abstractProcess) throws OwsExceptionReport { if (xbAbstractProcess.getId() != null) { abstractProcess.setGmlId(xbAbstractProcess.getId()); } if (xbAbstractProcess.getIdentificationArray() != null) { parseIdentifications(abstractProcess, xbAbstractProcess.getIdentificationArray()); } if (xbAbstractProcess.getClassificationArray() != null) { abstractProcess.setClassifications( parseClassification(xbAbstractProcess.getClassificationArray())); } if (xbAbstractProcess.getCharacteristicsArray() != null) { abstractProcess.setCharacteristics( parseCharacteristics(xbAbstractProcess.getCharacteristicsArray())); } if (xbAbstractProcess.getCapabilitiesArray() != null) { parseCapabilities(abstractProcess, xbAbstractProcess.getCapabilitiesArray()); final List<Integer> capsToRemove = checkCapabilitiesForRemoval(xbAbstractProcess.getCapabilitiesArray()); for (final Integer integer : capsToRemove) { xbAbstractProcess.removeCapabilities(integer); } } if (xbAbstractProcess.isSetDescription()) { abstractProcess.addDescription(xbAbstractProcess.getDescription().getStringValue()); } if (xbAbstractProcess.isSetValidTime()) { abstractProcess.setValidTime(parseValidTime(xbAbstractProcess.getValidTime())); } if (xbAbstractProcess.getContactArray() != null) { abstractProcess.setContact(parseContact(xbAbstractProcess.getContactArray())); } if (xbAbstractProcess.getDocumentationArray() != null) { abstractProcess.setDocumentation( parseDocumentation(xbAbstractProcess.getDocumentationArray())); } if (xbAbstractProcess.getHistoryArray() != null) { abstractProcess.setHistory(parseHistory(xbAbstractProcess.getHistoryArray())); } if (xbAbstractProcess.getKeywordsArray() != null) { abstractProcess.setKeywords(parseKeywords(xbAbstractProcess.getKeywordsArray())); } if (xbAbstractProcess.getNameArray() != null) { final int length = xbAbstractProcess.getNameArray().length; for (int i = 0; i < length; i++) { final Object decodedElement = CodingHelper.decodeXmlElement(xbAbstractProcess.getNameArray(i)); if (decodedElement instanceof CodeType) { abstractProcess.addName((CodeType) decodedElement); } } } }