public void execute() throws MojoExecutionException, MojoFailureException { Log logger = new MavenLogger(this); DbImportConfiguration config = toParameters(); config.setLogger(logger); Injector injector = DIBootstrap.createInjector(new ToolsModule(logger), new DbImportModule()); validateDbImportConfiguration(config, injector); try { injector.getInstance(DbImportAction.class).execute(config); } catch (Exception ex) { Throwable th = Util.unwindException(ex); String message = "Error importing database schema"; if (th.getLocalizedMessage() != null) { message += ": " + th.getLocalizedMessage(); } getLog().error(message); throw new MojoExecutionException(message, th); } }
private void validateDbImportConfiguration(DbImportConfiguration config, Injector injector) throws MojoExecutionException { DataNodeDescriptor dataNodeDescriptor = config.createDataNodeDescriptor(); DataSource dataSource = null; DbAdapter adapter = null; try { dataSource = injector.getInstance(DataSourceFactory.class).getDataSource(dataNodeDescriptor); adapter = injector .getInstance(DbAdapterFactory.class) .createAdapter(dataNodeDescriptor, dataSource); if (!adapter.supportsCatalogsOnReverseEngineering() && reverseEngineering.getCatalogs() != null && !reverseEngineering.getCatalogs().isEmpty()) { String message = "Your database does not support catalogs on reverse engineering. " + "It allows to connect to only one at the moment. Please don't note catalogs as param."; throw new MojoExecutionException(message); } } catch (Exception e) { throw new MojoExecutionException( "Error creating DataSource (" + dataSource + ") or DbAdapter (" + adapter + ") for DataNodeDescriptor (" + dataNodeDescriptor + ")", e); } }
DbImportConfiguration toParameters() { if (config != null) { return config; } config = new DbImportConfiguration(); config.setAdapter(adapter); config.setDefaultPackage(defaultPackage); config.setDriver(driver); config.setDataMapFile(map); config.setMeaningfulPkTables(meaningfulPkTables); config.setNamingStrategy(namingStrategy); config.setOverwrite(overwrite); config.setPassword(password); config.setUrl(url); config.setUsername(username); config.setUsePrimitives(usePrimitives); config.setFiltersConfig( new FiltersConfigBuilder(reverseEngineering).add(filterBuilder).filtersConfig()); config.setSkipRelationshipsLoading(reverseEngineering.getSkipRelationshipsLoading()); config.setSkipPrimaryKeyLoading(reverseEngineering.getSkipPrimaryKeyLoading()); config.setTableTypes(reverseEngineering.getTableTypes()); return config; }