X-Git-Url: https://git.ktnx.net/?a=blobdiff_plain;f=app%2Fsrc%2Fmain%2Fjava%2Fnet%2Fktnx%2Fmobileledger%2Fmodel%2FPatternDetailsItem.java;h=eeab37aed6a53431cda383e8c0067063e41ac533;hb=28b09d462a5486f26f2dbd3d9f16dbf523987e1c;hp=935280519791bb1f2d3be4996f41180ab690e53c;hpb=72bbdba090181d9d725cd1d80f96e6ea1ab4c28c;p=mobile-ledger.git diff --git a/app/src/main/java/net/ktnx/mobileledger/model/PatternDetailsItem.java b/app/src/main/java/net/ktnx/mobileledger/model/PatternDetailsItem.java index 93528051..eeab37ae 100644 --- a/app/src/main/java/net/ktnx/mobileledger/model/PatternDetailsItem.java +++ b/app/src/main/java/net/ktnx/mobileledger/model/PatternDetailsItem.java @@ -65,16 +65,28 @@ abstract public class PatternDetailsItem { if (ph.getTransactionDescriptionMatchGroup() == null) header.setTransactionDescription(ph.getTransactionDescription()); else - header.setTransactionDescriptionMatchGroup(ph.getTransactionDescriptionMatchGroup()); + header.setTransactionDescriptionMatchGroup( + ph.getTransactionDescriptionMatchGroup()); if (ph.getTransactionCommentMatchGroup() == null) header.setTransactionComment(ph.getTransactionComment()); else header.setTransactionCommentMatchGroup(ph.getTransactionCommentMatchGroup()); - header.setDateDayMatchGroup(ph.getDateDayMatchGroup()); - header.setDateMonthMatchGroup(ph.getDateMonthMatchGroup()); - header.setDateYearMatchGroup(ph.getDateYearMatchGroup()); + if (ph.getDateDayMatchGroup() == null) + header.setDateDay(ph.getDateDay()); + else + header.setDateDayMatchGroup(ph.getDateDayMatchGroup()); + + if (ph.getDateMonthMatchGroup() == null) + header.setDateMonth(ph.getDateMonth()); + else + header.setDateMonthMatchGroup(ph.getDateMonthMatchGroup()); + + if (ph.getDateYearMatchGroup() == null) + header.setDateYear(ph.getDateYear()); + else + header.setDateYearMatchGroup(ph.getDateYearMatchGroup()); return header; } @@ -102,8 +114,11 @@ abstract public class PatternDetailsItem { acc.setCurrencyMatchGroup(pa.getCurrencyMatchGroup()); final Integer amountMatchGroup = pa.getAmountMatchGroup(); - if (amountMatchGroup != null && amountMatchGroup > 0) + if (amountMatchGroup != null && amountMatchGroup > 0) { acc.setAmountMatchGroup(amountMatchGroup); + final Boolean negateAmount = pa.getNegateAmount(); + acc.setNegateAmount(negateAmount != null && negateAmount); + } else acc.setAmount(pa.getAmount()); @@ -237,6 +252,16 @@ abstract public class PatternDetailsItem { public void switchToLiteral() { literalValue = true; } + public String toString() { + if (literalValue) + if (value == null) + return ""; + else + return value.toString(); + if (matchGroup > 0) + return "grp:" + matchGroup; + return ""; + } } public static class TYPE { @@ -252,9 +277,16 @@ abstract public class PatternDetailsItem { private final PossiblyMatchedValue amount = PossiblyMatchedValue.withLiteralFloat(0f); private final PossiblyMatchedValue currency = new PossiblyMatchedValue<>(); + private boolean negateAmount; private AccountRow() { super(Type.ACCOUNT_ITEM); } + public boolean isNegateAmount() { + return negateAmount; + } + public void setNegateAmount(boolean negateAmount) { + this.negateAmount = negateAmount; + } public int getAccountCommentMatchGroup() { return accountComment.getMatchGroup(); } @@ -321,7 +353,7 @@ abstract public class PatternDetailsItem { } public boolean equalContents(AccountRow o) { return amount.equals(o.amount) && accountName.equals(o.accountName) && - accountComment.equals(o.accountComment); + accountComment.equals(o.accountComment) && negateAmount == o.negateAmount; } public void switchToLiteralAmount() { amount.switchToLiteral(); @@ -345,10 +377,14 @@ abstract public class PatternDetailsItem { else result.setAccountCommentMatchGroup(accountComment.getMatchGroup()); - if (amount.hasLiteralValue()) + if (amount.hasLiteralValue()) { result.setAmount(amount.getValue()); - else + result.setNegateAmount(null); + } + else { result.setAmountMatchGroup(amount.getMatchGroup()); + result.setNegateAmount(negateAmount ? true : null); + } return result; } @@ -413,7 +449,8 @@ abstract public class PatternDetailsItem { @Override public String toString() { return super.toString() + - String.format(" name[%s] pat[%s] test[%s]", name, pattern, testText); + String.format(" name[%s] pat[%s] test[%s] tran[%s] com[%s]", name, pattern, + testText, transactionDescription, transactionComment); } public String getTestText() { return testText;