X-Git-Url: https://git.ktnx.net/?a=blobdiff_plain;f=app%2Fsrc%2Fmain%2Fjava%2Fnet%2Fktnx%2Fmobileledger%2Fmodel%2FCurrency.java;h=28e6d03e9fe6c2007c1b4ece489472c027ab030b;hb=2ae4f914cd2cc40645ede8a4a7f68a07f479164b;hp=3cb70f8bd6cec7ea199a4d81f9bfdcf17828a4c2;hpb=0547f9d321932c2fa227eedd93eb4ba4f089706e;p=mobile-ledger.git diff --git a/app/src/main/java/net/ktnx/mobileledger/model/Currency.java b/app/src/main/java/net/ktnx/mobileledger/model/Currency.java index 3cb70f8b..28e6d03e 100644 --- a/app/src/main/java/net/ktnx/mobileledger/model/Currency.java +++ b/app/src/main/java/net/ktnx/mobileledger/model/Currency.java @@ -24,6 +24,7 @@ import androidx.annotation.NonNull; import androidx.recyclerview.widget.DiffUtil; import net.ktnx.mobileledger.App; +import net.ktnx.mobileledger.utils.Misc; public class Currency { public static final DiffUtil.ItemCallback DIFF_CALLBACK = @@ -59,30 +60,43 @@ public class Currency { } public Currency(MobileLedgerProfile profile, String name, Position position, boolean hasGap) { SQLiteDatabase db = App.getDatabase(); - int attempts = 0; - while (true) { - if (++attempts > 10) - throw new RuntimeException("Giving up getting next ID after 10 attempts"); - try (Cursor c = db.rawQuery("select max(rowid) from currencies", null)) { - c.moveToNext(); - int nextId = c.getInt(0) + 1; - db.execSQL("insert into currencies(id, name, position, has_gap) values(?, ?, ?, ?)", - new Object[]{nextId, name, position.toString(), hasGap}); - - this.id = nextId; - break; - } + try (Cursor c = db.rawQuery("select max(rowid) from currencies", null)) { + c.moveToNext(); + this.id = c.getInt(0) + 1; } + db.execSQL("insert into currencies(id, name, position, has_gap) values(?, ?, ?, ?)", + new Object[]{this.id, name, position.toString(), hasGap}); this.name = name; this.position = position; this.hasGap = hasGap; } public static Currency loadByName(String name) { - MobileLedgerProfile profile = Data.profile.getValue(); + MobileLedgerProfile profile = Data.getProfile(); return profile.loadCurrencyByName(name); } + static public boolean equal(Currency left, Currency right) { + if (left == null) { + return right == null; + } + else + return left.equals(right); + } + static public boolean equal(Currency left, String right) { + right = Misc.emptyIsNull(right); + if (left == null) { + return right == null; + } + else { + String leftName = Misc.emptyIsNull(left.getName()); + if (leftName == null) { + return right == null; + } + else + return leftName.equals(right); + } + } public int getId() { return id; }