The main goal of my developed application is copying whole entities and its related data between different environments. Designing, choosing the right technologies, planning algorithm, implementing the planned features, creating tests were the part of this project.
In the beginning, I collected the necessary features which were needed to be created and every kind of circumstances which could affect the choosing of the technologies or planning of the algorithm.
The next step was the algorithm planning. This process was taken longer time, than it was expected in the initial part. In some cases the redesigning was needed, but sometimes appearance of unknown details caused unexpected issues. Many kinds of algorithm were tried before the final solution was created.
The final algorithm can be divided into two bigger steps. The first part is creating a general directed graph which is representing the relationships of the tables and necessary metadata are stored in this model, like foreign keys, primary keys, column names … etc. After this creation, copying the entity is started. Graph traversal is the part of this step. During the traversing, every missing row is looked up and inserted to the target database.
Additional, useful feature of the tool is the graph visualization. The application can generate an XML file which can be opened in the yEd graph editor. This graph is the same which is automatically generated during the copying the entity.
After the implementations part the creating tests was the next. Firstly, I created unit tests, which are examining the functionality of a few methods. Secondly, I created integration test, which is examining the functionality of the application. I used in-memory databases to the tests.