To implement the web service we used a combination of Java, Tomcat, and MySQL, and to make our lives easier, we used DWR (Direct Web Remoting) technology, which allows code executed in a web browser to use Java functions on a web server as if those functions were being executed within the browser.
The design of the new application was prepared by our UI/UX designers and subsequently approved by the client. Logical functions were separated from the UI so that coding could be finished as soon as possible. The design followed a minimalistic concept.
For generating the invoices in PDF, we used the Java application Formatting Objects Processor¸ a very handy open-source software solution.
The converter for data migration was designed as a separate module launched within the existing application. This went a long way to simplifying the migration process. An interesting detail was that the desktop application contained formulas, which were calculated using the external Excel files. We used Apache POI to perform a similar function with “pure” Java libraries for reading and writing Microsoft Office files.
Another difficult and interesting task was to create a web view to present all data in a convenient layout. The client had got used to working on the desktop, so we tried to create a web view which would be somehow familiar.
When it came to testing the application, we tried to put ourselves in the shoes of URS employees and see how it would measure up in real-world scenarios. This was an application which used quite heavy calculations and special terms, making this quite a challenge. We still used the original desktop application to test the business logic, comparing the values calculated by our solution to the ones calculated by the legacy software. Data integrity, i.e. the accuracy and consistency of data throughout its life-cycle, was one of the most important aspects to consider. If there was any data corruption, the application would be of no use at all.
In order to extend the functionality of the software, first of all, the existing UI had to be extended. A lot of attention had to be paid to usability and uniformity of style. By using a highly flexible project architecture, we made it easy to add new features.