/* * Copyright (c) 2012-2015 iWave Software LLC * All Rights Reserved */ package com.iwave.ext.windows.winrm.wmi; import java.util.List; import javax.xml.xpath.XPath; import javax.xml.xpath.XPathExpression; import org.w3c.dom.Element; import com.iwave.ext.windows.model.wmi.WindowsVersion; 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; public class GetWindowsVersionQuery extends WinRMEnumerateOperation<WindowsVersion> { private static final String VERSION_RESOURCE_URI = WinRMConstants.WMI_BASE_URI + "root/cimv2/Win32_OperatingSystem"; private static final XPath XPATH = XmlUtils .createXPath("os=http://schemas.microsoft.com/wbem/wsman/1/wmi/root/cimv2/Win32_OperatingSystem"); private static final XPathExpression ITEM_EXPR = XmlUtils.compileXPath(XPATH, "os:Win32_OperatingSystem"); private static final XPathExpression VERSION_EXPR = XmlUtils.compileXPath(XPATH, "os:Version"); private static final XPathExpression CAPTION_EXPR = XmlUtils.compileXPath(XPATH, "os:Caption"); public GetWindowsVersionQuery(WinRMTarget target) { super(target, VERSION_RESOURCE_URI); } @Override protected void processItems(Element items, List<WindowsVersion> results) { for (Element item : XmlUtils.selectElements(ITEM_EXPR, items)) { String version = XmlUtils.selectText(VERSION_EXPR, item); String caption = XmlUtils.selectText(CAPTION_EXPR, item); results.add(new WindowsVersion(version, caption)); } } }