in transport/odata-transport/src/main/java/org/apache/airavata/mft/transport/odata/ODataMetadataCollector.java [104:160]
private Optional<FileMetadata> parseXML(String xmlBody) {
try {
DocumentBuilderFactory dbFactory = DocumentBuilderFactory.newInstance();
DocumentBuilder dBuilder = dbFactory.newDocumentBuilder();
Document doc = dBuilder.parse(new InputSource(new StringReader(xmlBody)));
doc.getDocumentElement().normalize();
System.out.print("Root element: ");
System.out.println(doc.getDocumentElement().getNodeName());
NodeList properties = doc.getElementsByTagName("m:properties");
if (properties.getLength() == 1) {
FileMetadata.Builder builder = FileMetadata.newBuilder();
Node propertyNode = properties.item(0);
NodeList childNodes = propertyNode.getChildNodes();
for (int i = 0; i < childNodes.getLength(); i++) {
Node item = childNodes.item(i);
switch (item.getNodeName()) {
case "d:ContentLength":
builder.setResourceSize(Long.parseLong(item.getTextContent()));
break;
case "d:CreationDate":
builder.setCreatedTime(Instant.parse(item.getTextContent() + "Z").toEpochMilli());
break;
case "d:ModificationDate":
builder.setUpdateTime(Instant.parse(item.getTextContent() + "Z").toEpochMilli());
break;
case "d:Name":
builder.setFriendlyName(item.getTextContent());
break;
case "d:Id":
builder.setResourcePath(item.getTextContent());
break;
case "d:Checksum":
NodeList checksumNodes = item.getChildNodes();
for (int j = 0; j < checksumNodes.getLength(); j++) {
Node item1 = checksumNodes.item(j);
if (item1.getNodeName().equals("d:Value")) {
builder.setMd5Sum(item1.getTextContent());
}
}
break;
}
}
return Optional.of(builder.build());
}
} catch (Exception e) {
logger.warn("Failed while parsing provided XML body", e);
}
return Optional.empty();
}