Eclipse Setup
=============

- Install the Maven Integration plugins:

  http://m2eclipse.codehaus.org/

- Import the project using the General -> Maven Projects

- Use right click, Maven -> Update Project Configuration
  to force a compile of the generted ANTLR sources.  This
  fixes the compile errors identified after import.

- Right click on the project, Properties

- Select Java Code Style -> Formatter

- Import... and select GoogleFormat.xml


Unit Tests
==========

The unit tests assume there is a local PostgreSQL and MySQL server
listening on their respective default ports, with the following
database configuration:

PostgreSQL
~~~~~~~~~~

Run the following commands from the shell (not from inside the psql
console):

  createuser -S -D -R -E -P gwtorm
  createdb -E UTF-8 -O gwtorm gwtorm

When prompted for the password, enter 'gwtorm'.

It may be necessary to run the commands as the postgres user.  In this
case, prefix the commands with `sudo -u postgres`.

MySQL
~~~~~

Enter the mysql console:

  $ mysql

Run the following commands:

  create user 'gwtorm'@'localhost' identified by 'gwtorm';
  create database gwtorm;
  alter database gwtorm charset=utf8;
  grant all on gwtorm.* to 'gwtorm'@'localhost';
  flush privileges;
