Finished DeliveryRequestHandler.

This commit is contained in:
marcins78
2013-01-09 15:21:25 +00:00
parent 054a141072
commit f48418a311
2 changed files with 82 additions and 0 deletions

View File

@@ -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<Type, Object> context) {
super(context);
_transferDAO = extractObject(context, TransferDAO.class);
}
@Override
public void handleRequest(String uri, HttpRequest request, Map<Type, Object> 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<String, ? extends CardCollection> 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<String, ? extends CardCollection> 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);
}
}

View File

@@ -19,6 +19,7 @@ public class RootUriRequestHandler implements UriRequestHandler {
private AdminRequestHandler _adminRequestHandler;
private ChatRequestHandler _chatRequestHandler;
private CollectionRequestHandler _collectionRequestHandler;
private DeliveryRequestHandler _deliveryRequestHandler;
public RootUriRequestHandler(Map<Type, Object> 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 {