I’ve successfully passed the final evaluation of my Google Summer of Code 2013 !
I am extremely extremely happy and this was one of the best news of my life !!!
I want to thank a lot Google, the entire DHIS2 team and especially Morten and Bob (my mentors) for an incredible summer that I will never forget !
Thank you for this life changing opportunity !
District Health Information System: http://www.dhis2.org
Code branch: https://code.launchpad.net/~rosu-ovi
The project is pretty much done and the last minor bugs have been fixed.
I am really proud of my work !
Now comes the final evaluation.
I will write after a blog post about my entire experience and project.
In these last few days I’ve mainly worked on fixing bugs and improving the existing code.
The project has reached a pretty polished stage and the output file that is generated by the Filtered Meta-Data Export seems correct.
I’ve really grown attached to the project and I’m a little sad that there is only one week remaining of the GSOC 2013 program.
I will spend the last week writing documentation and wrapping up the project.
Pictures from the Detailed Export user interface:
1. Main menu.
2. Filter list.
3. Create a new Filter.
4. Export with dependencies.
In the last few weeks I’ve mainly worked on improving the Export Detailed MetaData user interface.
It has radically changed since its last iteration.
- create and manage an entire list of filters (CRUD functionality)
- create an ad hoc filter
- sorting functionality
- visual improvements
- less clicks to achieve the same goal
- Export MetaData with dependencies
Most of my time was spent implementing, testing and improving the Export MetaData with dependencies algorithm.
I’ve used recursion combined with the Reflection API in order to achieve this goal.
How it works ?
Lets say the user want to export an “Indicator”.
In order to use that Indicator, its dependencies also need to be exported, otherwise it will not work correctly.
What the algorithm does is, it gets the dependencies of that Indicator ( DataElements, IndicatorType etc.) and adds them to the export list, then computes the dependencies of those elements and so on until it reaches the base element which no longer has any dependency to any other exportable objects.
These weeks where really productive because I’ve learned tons of new stuff, tricks and I’ve really improved my Java skill.
Thanks for reading.
P.S. I will come back with screenshots in a later post.
In the last few weeks I’ve mainly focused on improving the Export user interface.
The UI needs to respect the dhis2 application design paradigms and make it as user friendly and intuitive as possible. I’ve made lots of improvements to the way the user interacts with the Export UI.
I will post some new pictures with the new UI when it is ready in the following days.
Also I’ve started implementing the logic behind computing dependencies. For example when an user wants to export a metadata item, all the dependencies to other metadata items need to be computed and exported as well.
This part is challenging so it is still “Work in progress”.
I will come back with more details on this when I will finish the algorithm behind this issue.
Thanks for reading.
Another week has passed and I’ve made some nice progress on the Export detailed metadata module.
I mainly worked on implementing the CRUD functionality for the Filter object. This was a little challenging since I planned on using the existing Hibernate Service module. It was bad practice to try to rewrite this simple functionality just for one class, since there is a really great module dedicated to this task.
This task was really productive for me since I’ve learned more about the Hibernate Service part of dhis2, how to debug Hibernate and what are the necessary settings to achieve this.
I’ve also updated the UI and its functionality and created a simple form for saving a Filter in the database and for updating an existing Filter.
Each week I also take time to look and analyze the code that I’ve previously written and try to improve it as much as I can.
Improvements and bug fixes were made.
This week was also the Midterm Evaluation week, so me and my mentors had to submit to Google our evaluation form.
I am really happy that I’ve passed the evaluation and that I can continue working on this great project.
A big thanks to Morten, Bob, Saptarshi …. and to GOOGLE of course, for making this experience possible !