From f48418a31143167a68e88ebff27a7463329227e4 Mon Sep 17 00:00:00 2001 From: marcins78 Date: Wed, 9 Jan 2013 15:21:25 +0000 Subject: [PATCH] Finished DeliveryRequestHandler. --- .../async/handler/DeliveryRequestHandler.java | 78 +++++++++++++++++++ .../async/handler/RootUriRequestHandler.java | 4 + 2 files changed, 82 insertions(+) create mode 100644 gemp-lotr/gemp-lotr-async/src/main/java/com/gempukku/lotro/async/handler/DeliveryRequestHandler.java diff --git a/gemp-lotr/gemp-lotr-async/src/main/java/com/gempukku/lotro/async/handler/DeliveryRequestHandler.java b/gemp-lotr/gemp-lotr-async/src/main/java/com/gempukku/lotro/async/handler/DeliveryRequestHandler.java new file mode 100644 index 000000000..33cd50379 --- /dev/null +++ b/gemp-lotr/gemp-lotr-async/src/main/java/com/gempukku/lotro/async/handler/DeliveryRequestHandler.java @@ -0,0 +1,78 @@ +package com.gempukku.lotro.async.handler; + +import com.gempukku.lotro.async.ResponseWriter; +import com.gempukku.lotro.collection.TransferDAO; +import com.gempukku.lotro.game.CardCollection; +import com.gempukku.lotro.game.Player; +import org.jboss.netty.channel.MessageEvent; +import org.jboss.netty.handler.codec.http.HttpMethod; +import org.jboss.netty.handler.codec.http.HttpRequest; +import org.w3c.dom.Document; +import org.w3c.dom.Element; + +import javax.ws.rs.WebApplicationException; +import javax.ws.rs.core.Response; +import javax.xml.parsers.DocumentBuilder; +import javax.xml.parsers.DocumentBuilderFactory; +import java.lang.reflect.Type; +import java.util.Map; + +public class DeliveryRequestHandler extends LotroServerRequestHandler implements UriRequestHandler { + private TransferDAO _transferDAO; + + public DeliveryRequestHandler(Map context) { + super(context); + _transferDAO = extractObject(context, TransferDAO.class); + } + + @Override + public void handleRequest(String uri, HttpRequest request, Map context, ResponseWriter responseWriter, MessageEvent e) throws Exception { + if (uri.equals("") && request.getMethod() == HttpMethod.GET) { + getDelivery(request, responseWriter); + } else { + responseWriter.writeError(404); + } + } + + private void getDelivery(HttpRequest request, ResponseWriter responseWriter) throws Exception { + Player resourceOwner = getResourceOwnerSafely(request, null); + Map delivery = _transferDAO.consumeUndeliveredPackages(resourceOwner.getName()); + if (delivery == null) + throw new WebApplicationException(Response.Status.NOT_FOUND); + + DocumentBuilderFactory documentBuilderFactory = DocumentBuilderFactory.newInstance(); + DocumentBuilder documentBuilder = documentBuilderFactory.newDocumentBuilder(); + + Document doc = documentBuilder.newDocument(); + + Element deliveryElem = doc.createElement("delivery"); + for (Map.Entry collectionTypeItems : delivery.entrySet()) { + String collectionType = collectionTypeItems.getKey(); + CardCollection items = collectionTypeItems.getValue(); + + if (items.getAll().size() > 0) { + Element collectionTypeElem = doc.createElement("collectionType"); + collectionTypeElem.setAttribute("name", collectionType); + for (CardCollection.Item item : items.getAll().values()) { + String blueprintId = item.getBlueprintId(); + if (item.getType() == CardCollection.Item.Type.CARD) { + Element card = doc.createElement("card"); + card.setAttribute("count", String.valueOf(item.getCount())); + card.setAttribute("blueprintId", blueprintId); + collectionTypeElem.appendChild(card); + } else { + Element pack = doc.createElement("pack"); + pack.setAttribute("count", String.valueOf(item.getCount())); + pack.setAttribute("blueprintId", blueprintId); + collectionTypeElem.appendChild(pack); + } + } + deliveryElem.appendChild(collectionTypeElem); + } + } + + doc.appendChild(deliveryElem); + + responseWriter.writeResponse(doc); + } +} diff --git a/gemp-lotr/gemp-lotr-async/src/main/java/com/gempukku/lotro/async/handler/RootUriRequestHandler.java b/gemp-lotr/gemp-lotr-async/src/main/java/com/gempukku/lotro/async/handler/RootUriRequestHandler.java index 52ef03aa7..8d4505326 100644 --- a/gemp-lotr/gemp-lotr-async/src/main/java/com/gempukku/lotro/async/handler/RootUriRequestHandler.java +++ b/gemp-lotr/gemp-lotr-async/src/main/java/com/gempukku/lotro/async/handler/RootUriRequestHandler.java @@ -19,6 +19,7 @@ public class RootUriRequestHandler implements UriRequestHandler { private AdminRequestHandler _adminRequestHandler; private ChatRequestHandler _chatRequestHandler; private CollectionRequestHandler _collectionRequestHandler; + private DeliveryRequestHandler _deliveryRequestHandler; public RootUriRequestHandler(Map context) { _hallRequestHandler = new HallRequestHandler(context); @@ -28,6 +29,7 @@ public class RootUriRequestHandler implements UriRequestHandler { _adminRequestHandler = new AdminRequestHandler(context); _chatRequestHandler = new ChatRequestHandler(context); _collectionRequestHandler = new CollectionRequestHandler(context); + _deliveryRequestHandler = new DeliveryRequestHandler(context); } @Override @@ -48,6 +50,8 @@ public class RootUriRequestHandler implements UriRequestHandler { _chatRequestHandler.handleRequest(uri.substring(_serverContextPath.length()+4), request, context, responseWriter, e); } else if (uri.startsWith(_serverContextPath + "collection")) { _collectionRequestHandler.handleRequest(uri.substring(_serverContextPath.length()+10), request, context, responseWriter, e); + } else if (uri.startsWith(_serverContextPath + "delivery")) { + _deliveryRequestHandler.handleRequest(uri.substring(_serverContextPath.length()+8), request, context, responseWriter, e); } else if (uri.equals(_serverContextPath)) { _statusRequestHandler.handleRequest(uri.substring(_serverContextPath.length()), request, context, responseWriter, e); } else {