Refactoring IDE

Hello everyone. . . I am a new entrant to the LiquiBase community and excited to be a part of it.

Watching the videos, and reading the IDE page [1], it feels like the IntelliJ plugin has the most LiquiBase features from an IDE perspective.

As an Eclipse user, I wanted to check with the community if the IntellJ LiquiBase plugin is more advanced than its Eclipse and LiquiBaseIDE counterparts. Is installing IntelliJ just for using LiquiBase worth the effort?

Thanks
-Sudhakar

[1] http://www.liquibase.org/ide/home

Actually, at this point I would recommend staying with modifying the changelog XML manually rather than using either IDE.  The intellij version is more advanced, but there is still much you cannot do with it, and the plugin we built off of (dbhelper) appears to no longer be maintained and may not work with newer versions of intellij. 

Although we have not made the official announcement yet (thanks for reminding me :slight_smile: ), we have archived the source for both the eclipse and intellij IDEs until we have the resources to maintain them at an acceptable level.

Nathan

On the IntelliJ side I could not get the plugin working with version 8.x. The XML editor in IntelliJ is pretty good though so it’s no big deal.

If maintaining the plugin on top of DBHelper is no longer viable, the kind of plugin support I’d like would be similar to the Ant plugin with the following features:

  • Control click navigation for various objects. Eg if I'm looking at a createIndex change and I control click on the table name it takes me to the createTable change that defined the table. If I control click on a property it takes me to the property definition. And so on
  • Auto completion of property values. With the Ant plugin you type ${ and you get a list of properties that have been defined in that context. Typing more reduces that list.
  • Having a structure map similar to the ant structure map. But rather than mapping the XML nodes it generates a DB looking tree with the way the database would look if all the change sets were applied and it would do this with no required DB connection
  • Keep access to the XML structure map that gives quick navigation to the XML nodes - perhaps provide access to the above map in a tab of the same tool window
  • If possible hook into IntelliJs database support plugin to allow functions like right click an existing table or schema and have the change sets generated for you.
  • Link into IntelliJ's Intention Actions feature to provide hints. Eg if you create a non-auto rollback change that doesn't have a rollback section you get a warning a rollback will fail. Or if you use a property that hasn't had its file included you are prompted to have the tag created
  • Link into IntelliJ's language injection feature so it can validate any SQL within the tags
  • I'm not overly fussed on the wizardy aspects of the plugin but I do like the context menu that provides easy access to executing Liquibase commands
  • A feature similar to IntelliJ's find usages feature for objects like tables. Using it would show you all the changes that have been applied to the table, such as the subsequent change sets that have added constraints, columns and the like. In my projects we tend to name change set files after the ticket or story number so the file names don't provide any queues as to their content.
  • I tend to use constants for database types to get consistency across the database for similar types like keys or description columns. It also allows abstraction when you support multiple databases (eg for XML in DB2 you use the XML type in Derby you use Blob). So having an extract to property right click command on an item or string value would be useful.

Cheers,
Christian