What you described is how the Cayenne modeler does it, so it's
probably the best way we know.
org.objectstyle.cayenne.modeler.dialog.pref.DataSourcePreferences
/**
* Tries to establish a DB connection, reporting the status of
this operation.
*/
public void testDataSourceAction() {
DBConnectionInfo currentDataSource = getConnectionInfo();
if (currentDataSource == null) {
return;
}
if (currentDataSource.getJdbcDriver() == null) {
JOptionPane.showMessageDialog(
null,
"No JDBC Driver specified",
"Warning",
JOptionPane.WARNING_MESSAGE);
return;
}
if (currentDataSource.getUrl() == null) {
JOptionPane.showMessageDialog(
null,
"No Database URL specified",
"Warning",
JOptionPane.WARNING_MESSAGE);
return;
}
try {
Class driverClass =
getApplication().getClassLoadingService().loadClass(
currentDataSource.getJdbcDriver());
Driver driver = (Driver) driverClass.newInstance();
// connect via Cayenne DriverDataSource - it addresses
some driver issues...
Connection c = new DriverDataSource(
driver,
currentDataSource.getUrl(),
currentDataSource.getUserName(),
currentDataSource.getPassword()).getConnection();
try {
c.close();
}
catch (SQLException e) {
// i guess we can ignore this...
}
JOptionPane.showMessageDialog(
null,
"Connected Successfully",
"Success",
JOptionPane.INFORMATION_MESSAGE);
}
catch (Throwable th) {
th = Util.unwindException(th);
JOptionPane.showMessageDialog(null, "Error connecting to DB: "
+ th.getLocalizedMessage(), "Warning",
JOptionPane.WARNING_MESSAGE);
return;
}
}
On 4/10/07, Jens Mayer <[EMAIL PROTECTED]> wrote:
In my application, the user has the ability to switch between databases
(for testing purposes). He gets a little dialog, types in
user/password/db-name and under the hood, an appropriate
DataContext is built.
Works fine, but I want to test the correctness of what he typed in
BEFORE the next query is performed.
So I could do that by getting the new DataSource and invoking
getConnection() with an appropriate Exceptionhandling but that seems to
be not very smart design.
Does anyone have a better idea?
Jens