/** * Method responsible for creating Document type response * * @param responseObject * @return Document or Null if exception occurs */ protected Document createResponseObject(Map<String, String> responseObject) throws ResponseException { try { DocumentBuilderFactory docFactory = DocumentBuilderFactory.newInstance(); DocumentBuilder docBuilder = docFactory.newDocumentBuilder(); // root elements Document doc = docBuilder.newDocument(); Element rootElement = doc.createElement("snmp-response-message"); doc.appendChild(rootElement); Element status = doc.createElement("status"); rootElement.appendChild(status); Element result = doc.createElement("result"); result.appendChild(doc.createTextNode(String.valueOf(resultCode))); status.appendChild(result); Element description = doc.createElement("description"); description.appendChild(doc.createTextNode(descriptionText)); status.appendChild(description); Element operation = doc.createElement("weatherProbe"); rootElement.appendChild(operation); Attr attr = doc.createAttribute("ip"); attr.setValue(att.get("IP-ADDRESS")); operation.setAttributeNode(attr); if (resultCode != 0) { return doc; } for (Map.Entry<String, String> entry : responseObject.entrySet()) { Element nextElement = doc.createElement(entry.getKey()); nextElement.appendChild(doc.createTextNode(entry.getValue())); operation.appendChild(nextElement); } return doc; } catch (ParserConfigurationException e) { LOG.error(e.toString()); throw new ResponseException( "<snmp-response-message><status><result>2</result><description>" + e.toString() + "</description></status><weatherProbe ip=\"" + att.get("IP-ADDRESS") + "\"/></snmp-response-message>"); } }
/** * @param list * @param document * @param parent */ void addAttributesFromListToNode(AttributeList list, Document document, Node parent) { DicomDictionary dictionary = list.getDictionary(); Iterator i = list.values().iterator(); while (i.hasNext()) { Attribute attribute = (Attribute) i.next(); AttributeTag tag = attribute.getTag(); String elementName = dictionary.getNameFromTag(tag); if (elementName == null) { elementName = makeElementNameFromHexadecimalGroupElementValues(tag); } Node node = document.createElement(elementName); parent.appendChild(node); { Attr attr = document.createAttribute("group"); attr.setValue(HexDump.shortToPaddedHexString(tag.getGroup())); node.getAttributes().setNamedItem(attr); } { Attr attr = document.createAttribute("element"); attr.setValue(HexDump.shortToPaddedHexString(tag.getElement())); node.getAttributes().setNamedItem(attr); } { Attr attr = document.createAttribute("vr"); attr.setValue(ValueRepresentation.getAsString(attribute.getVR())); node.getAttributes().setNamedItem(attr); } if (attribute instanceof SequenceAttribute) { int count = 0; Iterator si = ((SequenceAttribute) attribute).iterator(); while (si.hasNext()) { SequenceItem item = (SequenceItem) si.next(); Node itemNode = document.createElement("Item"); Attr numberAttr = document.createAttribute("number"); numberAttr.setValue(Integer.toString(++count)); itemNode.getAttributes().setNamedItem(numberAttr); node.appendChild(itemNode); addAttributesFromListToNode(item.getAttributeList(), document, itemNode); } } else { // Attr attr = document.createAttribute("value"); // attr.setValue(attribute.getDelimitedStringValuesOrEmptyString()); // node.getAttributes().setNamedItem(attr); // node.appendChild(document.createTextNode(attribute.getDelimitedStringValuesOrEmptyString())); String values[] = null; try { values = attribute.getStringValues(); } catch (DicomException e) { // e.printStackTrace(System.err); } if (values != null) { for (int j = 0; j < values.length; ++j) { Node valueNode = document.createElement("value"); Attr numberAttr = document.createAttribute("number"); numberAttr.setValue(Integer.toString(j + 1)); valueNode.getAttributes().setNamedItem(numberAttr); valueNode.appendChild(document.createTextNode(values[j])); node.appendChild(valueNode); } } } } }