Databases updates management application

Project summary: the LiquibaseUpdater application is a wrapper over Liquibase. This application performs the database migration and allows to control the management process of database version updating.

The application provides the following functionality:

  • Performing operations on filling the database.
  • Getting parameters from the arbitrary configuration file (by default config.properties).
  • Getting data schema from arbitrary directory.

The database filling procedure is carried out according to certain rules described in the Liquibase data schema. Filling the database can be done in two ways: until a certain tag in changes schema or complete database filling according to the scheme.

There is a processes log. Log contains both the information sent to standard output, and exceptions service messages. Each application run creates a separate log file.
The result of application operation is displayed in console as a text status line indicating the time of the application operation and the number of execution errors.

The application composition and structure:

  • Console application, interface, services.
  • LiquibaseUpdater main module.
  • Auxiliary modules: Config, CommandLineResolver, LiquibaseManager, LiquibaseService, ExceptionLogger.
  • Third-part libraries (Spring, Liquebase, Apache Commons).

The application architecture:

Technologies: Liquibase, Spring, Apache-cli, JUnit, DBCP, MySQL, Oracle, Maven, Maven-jar, Maven-shade, Jacoco, XML, Liquibase log framework, Git, Jira, Confluence.

Project features:

  • Distributed team - 3 countries, 3 cities.
  • Scrum/Agile - daily Scrum meetings.
  • Within the project the implementation of the functionality, bug fixing, tests coverage were performed.

Company's achievements during the project:

  • Adobe Experience Manager was quickly studied and used.
  • All the tasks set relating to both UI and server parts of application were solved successfully.
  • The application interaction with ExactTarget service was realized.

Project results: the possibility to control the database versions updating using the LiquibaseUpdater application was realized.

Company’s achievements during the project:

  • Test coverage was checked with Jacoco.
  • Code style standards and code quality requirements were implemented through Sonar.
  • Unit testing was implemented.

Examples:

Example of database commit

  • The full database update
./liquibase_updater.bat -verbose -install=d:/doc/changelog/rollback2tag/master.xml
  • Update until a tag
./liquibase_updater.bat -verbose -config=config.properties -install=d:/doc/changelog/rollback2tag/master.xml -tag=version_0.1.0

Example of database rollback

  • The full database rollback
 ./liquibase_updater.bat -verbose -force -config=config.properties -rollback=d:/doc/changelog/rollback/master.xml
  • Rollback until a tag
 ./liquibase_updater.bat -verbose -config=config.properties -rollback=d:/doc/changelog/rollback2tag/master.xml -tag=version_0.1.0

Rolling back the full database requires an additional key -force.

Example of log content

log