X-Git-Url: https://git.ktnx.net/?a=blobdiff_plain;f=app%2Fsrc%2Fmain%2Fjava%2Fnet%2Fktnx%2Fmobileledger%2Fasync%2FSendTransactionTask.java;h=f7370adb506528e6336a55e94e08b3e26529013c;hb=5df10dc0b58df4d4be4e9ab34f1e0f477ca46766;hp=847e8c2ff192566e6fca901b92d3ab8224f87a4c;hpb=8d3070d2a06a87f856fc697d7c9ffa9e00b03c71;p=mobile-ledger.git diff --git a/app/src/main/java/net/ktnx/mobileledger/async/SendTransactionTask.java b/app/src/main/java/net/ktnx/mobileledger/async/SendTransactionTask.java index 847e8c2f..f7370adb 100644 --- a/app/src/main/java/net/ktnx/mobileledger/async/SendTransactionTask.java +++ b/app/src/main/java/net/ktnx/mobileledger/async/SendTransactionTask.java @@ -1,5 +1,5 @@ /* - * Copyright © 2019 Damyan Ivanov. + * Copyright © 2020 Damyan Ivanov. * This file is part of MoLe. * MoLe is free software: you can distribute it and/or modify it * under the term of the GNU General Public License as published by @@ -17,21 +17,19 @@ package net.ktnx.mobileledger.async; -import android.content.res.Resources; import android.os.AsyncTask; import android.util.Log; -import android.util.SparseArray; -import com.fasterxml.jackson.databind.ObjectMapper; -import com.fasterxml.jackson.databind.ObjectWriter; - -import net.ktnx.mobileledger.R; +import net.ktnx.mobileledger.db.Profile; +import net.ktnx.mobileledger.json.API; +import net.ktnx.mobileledger.json.ApiNotSupportedException; +import net.ktnx.mobileledger.json.Gateway; import net.ktnx.mobileledger.model.LedgerTransaction; import net.ktnx.mobileledger.model.LedgerTransactionAccount; -import net.ktnx.mobileledger.model.MobileLedgerProfile; import net.ktnx.mobileledger.utils.Globals; import net.ktnx.mobileledger.utils.Logger; import net.ktnx.mobileledger.utils.NetworkUtil; +import net.ktnx.mobileledger.utils.SimpleDate; import net.ktnx.mobileledger.utils.UrlEncodedFormData; import java.io.BufferedReader; @@ -41,8 +39,6 @@ import java.io.InputStreamReader; import java.io.OutputStream; import java.net.HttpURLConnection; import java.nio.charset.StandardCharsets; -import java.util.Date; -import java.util.GregorianCalendar; import java.util.List; import java.util.Locale; import java.util.Map; @@ -60,55 +56,38 @@ import static net.ktnx.mobileledger.utils.Logger.debug; public class SendTransactionTask extends AsyncTask { private final TaskCallback taskCallback; + private final Profile mProfile; + private final boolean simulate; protected String error; private String token; private String session; - private LedgerTransaction ltr; - private MobileLedgerProfile mProfile; - private boolean simulate = false; + private LedgerTransaction transaction; - public SendTransactionTask(TaskCallback callback, MobileLedgerProfile profile, + public SendTransactionTask(TaskCallback callback, Profile profile, boolean simulate) { taskCallback = callback; mProfile = profile; this.simulate = simulate; } - public SendTransactionTask(TaskCallback callback, MobileLedgerProfile profile) { + public SendTransactionTask(TaskCallback callback, Profile profile) { taskCallback = callback; mProfile = profile; simulate = false; } - private boolean send_1_15_OK() throws IOException { - HttpURLConnection http = NetworkUtil.prepareConnection(mProfile, "add"); - http.setRequestMethod("PUT"); - http.setRequestProperty("Content-Type", "application/json"); - http.setRequestProperty("Accept", "*/*"); - - net.ktnx.mobileledger.json.v1_15.ParsedLedgerTransaction jsonTransaction = - net.ktnx.mobileledger.json.v1_15.ParsedLedgerTransaction.fromLedgerTransaction(ltr); - ObjectMapper mapper = new ObjectMapper(); - ObjectWriter writer = - mapper.writerFor(net.ktnx.mobileledger.json.v1_15.ParsedLedgerTransaction.class); - String body = writer.writeValueAsString(jsonTransaction); - - return sendRequest(http, body); - } - private boolean send_1_14_OK() throws IOException { + private void sendOK(API apiVersion) throws IOException, ApiNotSupportedException { HttpURLConnection http = NetworkUtil.prepareConnection(mProfile, "add"); http.setRequestMethod("PUT"); http.setRequestProperty("Content-Type", "application/json"); http.setRequestProperty("Accept", "*/*"); - net.ktnx.mobileledger.json.v1_14.ParsedLedgerTransaction jsonTransaction = - net.ktnx.mobileledger.json.v1_14.ParsedLedgerTransaction.fromLedgerTransaction(ltr); - ObjectMapper mapper = new ObjectMapper(); - ObjectWriter writer = - mapper.writerFor(net.ktnx.mobileledger.json.v1_14.ParsedLedgerTransaction.class); - String body = writer.writeValueAsString(jsonTransaction); + Gateway gateway = Gateway.forApiVersion(apiVersion); + String body = gateway.transactionSaveRequest(transaction); - return sendRequest(http, body); + Logger.debug("network", "Sending using API " + apiVersion); + sendRequest(http, body); } - private boolean sendRequest(HttpURLConnection http, String body) throws IOException { + private void sendRequest(HttpURLConnection http, String body) + throws IOException, ApiNotSupportedException { if (simulate) { debug("network", "The request would be: " + body); try { @@ -120,7 +99,7 @@ public class SendTransactionTask extends AsyncTask map = new SparseArray<>(); - - static { - for (API item : API.values()) { - map.put(item.value, item); - } - } - - private int value; - - API(int value) { - this.value = value; - } - public static API valueOf(int i) { - return map.get(i, auto); - } - public int toInt() { - return this.value; - } - public String getDescription(Resources resources) { - switch (this) { - case auto: - return resources.getString(R.string.api_auto); - case html: - return resources.getString(R.string.api_html); - case pre_1_15: - return resources.getString(R.string.api_pre_1_15); - case post_1_14: - return resources.getString(R.string.api_post_1_14); - default: - throw new IllegalStateException("Unexpected value: " + value); - } - } - } -} +} \ No newline at end of file