X-Git-Url: https://git.ktnx.net/?a=blobdiff_plain;f=app%2Fsrc%2Fmain%2Fjava%2Fnet%2Fktnx%2Fmobileledger%2Fmodel%2FMobileLedgerProfile.java;h=873b0d68ae50b4dbf9b6a13f8c04359c871ac55d;hb=d4ff639e95cda8c02e6f7b094e27624cb4502666;hp=a75ac72aae165e02cb40e76aa17bc3c8a5a7b471;hpb=1c42b2e42a6fe3fe2aaae3ad3480d924db75f4ba;p=mobile-ledger.git diff --git a/app/src/main/java/net/ktnx/mobileledger/model/MobileLedgerProfile.java b/app/src/main/java/net/ktnx/mobileledger/model/MobileLedgerProfile.java index a75ac72a..873b0d68 100644 --- a/app/src/main/java/net/ktnx/mobileledger/model/MobileLedgerProfile.java +++ b/app/src/main/java/net/ktnx/mobileledger/model/MobileLedgerProfile.java @@ -22,12 +22,13 @@ import android.database.sqlite.SQLiteDatabase; import net.ktnx.mobileledger.async.DbOpQueue; import net.ktnx.mobileledger.utils.Globals; -import net.ktnx.mobileledger.utils.LockHolder; +import net.ktnx.mobileledger.utils.Logger; import net.ktnx.mobileledger.utils.MLDB; import java.util.ArrayList; import java.util.Date; import java.util.List; +import java.util.Locale; import java.util.UUID; import androidx.annotation.NonNull; @@ -52,11 +53,23 @@ public final class MobileLedgerProfile { public MobileLedgerProfile(String uuid) { this.uuid = uuid; } + public MobileLedgerProfile(MobileLedgerProfile origin) { + uuid = origin.uuid; + name = origin.name; + permitPosting = origin.permitPosting; + preferredAccountsFilter = origin.preferredAccountsFilter; + url = origin.url; + authEnabled = origin.authEnabled; + authUserName = origin.authUserName; + authPassword = origin.authPassword; + themeId = origin.themeId; + orderNo = origin.orderNo; + } // loads all profiles into Data.profiles // returns the profile with the given UUID public static MobileLedgerProfile loadAllFromDB(String currentProfileUUID) { MobileLedgerProfile result = null; - List list = new ArrayList<>(); + ArrayList list = new ArrayList<>(); SQLiteDatabase db = MLDB.getDatabase(); try (Cursor cursor = db.rawQuery("SELECT uuid, name, url, use_authentication, auth_user, " + "auth_password, permit_posting, theme, order_no, " + @@ -78,7 +91,7 @@ public final class MobileLedgerProfile { if (item.getUuid().equals(currentProfileUUID)) result = item; } } - Data.profiles.setList(list); + Data.profiles.setValue(list); return result; } public static void storeProfilesOrder() { @@ -86,14 +99,11 @@ public final class MobileLedgerProfile { db.beginTransaction(); try { int orderNo = 0; - try (LockHolder lh = Data.profiles.lockForReading()) { - for (int i = 0; i < Data.profiles.size(); i++) { - MobileLedgerProfile p = Data.profiles.get(i); - db.execSQL("update profiles set order_no=? where uuid=?", - new Object[]{orderNo, p.getUuid()}); - p.orderNo = orderNo; - orderNo++; - } + for (MobileLedgerProfile p : Data.profiles.getValue()) { + db.execSQL("update profiles set order_no=? where uuid=?", + new Object[]{orderNo, p.getUuid()}); + p.orderNo = orderNo; + orderNo++; } db.setTransactionSuccessful(); } @@ -438,6 +448,7 @@ public final class MobileLedgerProfile { db.execSQL("delete from transactions where profile=?", pUuid); db.execSQL("delete from transaction_accounts where profile=?", pUuid); db.setTransactionSuccessful(); + Logger.debug("wipe", String.format(Locale.ENGLISH, "Profile %s wiped out", pUuid[0])); } finally { db.endTransaction();