We would like the SQLExceptionFactory in both the engine and in
the client to be changed so that instead of throwing a simple
SQLIntegrityConstraintViolationException, it instead throws a
DerbySQLIntegrityConstraintViolationException, which holds the
arguments specifying the table name and constraint name of
the constraint which was violated.
Note that this subclass represents the first real change of behavior
that a Derby application could notice; the previous subtasks have
all been internal refactorings of the code to prepare for this change.
As part of this task, we also want to provide additional regression
tests demonstrating that the new exception can be caught and
examined in both embedded and client-server configurations.