⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 deviceservice.java

📁 Software Testing Automation Framework (STAF)的开发代码
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
/*****************************************************************************//* Software Testing Automation Framework (STAF)                              *//* (C) Copyright IBM Corp. 2001, 2004, 2005                                  *//*                                                                           *//* This software is licensed under the Common Public License (CPL) V1.0.     *//*****************************************************************************/package com.ibm.staf.service.deviceservice;import com.ibm.staf.*;import com.ibm.staf.service.*;import java.util.Map;import java.util.List;import java.util.ArrayList;import java.util.TreeMap;import java.util.Iterator;import java.util.StringTokenizer;public class DeviceService implements STAFServiceInterfaceLevel30{    private final String kVersion = "3.0.1";    private String fServiceName;    private STAFHandle fHandle;    private String fLocalMachineName = "";    // Define any error codes unique to this service    private static final int kDeviceInvalidSerialNumber = 4001;    // STAFCommandParsers for each request    private STAFCommandParser fListParser;    private STAFCommandParser fQueryParser;    private STAFCommandParser fAddParser;    private STAFCommandParser fDeleteParser;    // Map Class Definitions used to create marshalled results    public static STAFMapClassDefinition fListDeviceMapClass;    public static STAFMapClassDefinition fQueryDeviceMapClass;    private String fLineSep;    private TreeMap fPrinterMap = new TreeMap();    private TreeMap fModemMap = new TreeMap();    public DeviceService() {}    public STAFResult init(STAFServiceInterfaceLevel30.InitInfo info)    {        try        {            fServiceName = info.name;            fHandle = new STAFHandle("STAF/Service/" + info.name);        }        catch (STAFException e)        {            return new STAFResult(STAFResult.STAFRegistrationError,                                  e.toString());        }        // ADD parser                fAddParser = new STAFCommandParser();        fAddParser.addOption("ADD", 1,                             STAFCommandParser.VALUENOTALLOWED);        fAddParser.addOption("PRINTER", 1,                             STAFCommandParser.VALUEREQUIRED);        fAddParser.addOption("MODEL", 1,                             STAFCommandParser.VALUEREQUIRED);        fAddParser.addOption("SN", 1,                             STAFCommandParser.VALUEREQUIRED);        fAddParser.addOption("MODEM", 1,                             STAFCommandParser.VALUEREQUIRED);        // this means you can have PRINTER or MODEM, but not both        fAddParser.addOptionGroup("PRINTER MODEM", 0, 1);        // if you specify ADD, MODEL is required        fAddParser.addOptionNeed("ADD", "MODEL");        // if you specify ADD, SN is required        fAddParser.addOptionNeed("ADD", "SN");        // if you specify PRINTER or MODEM, ADD is required        fAddParser.addOptionNeed("PRINTER MODEM", "ADD");        // if you specify ADD, PRINTER or MODEM is required        fAddParser.addOptionNeed("ADD", "PRINTER MODEM");        // LIST parser        fListParser = new STAFCommandParser();        fListParser.addOption("LIST", 1,                              STAFCommandParser.VALUENOTALLOWED);        fListParser.addOption("PRINTERS", 1,                              STAFCommandParser.VALUENOTALLOWED);        fListParser.addOption("MODEMS", 1,                              STAFCommandParser.VALUENOTALLOWED);        // QUERY parser        fQueryParser = new STAFCommandParser();        fQueryParser.addOption("QUERY", 1,                               STAFCommandParser.VALUENOTALLOWED);        fQueryParser.addOption("PRINTER", 1,                               STAFCommandParser.VALUEREQUIRED);        fQueryParser.addOption("MODEM", 1,                               STAFCommandParser.VALUEREQUIRED);        // This means you can have PRINTER or MODEM, but not both        fQueryParser.addOptionGroup("PRINTER MODEM", 0, 1);        // If you specify PRINTER or MODEM, QUERY is required        fQueryParser.addOptionNeed("PRINTER MODEM", "QUERY");        // If you specify QUERY, PRINTER or MODEM is required        fQueryParser.addOptionNeed("QUERY", "PRINTER MODEM");        // DELETE parser        fDeleteParser = new STAFCommandParser();        fDeleteParser.addOption("DELETE", 1,                               STAFCommandParser.VALUENOTALLOWED);        fDeleteParser.addOption("PRINTER", 1,                                STAFCommandParser.VALUEREQUIRED);        fDeleteParser.addOption("MODEM", 1,                                STAFCommandParser.VALUEREQUIRED);        fDeleteParser.addOption("CONFIRM", 1,                               STAFCommandParser.VALUENOTALLOWED);        // This means you must have PRINTER or MODEM, but not both        fDeleteParser.addOptionGroup("PRINTER MODEM", 0, 1);        // If you specify PRINTER or MODEM, DELETE is required        fDeleteParser.addOptionNeed("PRINTER MODEM", "DELETE");        // If you specify DELETE, PRINTER or MODEM is required        fDeleteParser.addOptionNeed("DELETE", "PRINTER MODEM");        // If you specify DELETE, CONFIRM is required        fDeleteParser.addOptionNeed("DELETE", "CONFIRM");        // Construct map class for the result from a LIST request.        fListDeviceMapClass = new STAFMapClassDefinition(            "STAF/Service/Device/ListDevice");        fListDeviceMapClass.addKey("name",    "Name");        fListDeviceMapClass.addKey("type",    "Type");        fListDeviceMapClass.addKey("model",   "Model");        fListDeviceMapClass.addKey("serial#", "Serial Number");        fListDeviceMapClass.setKeyProperty(            "serial#", "display-short-name", "Serial #");        // Construct map class for the result from a QUERY request.        fQueryDeviceMapClass = new STAFMapClassDefinition(            "STAF/Service/Device/QueryDevice");        fQueryDeviceMapClass.addKey("model",   "Model");        fQueryDeviceMapClass.addKey("serial#", "Serial Number");        STAFResult res = new STAFResult();        // Resolve the line separator variable for the local machine        res = STAFUtil.resolveInitVar("{STAF/Config/Sep/Line}", fHandle);        if (res.rc != STAFResult.Ok) return res;                fLineSep = res.result;                 // Resolve the machine name variable for the local machine        res = STAFUtil.resolveInitVar("{STAF/Config/Machine}", fHandle);        if (res.rc != STAFResult.Ok) return res;                fLocalMachineName = res.result;        // Register Help Data        registerHelpData(            kDeviceInvalidSerialNumber,            "Invalid serial number",            "A non-numeric value was specified for serial number");        return new STAFResult(STAFResult.Ok);    }    public STAFResult acceptRequest(STAFServiceInterfaceLevel30.RequestInfo info)    {        String lowerRequest = info.request.toLowerCase();        StringTokenizer requestTokenizer = new StringTokenizer(lowerRequest);        String request = requestTokenizer.nextToken();        // Call the appropriate method to handle the command        if (request.equals("list"))            return handleList(info);        else if (request.equals("query"))            return handleQuery(info);        else if (request.equals("add"))            return handleAdd(info);        else if (request.equals("delete"))            return handleDelete(info);        else if (request.equals("help"))            return handleHelp(info);        else if (request.equals("version"))            return handleVersion(info);        else        {            return new STAFResult(                STAFResult.InvalidRequestString,                "Unknown DeviceService Request: " + lowerRequest);        }    }    private STAFResult handleHelp(STAFServiceInterfaceLevel30.RequestInfo info)    {        // Verify the requester has at least trust level 1        STAFResult trustResult = STAFUtil.validateTrust(            1, fServiceName, "HELP", fLocalMachineName, info);        if (trustResult.rc != STAFResult.Ok) return trustResult;        // Return help text for the service        return new STAFResult(            STAFResult.Ok,            "DeviceService Service Help" + fLineSep +             fLineSep + "ADD     (PRINTER <printerName> | MODEM <modemName>)" +            " MODEL <model> SN <serial#>" + fLineSep +            "DELETE  PRINTER <printerName> | MODEM <modemName> CONFIRM" +            fLineSep + "LIST    [PRINTERS] [MODEMS]" + fLineSep +            "QUERY   PRINTER <printerName> | MODEM <modemName>" + fLineSep +            "VERSION" + fLineSep + "HELP");    }    private STAFResult handleVersion(        STAFServiceInterfaceLevel30.RequestInfo info)    {        // Verify the requester has at least trust level 1        STAFResult trustResult = STAFUtil.validateTrust(            1, fServiceName, "VERSION", fLocalMachineName, info);        if (trustResult.rc != STAFResult.Ok) return trustResult;        // Return the service's version        return new STAFResult(STAFResult.Ok, kVersion);    }    private STAFResult handleAdd(STAFServiceInterfaceLevel30.RequestInfo info)    {        // Verify the requester has at least trust level 3        STAFResult trustResult = STAFUtil.validateTrust(            3, fServiceName, "ADD", fLocalMachineName, info);        if (trustResult.rc != STAFResult.Ok) return trustResult;        // Parse the request        STAFCommandParseResult parsedRequest = fAddParser.parse(info.request);        if (parsedRequest.rc != STAFResult.Ok)        {            return new STAFResult(STAFResult.InvalidRequestString,                                  parsedRequest.errorBuffer);        }        // Resolve any STAF variables in the printer option's value        STAFResult res = new STAFResult();        res = STAFUtil.resolveRequestVar(            parsedRequest.optionValue("printer"), fHandle, info.requestNumber);        if (res.rc != STAFResult.Ok) return res;                String printer = res.result;        // Resolve any STAF variables in the modem option's value        res = STAFUtil.resolveRequestVar(            parsedRequest.optionValue("modem"), fHandle, info.requestNumber);        if (res.rc != STAFResult.Ok) return res;                String modem = res.result;        // Resolve any STAF variables in the model option's value        res = STAFUtil.resolveRequestVar(            parsedRequest.optionValue("model"), fHandle, info.requestNumber);        if (res.rc != STAFResult.Ok) return res;                String model = res.result;        // Resolve any STAF variables in the sn option's value        res = STAFUtil.resolveRequestVar(            parsedRequest.optionValue("sn"), fHandle, info.requestNumber);        if (res.rc != STAFResult.Ok) return res;        String sn = res.result;        // Verify that the serial number is numeric        try        {            new Integer(sn);        }

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -