X-Git-Url: https://git.ktnx.net/?a=blobdiff_plain;f=app%2Fsrc%2Fmain%2Fjava%2Fnet%2Fktnx%2Fmobileledger%2Fjson%2FTransactionListParser.java;h=20bf08b770ffa63e5db7e0693cae9fa999fb1411;hb=7be576998b7449151aabd6b2810990436beaf623;hp=fc17df66574642a1e4fb9a1d1b4ffb8408eb2119;hpb=eccd11f1895e84dcc2a95db41934355311cebe2e;p=mobile-ledger.git diff --git a/app/src/main/java/net/ktnx/mobileledger/json/TransactionListParser.java b/app/src/main/java/net/ktnx/mobileledger/json/TransactionListParser.java index fc17df66..20bf08b7 100644 --- a/app/src/main/java/net/ktnx/mobileledger/json/TransactionListParser.java +++ b/app/src/main/java/net/ktnx/mobileledger/json/TransactionListParser.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,24 +17,28 @@ package net.ktnx.mobileledger.json; -import com.fasterxml.jackson.databind.MappingIterator; -import com.fasterxml.jackson.databind.ObjectMapper; -import com.fasterxml.jackson.databind.ObjectReader; +import net.ktnx.mobileledger.model.LedgerTransaction; import java.io.IOException; import java.io.InputStream; +import java.text.ParseException; -public class TransactionListParser { +public abstract class TransactionListParser { + public static TransactionListParser forApiVersion(API apiVersion, InputStream input) + throws IOException { + switch (apiVersion) { + case v1_14: + return new net.ktnx.mobileledger.json.v1_14.TransactionListParser(input); + case v1_15: + return new net.ktnx.mobileledger.json.v1_15.TransactionListParser(input); + case v1_19_1: + return new net.ktnx.mobileledger.json.v1_19_1.TransactionListParser(input); + case v1_23: + return new net.ktnx.mobileledger.json.v1_23.TransactionListParser(input); + default: + throw new RuntimeException("Unsupported version " + apiVersion.toString()); + } - private final MappingIterator iter; - - public TransactionListParser(InputStream input) throws IOException { - - ObjectMapper mapper = new ObjectMapper(); - ObjectReader reader = mapper.readerFor(ParsedLedgerTransaction.class); - iter = reader.readValues(input); - } - public ParsedLedgerTransaction nextTransaction() { - return iter.hasNext() ? iter.next() : null; } + abstract public LedgerTransaction nextTransaction() throws ParseException; }