----------------------------------------------------------- This is an automatically generated e-mail. To reply, visit: http://git.reviewboard.kde.org/r/107137/ -----------------------------------------------------------
(Updated Dec. 10, 2012, 4:11 p.m.) Review request for KMymoney. Changes ------- boost::optional replaced with QScopedPointer in TransactionMatchFinder Description ------- 1. please note that dependency on Boost is no longer optional (see changes in CMakeLists.txt) 2. Architectural changes Until now, the method MyMoneyStatementReader::processTransactionEntry() handled the whole process of importing a transaction - that is: handling the securities, matching and creating payees, and - at the very end of the method - adding the transaction to the ledger. The last step (adding transaction to ledger) is the main target of this refactoring. Its algorithm was as follows: 1. find a matching transaction (either existing or scheduled) - using TransactionMatcher::findMatch() 2. If an "existing transaction match" is found - handle it (in the old code it's the block starting with a comment "// it matched a simple transaction. that's the easy case") 3. Else if a "scheduled transaction match" is found - handle it ("// a match has been found in a pending schedule"...) Code "mapping" is as follows: - step 2 (above) is extracted to handleMatchingOfExistingTransaction() - step 3 (above) is extracted to handleMatchingOfScheduledTransaction() - TransactionMatcher::findMatch() is extracted to TransactionMatchFinder::findMatch() (note: there are two pure-virtual functions that are implemented in ExistingTransactionMatchFinder, ScheduledTransactionMatchFinder classes) - TransactionMatcher::checkTransaction() is extracted to TransactionMatchFinder::findMatchingSplit() 3. Memory management changes Raw pointers are no longer used, as these are typically error-prone. Pointers were replaced either with object instances, or boost::optional is used if applicable (e.g. see members of TransactionMatchFinder class). 4. dynamic_casts removed (were used on pointers returned by TransactionMatcher::findMatch(), no longer needed - see TransactionMatchFinder::getMatchedTransaction() and getMatchedSchedule() ) 5. variable/method names - I did my best to keep those meaningful: e.g. "importedTransaction" instead of "t") Diffs (updated) ----- CMakeLists.txt 93af070 kmymoney/converter/mymoneystatementreader.h 758ff00 kmymoney/converter/mymoneystatementreader.cpp 42c4841 kmymoney/dialogs/CMakeLists.txt 9a8d782 kmymoney/dialogs/existingtransactionmatchfinder.h PRE-CREATION kmymoney/dialogs/existingtransactionmatchfinder.cpp PRE-CREATION kmymoney/dialogs/scheduledtransactionmatchfinder.h PRE-CREATION kmymoney/dialogs/scheduledtransactionmatchfinder.cpp PRE-CREATION kmymoney/dialogs/transactionmatcher.h d09a4cd kmymoney/dialogs/transactionmatcher.cpp c380877 kmymoney/dialogs/transactionmatchfinder.h PRE-CREATION kmymoney/dialogs/transactionmatchfinder.cpp PRE-CREATION Diff: http://git.reviewboard.kde.org/r/107137/diff/ Testing ------- make test Thanks, Łukasz Maszczyński
_______________________________________________ KMyMoney-devel mailing list KMyMoney-devel@kde.org https://mail.kde.org/mailman/listinfo/kmymoney-devel