header.setName(ph.getName());
header.setPattern(ph.getRegularExpression());
header.setTestText(ph.getTestText());
- header.setTransactionDescription(ph.getTransactionDescription());
- header.setTransactionComment(ph.getTransactionComment());
- header.setDateDayMatchGroup(ph.getDateDayMatchGroup());
- header.setDateMonthMatchGroup(ph.getDateMonthMatchGroup());
- header.setDateYearMatchGroup(ph.getDateYearMatchGroup());
+
+ if (ph.getTransactionDescriptionMatchGroup() == null)
+ header.setTransactionDescription(ph.getTransactionDescription());
+ else
+ header.setTransactionDescriptionMatchGroup(
+ ph.getTransactionDescriptionMatchGroup());
+
+ if (ph.getTransactionCommentMatchGroup() == null)
+ header.setTransactionComment(ph.getTransactionComment());
+ else
+ header.setTransactionCommentMatchGroup(ph.getTransactionCommentMatchGroup());
+
+ 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;
}
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());
public void switchToLiteral() {
literalValue = true;
}
+ public String toString() {
+ if (literalValue)
+ if (value == null)
+ return "<null>";
+ else
+ return value.toString();
+ if (matchGroup > 0)
+ return "grp:" + matchGroup;
+ return "<null>";
+ }
}
public static class TYPE {
private final PossiblyMatchedValue<Float> amount =
PossiblyMatchedValue.withLiteralFloat(0f);
private final PossiblyMatchedValue<Currency> 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();
}
}
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();
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;
}
@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;
public int getTransactionDescriptionMatchGroup() {
return transactionDescription.getMatchGroup();
}
- public void setTransactionDescriptionMatchGroup(short group) {
+ public void setTransactionDescriptionMatchGroup(int group) {
transactionDescription.setMatchGroup(group);
}
public int getTransactionCommentMatchGroup() {
return transactionComment.getMatchGroup();
}
- public void setTransactionCommentMatchGroup(short group) {
+ public void setTransactionCommentMatchGroup(int group) {
transactionComment.setMatchGroup(group);
}
public void switchToLiteralDateYear() {