Thursday, September 5, 2013

piping generators with minuteproject

There are couple of really interesting generators working based on some input file and execution principles.
It is easy to understand and tooling-oriented. Input 2 Tool gives Result Code.

Minuteproject principle is the same

When working with generators dealing with RDBMS persistence (Rev-Eng or Fwd-Eng), minuteproject can generate initial input for those generators.

This strategy is called generator piping.

Each generator has its own particularities and kind of DSL.
The goal is then to degrade as less as possible the 'other-generator' input in order to keep the added value as high as possible.

Minuteproject is particularily interested by the following OS generators:
  • Liferay Service Builder
  • JOOQ
  • Benerator
  • Roo (input script instructions)
  • RoR (input script instructions)
  • Propel

Tooling to deal with other generators available in minuteproject
  • Plugin
    • write a mp plugin (java bean match target technology specifics)
    • this plugin is available at template level to query target-generator-centric info.
  • Parametrization
    • offer track customization
    • a classical parameter could be the version of the target generator
  • Updatable code feature
    • tune your output without losing your altertions over consecutive generations
  • Enrichment
    • Conventions
      • Some configuration can be tedious because quite verbose, fortunately minuteproject can pin common caracteristics via conventions
    • Aliasing
      • provides indirection level to have DB names look like DB names and Java name matching Java conventions
The main difficulty is to know what is the input for field type (is it an SQL, UML, Java, own DSL type) that has to be treated at plugin level.