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.

RIRGen home screen

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.

Create a new quote draft

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 :

Add project-specific elements

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.

List all quote features

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

  • Messaging Broker

    O3one MQ

    Based on the lightweight ØMQ protocol, this tool was a hands-on message broker project.
    It integrates a Flask based REST API and a Bootstrap 4 front-end with Jinja2 templates. MMAP was the chosen way of transporting data.

    • ØMQ
    • Python
    • Flask
    • Bootstrap
    • MMAP
  • SVDX Midi Controller

    SVDX Midi Map

    A deep dive on how to use Midi controller on some rhythm game

    • Python
    • Midi
    • PyGame
    • SVDX
  • Machine Learning Visualisation

    REImu Watch

    A cool SvelteJS + TailwindCSS dashboard using ApexChart to visualise data from a machine learning model. The site is static, but fetch database generated by an ETL Python script

    • Dashboard
    • ApexChart
    • SvelteJS
    • ML Model

Want more ?

I've got a lot of other awesome projects

See them all !