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

📄 httppostpetstoreproxy.java

📁 sun公司的petstore,一个J2ee的示例应用程序.
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
        catch (Exception e) {            e.printStackTrace();            return -1.0f;        }    }    /**     * Return the body of the first element with the specified tag as     * an integer.  We assume that the element has one text node child.     * If anything goes wrong, return null.     */    private int getInt(Document doc, String tag) {        return getInt(doc.getElementsByTagName(tag).item(0));    }    /**     * Return the string value of the specified attribute.  For example     * if node represents <FOO key="bar"/> then return "bar".     */    private String getAttribute(Node node, String key) {        NamedNodeMap nodeMap = node.getAttributes();        if (nodeMap != null) {            Node item = nodeMap.getNamedItem(key);            return (item != null) ? item.getNodeValue() : null;        }        else {            return null;        }    }    private String parseOrderStatus(String s) {        if (s.equals("PENDING")) {            return PetStoreProxy.Order.PENDING;        }        else if (s.equals("APPROVED")) {            return PetStoreProxy.Order.APPROVED;        }        else if (s.equals("DENIED")) {            return PetStoreProxy.Order.DENIED;        }        else if (s.equals("COMPLETED")) {            return PetStoreProxy.Order.COMPLETED;        }        else {            return null;        }    }    private PetStoreProxy.Order parseOrder(Node orderNode) {        String id = null;        String userId = null;        Date date = null;        float amount = -1.0f;        String status = null;        NodeList children = orderNode.getChildNodes();        for(int i = 0; i < children.getLength(); i++) {            Node child = children.item(i);            if (child.getNodeType() != Node.ELEMENT_NODE) {                continue;            }            String name = child.getNodeName();            if (name.equals("OrderId")) {                id = getBody(child);            }            else if (name.equals("UserId")) {                userId = getBody(child);            }            else if (name.equals("OrderDate")) {                date = getDate(child);            }            else if (name.equals("OrderAmount")) {                amount = getFloat(child);            }            else if (name.equals("OrderStatus")) {                status = parseOrderStatus(getBody(child));            }        }        return new PetStoreProxy.Order(id, userId, date, amount, status);    }    public PetStoreProxy.Order[] getOrders(String status) {        StringBuffer sb = new StringBuffer("<Type>GETORDERS</Type>");        sb.append("<Status>");        sb.append(status);        sb.append("</Status>");        Document doc = doHttpPost(genRequest(sb));        NodeList orderNodes = doc.getElementsByTagName("Order");        ArrayList orders = new ArrayList(orderNodes.getLength());        for(int i = 0; i < orderNodes.getLength(); i++) {            PetStoreProxy.Order order = parseOrder(orderNodes.item(i));            if (order != null) {                orders.add(order);            }        }        return (PetStoreProxy.Order[])(orders.toArray(new PetStoreProxy.Order[orders.size()]));    }    /**     * Append "<tag>value</tag>" to the StringBuffer if value is non-null,     * "<tag/>" otherwise.     */    private void appendElement(StringBuffer sb, String tag, String value) {        if (value != null) {            sb.append("<");            sb.append(tag);            sb.append(">");            sb.append(value);            sb.append("</");            sb.append(tag);            sb.append(">\n");        }        else {            sb.append("<");            sb.append(tag);            sb.append("/>");        }    }    private String genSalesRequest(String type, Date start, Date end, String category) {        // check start/end non null, etc.        // check trimmed category isn't zero length        StringBuffer sb = new StringBuffer();        appendElement(sb, "Type", type);        appendElement(sb, "Start", dateFormat.format(start));        appendElement(sb, "End", dateFormat.format(end));        appendElement(sb, "ReqCategory", category);        return genRequest(sb);    }    public PetStoreProxy.Sales[] getRevenue(Date start, Date end, String category) {        String request = genSalesRequest("REVENUE", start, end, category);        Document doc = doHttpPost(request);        String tag = (category == null) ? "Category" : "Item";        NodeList salesNodes = doc.getElementsByTagName(tag);        ArrayList sales = new ArrayList(salesNodes.getLength());        for(int i = 0; i < salesNodes.getLength(); i++) {            Node salesNode = salesNodes.item(i);            String key = getAttribute(salesNode, "name");            float revenue = getFloat(salesNode);            if ((key != null) && (revenue >= 0.0)) {                sales.add(new PetStoreProxy.Sales(key, revenue));            }        }        return (PetStoreProxy.Sales[])(sales.toArray(new PetStoreProxy.Sales[sales.size()]));    }    public PetStoreProxy.Sales[] getOrders(Date start, Date end, String category) {        String request = genSalesRequest("ORDERS", start, end, category);        Document doc = doHttpPost(request);        String tag = (category == null) ? "Category" : "Item";        NodeList salesNodes = doc.getElementsByTagName(tag);        ArrayList sales = new ArrayList(salesNodes.getLength());        for(int i = 0; i < salesNodes.getLength(); i++) {            Node salesNode = salesNodes.item(i);            String key = getAttribute(salesNode, "name");            int nOrders = getInt(salesNode);            if ((key != null) && (nOrders >= 0)) {                sales.add(new PetStoreProxy.Sales(key, nOrders));            }        }        return (PetStoreProxy.Sales[])(sales.toArray(new PetStoreProxy.Sales[sales.size()]));    }    public void updateStatus(PetStoreProxy.Order[] orders, String status) {        StringBuffer sb = new StringBuffer();        appendElement(sb, "Type", "UPDATESTATUS");        appendElement(sb, "TotalCount", Integer.toString(orders.length));        for(int i = 0; i < orders.length; i++) {            sb.append("<Order>");            appendElement(sb, "OrderId", orders[i].getId());            appendElement(sb, "OrderStatus", status);            sb.append("</Order>");        }        Document doc = doHttpPost(genRequest(sb));        if (!getBody(doc, "Status").equals("SUCCESS")) {            // throw an exception        }    }    public void updateStatus(PetStoreProxy.Order order, String status) {        updateStatus(new PetStoreProxy.Order[]{order}, status);    }    /*    public static void main(String[] args) throws Exception    {        String host = (args.length >= 1) ? args[0] : "localhost";        String port = (args.length >= 2) ? args[1] : "8000";        PetStoreHttpPostBD server = new PetStoreHttpPostBD(host, port);        String statusValues[] = {PetStoreProxy.Order.PENDING, PetStoreProxy.Order.APPROVED};        for(int i = 0; i < statusValues.length; i++) {            System.out.println("Status = " + statusValues[i]);            PetStoreProxy.Order[] orders = server.getOrders(statusValues[i]);            for(int j = 0; j < orders.length; j++) {                System.out.println(orders[j]);            }        }        PetStoreProxy.Order[] orders = server.getOrders(PetStoreProxy.Order.PENDING);        server.updateStatus(orders, PetStoreProxy.Order.DENIED);        Date startDate = new Date("01/12/2001");        Date endDate = new Date("01/14/2001");        String categories[] = new String[]{null, "CATS", "BIRDS", "REPTILES", "DOGS"};        for(int i = 0; i < categories.length; i++) {            PetStoreProxy.Sales[] sales = server.getRevenue(startDate, endDate, categories[i]);            System.out.println("Category = " + categories[i]);            for(int j = 0; j < sales.length; j++) {                System.out.println(sales[j]);            }        }        for(int i = 0; i < categories.length; i++) {            PetStoreProxy.Sales[] sales = server.getOrders(startDate, endDate, categories[i]);            System.out.println("Category = " + categories[i]);            for(int j = 0; j < sales.length; j++) {                System.out.println(sales[j]);            }        }    }    */}

⌨️ 快捷键说明

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