diff --git a/gemp-lotr/gemp-lotr-async/src/main/java/com/gempukku/lotro/async/handler/DeckRequestHandler.java b/gemp-lotr/gemp-lotr-async/src/main/java/com/gempukku/lotro/async/handler/DeckRequestHandler.java
index 772b09a37..b281a4f45 100644
--- a/gemp-lotr/gemp-lotr-async/src/main/java/com/gempukku/lotro/async/handler/DeckRequestHandler.java
+++ b/gemp-lotr/gemp-lotr-async/src/main/java/com/gempukku/lotro/async/handler/DeckRequestHandler.java
@@ -5,6 +5,7 @@ import com.gempukku.lotro.async.ResponseWriter;
import com.gempukku.lotro.common.JSONDefs;
import com.gempukku.lotro.common.Side;
import com.gempukku.lotro.db.DeckDAO;
+import com.gempukku.lotro.db.DeckSerialization;
import com.gempukku.lotro.draft2.SoloDraftDefinitions;
import com.gempukku.lotro.game.*;
import com.gempukku.lotro.game.formats.LotroFormatLibrary;
@@ -77,7 +78,9 @@ public class DeckRequestHandler extends LotroServerRequestHandler implements Uri
getDeckStats(request, responseWriter);
} else if (uri.equals("/formats") && request.method() == HttpMethod.POST) {
getAllFormats(request, responseWriter);
- } else {
+ } else if (uri.equals("/convert") && request.method() == HttpMethod.POST) {
+ convertErrata(request, responseWriter);
+ }else {
throw new HttpProcessingException(404);
}
}
@@ -444,6 +447,24 @@ public class DeckRequestHandler extends LotroServerRequestHandler implements Uri
responseWriter.writeXmlResponse(serializeDeck(resourceOwner, deckName));
}
+ private void convertErrata(HttpRequest request, ResponseWriter responseWriter) throws IOException, HttpProcessingException, ParserConfigurationException {
+ HttpPostRequestDecoder postDecoder = new HttpPostRequestDecoder(request);
+ try {
+ String participantId = getFormParameterSafely(postDecoder, "participantId");
+ Player resourceOwner = getResourceOwnerSafely(request, participantId);
+
+ String targetFormat = getFormParameterSafely(postDecoder, "targetFormat");
+ String contents = getFormParameterSafely(postDecoder, "deckContents");
+
+ var format = validateFormat(targetFormat);
+ var originalDeck = DeckSerialization.buildDeckFromContents("", contents, format.getName(), "");
+
+ responseWriter.writeXmlResponse(serializeDeck(format.applyErrata(originalDeck)));
+ } finally {
+ postDecoder.destroy();
+ }
+ }
+
private void getLibraryDeck(HttpRequest request, ResponseWriter responseWriter) throws HttpProcessingException, ParserConfigurationException {
QueryStringDecoder queryDecoder = new QueryStringDecoder(request.uri());
String deckName = getQueryParameterSafely(queryDecoder, "deckName");
diff --git a/gemp-lotr/gemp-lotr-async/src/main/web/deckBuild.html b/gemp-lotr/gemp-lotr-async/src/main/web/deckBuild.html
index 2ff487d5a..4bd545aca 100644
--- a/gemp-lotr/gemp-lotr-async/src/main/web/deckBuild.html
+++ b/gemp-lotr/gemp-lotr-async/src/main/web/deckBuild.html
@@ -95,6 +95,10 @@
+
+