GSoC 2020 with KDE
Greetings Reader,
And just like that, the third evaluations for Google Summer of Code are upon us. It seems just like yesterday when I began my work on this project and now the final phase is about to be over. Sort of unbelievable.
Here is the work report for the final phase.
Work Report
This month was marked with various readjustments in the previous work done based on the code review from my mentors and finalising the code for the next release:
-
Changed the type of
bankIdmember of class Record from unsigned long tostd::stringThat sounds very trivial but it’s actually a bit of work. So, the problem originates due to Netherlands’ Bank Identifier Code(BIC) specification. According to the IBAN format registry Netherland’s BIC has a specification of
4!awhich loosely translates to 4 exactly Uppercase letters. However, the Record class handledbankIdusingunsigned longand all the methods were written with that in mind. Since,bankIdis part of the public API, it had to be ensured that no dependent client is affected by this change.
Related Commit: -
Added methods for validation of
accountIdandbankIdfor Netherlands and SwitzerlandTill now, the only checks for these countries were rudimentary length checks which didn’t cover the whole specification. So, two new methods,
method_4ea_10enandmethod_5en_12ec, were added to methods.cc to handle Dutch and Swiss entries.
Related Commit: -
Added tests for newly added validation methods and for uncovered German return values
Some tests were added to ensure I’m not breaking things with every commit.
Related Commit: -
Mark the now redundant and unusable methods of the public API as deprecated and removing members not part of the public API
Due to the shift from the text datafiles to SQLite databases, many of the methods of the public API were now unusable or made no sense in the new code. To provide compatibility, the method definitions were modified and the methods were themselves marked
DEPRECATEDusing macros. The redundant methods and members which were not public, were removed.
Related Commits:- Deprecated
dataValidStartDate()anddataValidEndDate() - Deprecated
isDataValidForDate()andisValidDataAvailable() - Removed dated_files iteration from
isValidDataAvailable() - Deprecated
closestValidData() - Deprecated
loadDataForDate()andgetFilenameClosestDateToday()and removeddated_filesreferences - Removed
dated_fileand all related methods
- Deprecated
-
Adding an API for downloading databases from project’s website for updating data files
I have added a working prototype for the API. Some work is required on the server side after which I would be able to enable it for usage. I am working on this on a separate branch
downloadapi-dev.
Related Commits:
So, those were the major work done in this phase. There are a lot of small additions and deletions which are pretty self- explanatory. You can see them in the commit_browser at my development fork.
The Road Ahead
With this, my journey of GSoC takes a rest but in turn begins my wonderful journey of open-source development. Proud to say, I am hooked :)
First of all, I have to get this code merged for the next release so that it sees actual users. Then the APIs need to be worked out and tested with actual databases before release. So, the first few days after GSoC are gonna be busy.
From then on, I will be an active contributor to the KtoBlzCheck project and explore the other projects of the KDE community. This community has always been supportive and my mentors have enabled me to learn a lot. Thank you all very much.
See you in the next post.
![]()
Prasun.