Skip to content

Commit 00fca51

Browse files
fefe982codinguser
authored andcommitted
Ignore <gnc:template-transactions> when importing
<gnc:template-transactions> contains Accounts and Transactions with "template" Commodity, which would cause program to crash. Also, these Accounts and Transactions seems not to be real Accounts and Transactions of the book.
1 parent e0fe69a commit 00fca51

2 files changed

Lines changed: 19 additions & 0 deletions

File tree

app/src/org/gnucash/android/export/xml/GncXmlHelper.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -60,6 +60,7 @@ public abstract class GncXmlHelper {
6060
public static final String TAG_TRN_SPLITS = "trn:splits";
6161
public static final String TAG_TRN_SPLIT = "trn:split";
6262
public static final String TAG_TRN_SLOTS = "trn:slots";
63+
public static final String TAG_TEMPLATE_TRANSACTION = "gnc:template-transactions";
6364

6465
public static final String TAG_SPLIT_ID = "split:id";
6566
public static final String TAG_SPLIT_MEMO = "split:memo";

app/src/org/gnucash/android/importer/GncXmlHandler.java

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -75,6 +75,11 @@ public class GncXmlHandler extends DefaultHandler {
7575
*/
7676
Split mSplit;
7777

78+
/**
79+
* Ignore certain elements in GnuCash XML file, such as "<gnc:template-transactions>"
80+
*/
81+
String mIgnoreElement = null;
82+
7883
boolean mInColorSlot = false;
7984
boolean mInPlaceHolderSlot = false;
8085
boolean mInFavoriteSlot = false;
@@ -122,12 +127,25 @@ public void startElement(String uri, String localName,
122127
if (qualifiedName.equalsIgnoreCase(GncXmlHelper.TAG_DATE_POSTED)){
123128
mIsDatePosted = true;
124129
}
130+
131+
if (qualifiedName.equalsIgnoreCase(GncXmlHelper.TAG_TEMPLATE_TRANSACTION)) {
132+
mIgnoreElement = GncXmlHelper.TAG_TEMPLATE_TRANSACTION;
133+
}
125134
}
126135

127136
@Override
128137
public void endElement(String uri, String localName, String qualifiedName) throws SAXException {
129138
String characterString = mContent.toString().trim();
130139

140+
if (mIgnoreElement != null) {
141+
// Ignore everything inside
142+
if (qualifiedName.equalsIgnoreCase(mIgnoreElement)) {
143+
mIgnoreElement = null;
144+
}
145+
mContent.setLength(0);
146+
return;
147+
}
148+
131149
if (qualifiedName.equalsIgnoreCase(GncXmlHelper.TAG_NAME)) {
132150
mAccount.setName(characterString);
133151
mAccount.setFullName(characterString);

0 commit comments

Comments
 (0)