X-Git-Url: https://git.ktnx.net/?p=mobile-ledger.git;a=blobdiff_plain;f=app%2Fsrc%2Fmain%2Fjava%2Fnet%2Fktnx%2Fmobileledger%2Fasync%2FConfigWriter.java;fp=app%2Fsrc%2Fmain%2Fjava%2Fnet%2Fktnx%2Fmobileledger%2Fasync%2FConfigWriter.java;h=0000000000000000000000000000000000000000;hp=f72a2913f05d3b7cb5cac97f3c22b1ab9284bf21;hb=41d543229f3231469247e10ec6c197920c0e8bc4;hpb=833544eb24cb630dc1ce221e4aa3dedb3f6341e3 diff --git a/app/src/main/java/net/ktnx/mobileledger/async/ConfigWriter.java b/app/src/main/java/net/ktnx/mobileledger/async/ConfigWriter.java deleted file mode 100644 index f72a2913..00000000 --- a/app/src/main/java/net/ktnx/mobileledger/async/ConfigWriter.java +++ /dev/null @@ -1,236 +0,0 @@ -/* - * Copyright © 2021 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 - * the Free Software Foundation, either version 3 of the License, or - * (at your opinion), any later version. - * - * MoLe is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License terms for details. - * - * You should have received a copy of the GNU General Public License - * along with MoLe. If not, see . - */ - -package net.ktnx.mobileledger.async; - -import android.content.Context; -import android.net.Uri; -import android.util.JsonWriter; - -import net.ktnx.mobileledger.db.Currency; -import net.ktnx.mobileledger.db.DB; -import net.ktnx.mobileledger.db.Profile; -import net.ktnx.mobileledger.db.TemplateAccount; -import net.ktnx.mobileledger.db.TemplateWithAccounts; -import net.ktnx.mobileledger.json.API; -import net.ktnx.mobileledger.model.Data; -import net.ktnx.mobileledger.utils.Misc; - -import java.io.BufferedWriter; -import java.io.FileNotFoundException; -import java.io.FileOutputStream; -import java.io.IOException; -import java.io.OutputStreamWriter; -import java.util.List; - -public class ConfigWriter extends ConfigIO { - private final OnDoneListener onDoneListener; - private JsonWriter w; - public ConfigWriter(Context context, Uri uri, OnErrorListener onErrorListener, - OnDoneListener onDoneListener) throws FileNotFoundException { - super(context, uri, onErrorListener); - - this.onDoneListener = onDoneListener; - } - @Override - protected String getStreamMode() { - return "w"; - } - @Override - protected void initStream() { - w = new JsonWriter(new BufferedWriter( - new OutputStreamWriter(new FileOutputStream(pfd.getFileDescriptor())))); - w.setIndent(" "); - } - @Override - protected void processStream() throws IOException { - w.beginObject(); - writeCommodities(w); - writeProfiles(w); - writeCurrentProfile(w); - writeConfigTemplates(w); - w.endObject(); - w.flush(); - - if (onDoneListener != null) - Misc.onMainThread(onDoneListener::done); - } - private void writeKey(JsonWriter w, String key, String value) throws IOException { - if (value != null) - w.name(key) - .value(value); - } - private void writeKey(JsonWriter w, String key, Integer value) throws IOException { - if (value != null) - w.name(key) - .value(value); - } - private void writeKey(JsonWriter w, String key, Long value) throws IOException { - if (value != null) - w.name(key) - .value(value); - } - private void writeKey(JsonWriter w, String key, Float value) throws IOException { - if (value != null) - w.name(key) - .value(value); - } - private void writeKey(JsonWriter w, String key, Boolean value) throws IOException { - if (value != null) - w.name(key) - .value(value); - } - private void writeConfigTemplates(JsonWriter w) throws IOException { - List templates = DB.get() - .getTemplateDAO() - .getAllTemplatesWithAccountsSync(); - - if (templates.isEmpty()) - return; - - w.name("templates") - .beginArray(); - for (TemplateWithAccounts t : templates) { - w.beginObject(); - - w.name(Keys.UUID) - .value(t.header.getUuid()); - w.name(Keys.NAME) - .value(t.header.getName()); - w.name(Keys.REGEX) - .value(t.header.getRegularExpression()); - writeKey(w, Keys.TEST_TEXT, t.header.getTestText()); - writeKey(w, Keys.DATE_YEAR, t.header.getDateYear()); - writeKey(w, Keys.DATE_YEAR_GROUP, t.header.getDateYearMatchGroup()); - writeKey(w, Keys.DATE_MONTH, t.header.getDateMonth()); - writeKey(w, Keys.DATE_MONTH_GROUP, t.header.getDateMonthMatchGroup()); - writeKey(w, Keys.DATE_DAY, t.header.getDateDay()); - writeKey(w, Keys.DATE_DAY_GROUP, t.header.getDateDayMatchGroup()); - writeKey(w, Keys.TRANSACTION, t.header.getTransactionDescription()); - writeKey(w, Keys.TRANSACTION_GROUP, t.header.getTransactionDescriptionMatchGroup()); - writeKey(w, Keys.COMMENT, t.header.getTransactionComment()); - writeKey(w, Keys.COMMENT_GROUP, t.header.getTransactionCommentMatchGroup()); - w.name(Keys.IS_FALLBACK) - .value(t.header.isFallback()); - if (t.accounts.size() > 0) { - w.name(Keys.ACCOUNTS) - .beginArray(); - for (TemplateAccount a : t.accounts) { - w.beginObject(); - - writeKey(w, Keys.NAME, a.getAccountName()); - writeKey(w, Keys.NAME_GROUP, a.getAccountNameMatchGroup()); - writeKey(w, Keys.COMMENT, a.getAccountComment()); - writeKey(w, Keys.COMMENT_GROUP, a.getAccountCommentMatchGroup()); - writeKey(w, Keys.AMOUNT, a.getAmount()); - writeKey(w, Keys.AMOUNT_GROUP, a.getAmountMatchGroup()); - writeKey(w, Keys.NEGATE_AMOUNT, a.getNegateAmount()); - writeKey(w, Keys.CURRENCY, a.getCurrency()); - writeKey(w, Keys.CURRENCY_GROUP, a.getCurrencyMatchGroup()); - - w.endObject(); - } - w.endArray(); - } - - w.endObject(); - } - w.endArray(); - } - private void writeCommodities(JsonWriter w) throws IOException { - List list = DB.get() - .getCurrencyDAO() - .getAllSync(); - if (list.isEmpty()) - return; - w.name(Keys.COMMODITIES) - .beginArray(); - for (Currency c : list) { - w.beginObject(); - writeKey(w, Keys.NAME, c.getName()); - writeKey(w, Keys.POSITION, c.getPosition()); - writeKey(w, Keys.HAS_GAP, c.getHasGap()); - w.endObject(); - } - w.endArray(); - } - private void writeProfiles(JsonWriter w) throws IOException { - List profiles = DB.get() - .getProfileDAO() - .getAllOrderedSync(); - - if (profiles.isEmpty()) - return; - - w.name(Keys.PROFILES) - .beginArray(); - for (Profile p : profiles) { - w.beginObject(); - - w.name(Keys.NAME) - .value(p.getName()); - w.name(Keys.UUID) - .value(p.getUuid()); - w.name(Keys.URL) - .value(p.getUrl()); - w.name(Keys.USE_AUTH) - .value(p.useAuthentication()); - if (p.useAuthentication()) { - w.name(Keys.AUTH_USER) - .value(p.getAuthUser()); - w.name(Keys.AUTH_PASS) - .value(p.getAuthPassword()); - } - if (p.getApiVersion() != API.auto.toInt()) - w.name(Keys.API_VER) - .value(p.getApiVersion()); - w.name(Keys.CAN_POST) - .value(p.permitPosting()); - if (p.permitPosting()) { - String defaultCommodity = p.getDefaultCommodity(); - if (!defaultCommodity.isEmpty()) - w.name(Keys.DEFAULT_COMMODITY) - .value(defaultCommodity); - w.name(Keys.SHOW_COMMODITY) - .value(p.getShowCommodityByDefault()); - w.name(Keys.SHOW_COMMENTS) - .value(p.getShowCommentsByDefault()); - w.name(Keys.FUTURE_DATES) - .value(p.getFutureDates()); - w.name(Keys.PREF_ACCOUNT) - .value(p.getPreferredAccountsFilter()); - } - w.name(Keys.COLOUR) - .value(p.getTheme()); - - w.endObject(); - } - w.endArray(); - } - private void writeCurrentProfile(JsonWriter w) throws IOException { - Profile currentProfile = Data.getProfile(); - if (currentProfile == null) - return; - - w.name(Keys.CURRENT_PROFILE) - .value(currentProfile.getUuid()); - } - - abstract static public class OnDoneListener { - public abstract void done(); - } -}