void reset() {
Logger.debug("new-trans", "Resetting model");
List<Item> list = new ArrayList<>();
+ Item.resetIdDispenser();
list.add(new TransactionHead(""));
list.add(new TransactionAccount(""));
list.add(new TransactionAccount(""));
}
void loadTransactionIntoModel(String profileUUID, int transactionId) {
List<Item> newList = new ArrayList<>();
+ Item.resetIdDispenser();
LedgerTransaction tr;
MobileLedgerProfile profile = Data.getProfile(profileUUID);
if (profile == null)
if (item == receiver) {
final String hint = String.format("%1.2f", -currencyBalance);
if (!acc.isAmountHintSet() ||
- !TextUtils.equals(acc.getAmountHint(), hint))
+ !Misc.equalStrings(acc.getAmountHint(), hint))
{
Logger.debug("submittable",
String.format("Setting amount hint of {%s} to %s [%s]",
static abstract class Item {
private static int idDispenser = 0;
- protected int id;
+ protected final int id;
private Item() {
- synchronized (Item.class) {
- id = ++idDispenser;
- }
+ if (this instanceof TransactionHead)
+ id = 0;
+ else
+ synchronized (Item.class) {
+ id = ++idDispenser;
+ }
+ }
+ public Item(int id) {
+ this.id = id;
}
public static Item from(Item origin) {
if (origin instanceof TransactionHead)
return new TransactionAccount((TransactionAccount) origin);
throw new RuntimeException("Don't know how to handle " + origin);
}
+ private static void resetIdDispenser() {
+ idDispenser = 0;
+ }
public int getId() {
return id;
}
this.description = description;
}
public TransactionHead(TransactionHead origin) {
- id = origin.id;
+ super(origin.id);
date = origin.date;
description = origin.description;
comment = origin.comment;
return false;
return Objects.equals(date, other.date) &&
- TextUtils.equals(description, other.description) &&
- TextUtils.equals(comment, other.comment);
+ Misc.equalStrings(description, other.description) &&
+ Misc.equalStrings(comment, other.comment);
}
}
private boolean isLast = false;
private int accountNameCursorPosition;
public TransactionAccount(TransactionAccount origin) {
- id = origin.id;
+ super(origin.id);
accountName = origin.accountName;
amount = origin.amount;
amountSet = origin.amountSet;
if (other == null)
return false;
- boolean equal = TextUtils.equals(accountName, other.accountName);
- equal = equal && TextUtils.equals(comment, other.comment) &&
+ boolean equal = Misc.equalStrings(accountName, other.accountName);
+ equal = equal && Misc.equalStrings(comment, other.comment) &&
(amountSet ? other.amountSet && amount == other.amount : !other.amountSet);
// compare amount hint only if there is no amount
if (!amountSet)
equal = equal && (amountHintIsSet ? other.amountHintIsSet &&
- TextUtils.equals(amountHint, other.amountHint)
+ Misc.equalStrings(amountHint, other.amountHint)
: !other.amountHintIsSet);
- equal = equal && TextUtils.equals(currency, other.currency) && isLast == other.isLast;
+ equal = equal && Misc.equalStrings(currency, other.currency) && isLast == other.isLast;
Logger.debug("new-trans",
String.format("Comparing {%s} and {%s}: %s", this.toString(), other.toString(),