Finished DeliveryRequestHandler.
This commit is contained in:
@@ -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);
|
||||
}
|
||||
}
|
||||
@@ -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 {
|
||||
|
||||
Reference in New Issue
Block a user