RIRGen
2020
Context
While developing workflow utility for quote reporting, I found out that the internal quoting process was related to a single Excel file. Because of heavy duplication, the internal Excel file products database easily got out of track or even outdated !
Gathering every version of this Excel file ever used and up-to-date, I created a quick python script to merge their database and get full list of outdated and duplicated products. After asking for checks on the cleaned database, I put it on a shared drive as a CSV file.
The choice of JavaFX seemed best:
- People had a lot of Java-powered application, so it was quite well known internally.
- The development team wanted to get their hand on new Java UI technologies to create better UI than the Swing default LookAndFeel.
- JavaFX is able to be responsive under data-heavy context thanks to VirtualList and offers easy interaction for list filtering.
Realisation
Using the Java Database Controller and the CSV streaming addon, I was able to open a non-locking stream to the CSV database. To prevent unwanted writing to the database, its access got password protected. Some hint would be prompted to the user on how to keep the database healthy and best practises.
The application also kept a local cache of the database if the shared folder gone missing or got some network problem (like roaming access).
The database access was however been thought to be able to work with any Relational Database compatible with the JDBC. An SQL schema is also available in the project files for later developments.
Home screen
Opening the application will display a simple (Google Drive inspired) application interface with recent projects, and an option to create a new one. Because quotes would sometime be almost similar to older one, I decided to add an option when opening older quotes to “duplicate” it, making the use of “models” hence possible.
The project file is a simple YAML file, that could quickly be edited or imported in other internal tools. If the YAML is invalid or get corrupted, an “Invalid file” preview would be displayed. Trying to open it showed an alert message with a contact information for getting support and trying to recover it.
Quote creating
One of the feature user missed was the ability to view how the reporting would look like. I added a quick preview that got generated as the user prompt to get a better understanding on how the report would look like. Using JavaFX awesome styling capacities and JavaFX FormFX made form creation and validation quite an easy task, and quickly got a nice-looking interface.
Special elements
Some features like the addition of custom elements got later asked, but get easily added to the code base. Combining a JavaFX VirtualList and forms, a quick interface was made :
Features list
The main part of the application was the list. The top search bar was the most used feature and had to filter more than 100K single references. Using Java8+ functional computing abilities, I made a quick filter algorithm that updated fairly smoothly the result list.
Deployment
The application was bundled as an MSI with a minimal runtime embed using java 9+ JigSaw project. All the application configuration (like the database location) was configurable using a simple YAML file that would regenerate itself with defaults value if deleted.
Using the MSI deployment allowed quick installation on machines and simplified the updating process
Also Read
-
Document Parsing
PDF Parser
A group project aimed at generating summary from PDF.
I wrote the both the front-end in CEF and the back-end in Python using NLP toolkits. -
Graph Viewer
Animator Graph Viewer
Visualize class relationships and animations with a d3.js-based interface using Vite and Svelte. Class parsing done with Node script.
-
SuperH Emulator
RuK
A simple yet powerful CPU emulator, capable of emulating a subset of SuperH instructions.
It is built in Python with TKinter Canvas that provide a cool GUI.