📄 httppostpetstoreproxy.java
字号:
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 + -