/* * Copyright (c) 2012-2015 iWave Software LLC * All Rights Reserved */ package com.iwave.ext.windows.winrm.wmi; import com.iwave.ext.windows.model.wmi.MSClusterToNetworkInterface; import com.iwave.ext.windows.winrm.WinRMConstants; import com.iwave.ext.windows.winrm.WinRMEnumerateOperation; import com.iwave.ext.windows.winrm.WinRMTarget; import com.iwave.ext.xml.XmlUtils; import org.w3c.dom.Element; import javax.xml.xpath.XPath; import javax.xml.xpath.XPathExpression; import java.util.List; public class ListClusterToNetworkInterfaceQuery extends WinRMEnumerateOperation<MSClusterToNetworkInterface> { public static final String CLUSTER_RESOURCE_TO_NETWORK_INTERFACE = WinRMConstants.WMI_BASE_URI + "root/mscluster/MSCluster_ClusterToNetworkInterface"; private static final XPath XPATH = XmlUtils.createXPath(String.format("ns=%s", CLUSTER_RESOURCE_TO_NETWORK_INTERFACE)); private static final XPathExpression CLUSTER_TO_NETWORK_INTERFACE_EXPR = XmlUtils.compileXPath(XPATH, "ns:MSCluster_ClusterToNetworkInterface"); private static final XPathExpression GROUP_COMPONENT_EXPR = XmlUtils.compileXPath(XPATH, "ns:GroupComponent"); private static final XPathExpression PART_COMPONENT_EXPR = XmlUtils.compileXPath(XPATH, "ns:PartComponent"); private static final XPathExpression SELECTOR_EXPR = XmlUtils.compileXPath(WinRMConstants.XPATH, "*/*/w:Selector"); public ListClusterToNetworkInterfaceQuery(WinRMTarget target) { super(target, CLUSTER_RESOURCE_TO_NETWORK_INTERFACE); } @Override protected void processItems(Element items, List<MSClusterToNetworkInterface> results) { for (Element e : XmlUtils.selectElements(CLUSTER_TO_NETWORK_INTERFACE_EXPR, items)) { MSClusterToNetworkInterface resourceToDisk = new MSClusterToNetworkInterface(); resourceToDisk.setClusterName(getClusterName(e)); resourceToDisk.setNetworkInterface(getNetworkInterface(e)); results.add(resourceToDisk); } } private String getNetworkInterface(Element parent) { Element partComponent = XmlUtils.selectElement(PART_COMPONENT_EXPR, parent); Element selector = XmlUtils.selectElement(SELECTOR_EXPR, partComponent); return selector.getTextContent(); } private String getClusterName(Element parent) { Element partComponent = XmlUtils.selectElement(GROUP_COMPONENT_EXPR, parent); return getSelector(partComponent); } public String getSelector(Element parent) { Element selector = XmlUtils.selectElement(SELECTOR_EXPR, parent); return XmlUtils.getText(selector); } }