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

  • 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.

    • CEF
    • NLP
    • PDF Summary
    • Python
  • 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.

    • D3
    • Svelte
    • Vite
    • UI
    • NodeJS
  • 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.

    • SuperH Emulator
    • Python
    • TKinter
    • Canvas
    • CPU ISA

Want more ?

I've got a lot of other awesome projects

See them all !