svnno****@sourc*****
svnno****@sourc*****
2009年 4月 4日 (土) 03:31:46 JST
Revision: 3088 http://svn.sourceforge.jp/view?root=jiemamy&view=rev&rev=3088 Author: daisuke_m Date: 2009-04-04 03:31:45 +0900 (Sat, 04 Apr 2009) Log Message: ----------- [ECL-42] DBImporterにて、接続テストを強制するように変更。 DatabaseImporterConfigに、DataSetのインポート項目を追加。 Modified Paths: -------------- artemis/trunk/jiemamy-core/src/main/java/org/jiemamy/composer/importer/DatabaseImportConfig.java artemis/trunk/jiemamy-core/src/main/java/org/jiemamy/composer/importer/DefaultDatabaseImportConfig.java hestia/trunk/org.jiemamy.eclipse.ui/src/main/java/org/jiemamy/eclipse/composer/DatabaseImportWizard.java hestia/trunk/org.jiemamy.eclipse.ui/src/main/java/org/jiemamy/eclipse/composer/DatabaseImportWizardPage.java hestia/trunk/org.jiemamy.eclipse.ui/src/main/java/org/jiemamy/eclipse/composer/SqlExportWizard.java Removed Paths: ------------- artemis/trunk/jiemamy-core/src/test/java/org/jiemamy/model/ -------------- next part -------------- Modified: artemis/trunk/jiemamy-core/src/main/java/org/jiemamy/composer/importer/DatabaseImportConfig.java =================================================================== --- artemis/trunk/jiemamy-core/src/main/java/org/jiemamy/composer/importer/DatabaseImportConfig.java 2009-04-03 11:25:10 UTC (rev 3087) +++ artemis/trunk/jiemamy-core/src/main/java/org/jiemamy/composer/importer/DatabaseImportConfig.java 2009-04-03 18:31:45 UTC (rev 3088) @@ -73,4 +73,10 @@ */ String getUsername(); + /** + * テーブルのコンテンツをデータセットとしてインポートするかどうかを取得する。 + * + * @return テーブルのコンテンツをデータセットとしてインポートするかどうか + */ + boolean isImportDataSet(); } Modified: artemis/trunk/jiemamy-core/src/main/java/org/jiemamy/composer/importer/DefaultDatabaseImportConfig.java =================================================================== --- artemis/trunk/jiemamy-core/src/main/java/org/jiemamy/composer/importer/DefaultDatabaseImportConfig.java 2009-04-03 11:25:10 UTC (rev 3087) +++ artemis/trunk/jiemamy-core/src/main/java/org/jiemamy/composer/importer/DefaultDatabaseImportConfig.java 2009-04-03 18:31:45 UTC (rev 3088) @@ -56,6 +56,9 @@ /** スキーマ名 */ private String schema; + /** テーブルのコンテンツをデータセットとしてインポートするかどうか */ + private boolean importDataSet; + public Dialect getDialect() { return dialect; @@ -66,11 +69,11 @@ } public URL[] getDriverJarPath() { - return driverJarPath; + return driverJarPath.clone(); } public String[] getEntityTypes() { - return entityTypes; + return entityTypes.clone(); } public String getPassword() { @@ -82,7 +85,7 @@ } public String[] getSelectedEntities() { - return selectedEntities; + return selectedEntities.clone(); } public String getUri() { @@ -93,6 +96,10 @@ return username; } + public boolean isImportDataSet() { + return importDataSet; + } + /** * SQL方言を設定する。 * @@ -117,7 +124,7 @@ * @param driverJarPath ドライバJARファイルのパス配列 */ public void setDriverJarPath(URL[] driverJarPath) { - this.driverJarPath = driverJarPath; + this.driverJarPath = driverJarPath.clone(); } /** @@ -126,10 +133,19 @@ * @param entityTypes インポートするエンティティの種類 */ public void setEntityTypes(String[] entityTypes) { - this.entityTypes = entityTypes; + this.entityTypes = entityTypes.clone(); } /** + * テーブルのコンテンツをデータセットとしてインポートするかどうかを設定する。 + * + * @param importDataSet テーブルのコンテンツをデータセットとしてインポートするかどうか + */ + public void setImportDataSet(boolean importDataSet) { + this.importDataSet = importDataSet; + } + + /** * 接続パスワードを設定する。 * * @param password 接続パスワード @@ -153,7 +169,7 @@ * @param selectedEntities インポートするエンティティ名の配列 */ public void setSelectedEntities(String[] selectedEntities) { - this.selectedEntities = selectedEntities; + this.selectedEntities = selectedEntities.clone(); } /** Modified: hestia/trunk/org.jiemamy.eclipse.ui/src/main/java/org/jiemamy/eclipse/composer/DatabaseImportWizard.java =================================================================== --- hestia/trunk/org.jiemamy.eclipse.ui/src/main/java/org/jiemamy/eclipse/composer/DatabaseImportWizard.java 2009-04-03 11:25:10 UTC (rev 3087) +++ hestia/trunk/org.jiemamy.eclipse.ui/src/main/java/org/jiemamy/eclipse/composer/DatabaseImportWizard.java 2009-04-03 18:31:45 UTC (rev 3088) @@ -69,7 +69,7 @@ public void init(IWorkbench workbench, IStructuredSelection currentSelection) { setWindowTitle("SQLにエクスポート"); // RESOURCE -// setDefaultPageImageDescriptor(IDEWorkbenchPlugin.getIDEImageDescriptor("wizban/exportdir_wiz.png")); // $NON-NLS-1$ +// setDefaultPageImageDescriptor(IDEWorkbenchPlugin.getIDEImageDescriptor("wizban/exportdir_wiz.png")); setNeedsProgressMonitor(true); } @@ -87,6 +87,8 @@ config.setDialect(page.getDialect()); config.setSchema(page.getSchema()); + config.setImportDataSet(page.isImportDataSet()); + return true; } Modified: hestia/trunk/org.jiemamy.eclipse.ui/src/main/java/org/jiemamy/eclipse/composer/DatabaseImportWizardPage.java =================================================================== --- hestia/trunk/org.jiemamy.eclipse.ui/src/main/java/org/jiemamy/eclipse/composer/DatabaseImportWizardPage.java 2009-04-03 11:25:10 UTC (rev 3087) +++ hestia/trunk/org.jiemamy.eclipse.ui/src/main/java/org/jiemamy/eclipse/composer/DatabaseImportWizardPage.java 2009-04-03 18:31:45 UTC (rev 3088) @@ -57,6 +57,7 @@ import org.jiemamy.exception.DriverNotFoundException; import org.jiemamy.utils.CollectionsUtil; import org.jiemamy.utils.DriverUtil; +import org.jiemamy.utils.JmIOUtil; /** * データベースインポートに関する設定を行うウィザードページ。 @@ -70,10 +71,18 @@ "*.*" }; + private static final String CONNECTION_TEST = "接続テスト(&T)"; // RESOURCE + + private static final String RECONFIGURE = "再設定(&T)"; // RESOURCE + private Combo cmbDialect; private org.eclipse.swt.widgets.List lstDriverJars; + private Button btnAddJar; + + private Button btnRemoveJar; + private Combo cmbDriverClass; private Text txtUri; @@ -84,6 +93,10 @@ private Text txtSchema; + private Button btnImportDataSet; + + private Button btnTest; + private ExtensionResolver<Dialect> dialectResolver; @@ -93,6 +106,7 @@ DatabaseImportWizardPage() { super("DBインポート設定", "DBインポート設定", (ImageDescriptor) null); // RESOURCE dialectResolver = JiemamyCorePlugin.getDialectResolver(); + setPageComplete(false); } public void createControl(final Composite parent) { @@ -113,6 +127,7 @@ for (Dialect dialect : dialectResolver.getAllInstance()) { cmbDialect.add(dialect.toString()); } + cmbDialect.select(0); cmbDialect.addSelectionListener(new SelectionAdapter() { @Override @@ -121,6 +136,8 @@ txtUri.setText(StringUtils.defaultIfEmpty(connectionUriTemplate, txtUri.getText())); } }); + // TODO RootModelに設定されたDialectを設定する。 +// cmbDialect.setText(rootModel.getDialectClassName()); label = new Label(composite, SWT.NONE); label.setText("JDBCドライバjar(&J)"); // RESOURCE @@ -145,7 +162,6 @@ txtUri = new Text(composite, SWT.BORDER); txtUri.addFocusListener(new TextSelectionAdapter(txtUri)); - txtUri.setText("jdbc:"); gd = new GridData(GridData.FILL_HORIZONTAL); gd.horizontalSpan = 2; txtUri.setLayoutData(gd); @@ -178,6 +194,15 @@ gd.horizontalSpan = 2; txtSchema.setLayoutData(gd); + new Label(composite, SWT.NONE); // dummy + + btnImportDataSet = new Button(composite, SWT.CHECK); + btnImportDataSet.setText("DataSetをインポートする"); // RESOURCE + btnImportDataSet.setEnabled(false); // TODO 現在サポートしていない + gd = new GridData(GridData.FILL_HORIZONTAL); + gd.horizontalSpan = 2; + txtSchema.setLayoutData(gd); + createTestButton(composite); setControl(composite); } @@ -261,8 +286,51 @@ return txtUsername.getText(); } + /** + * テーブルのコンテンツをデータセットとしてインポートするかどうかを取得する。 + * + * @return テーブルのコンテンツをデータセットとしてインポートするかどうか + */ + public boolean isImportDataSet() { + return btnImportDataSet.getSelection(); + } + + private void connectionSettingReconfigure() { + setPageComplete(false); + + cmbDialect.setEnabled(true); + lstDriverJars.setEnabled(true); + btnAddJar.setEnabled(true); + btnRemoveJar.setEnabled(true); + cmbDriverClass.setEnabled(true); + txtUri.setEnabled(true); + txtUsername.setEnabled(true); + txtPassword.setEnabled(true); + txtSchema.setEnabled(true); +// btnImportDataSet.setEnabled(true); + + btnTest.setText(CONNECTION_TEST); + } + + private void connectionSucceeded() { + btnTest.setText(RECONFIGURE); + + cmbDialect.setEnabled(false); + lstDriverJars.setEnabled(false); + btnAddJar.setEnabled(false); + btnRemoveJar.setEnabled(false); + cmbDriverClass.setEnabled(false); + txtUri.setEnabled(false); + txtUsername.setEnabled(false); + txtPassword.setEnabled(false); + txtSchema.setEnabled(false); + btnImportDataSet.setEnabled(false); + + setPageComplete(true); + } + private void createButtons(Composite cmpButtons) { - Button btnAddJar = new Button(cmpButtons, SWT.PUSH); + btnAddJar = new Button(cmpButtons, SWT.PUSH); btnAddJar.setText("追加(&A)"); // RESOURCE btnAddJar.addSelectionListener(new SelectionAdapter() { @@ -284,7 +352,7 @@ } } }); - Button btnRemoveJar = new Button(cmpButtons, SWT.PUSH); + btnRemoveJar = new Button(cmpButtons, SWT.PUSH); btnRemoveJar.setText("削除(&R)"); // RESOURCE btnRemoveJar.addSelectionListener(new SelectionAdapter() { @@ -307,54 +375,29 @@ } /** - * TODO for daisuke + * 接続テストボタンを生成する。 * - * @param composite + * @param composite 親コンポーネント */ private void createTestButton(Composite composite) { - Button btnTest = new Button(composite, SWT.PUSH); - btnTest.setText("接続テスト(&T)"); // RESOURCE + btnTest = new Button(composite, SWT.PUSH); + btnTest.setText(CONNECTION_TEST); btnTest.addSelectionListener(new SelectionAdapter() { @Override public void widgetSelected(SelectionEvent e) { - Connection connection = null; - try { - Driver driver = DriverUtil.getDriverInstance(getDriverJarPath(), getDriverClassName()); - Properties info = new Properties(); - info.setProperty("user", getUsername()); - info.setProperty("password", getPassword()); - connection = driver.connect(getUri(), info); - if (connection != null) { - MessageDialog.openInformation(getShell(), "接続成功", "データベースに接続できました。"); // RESOURCE - } else { - MessageDialog.openError(getShell(), "接続失敗0", "null connection"); // RESOURCE - } - } catch (DriverNotFoundException ex) { - MessageDialog.openError(getShell(), "接続失敗1", ex.getClass().getName() + " " + ex.getMessage()); // RESOURCE - } catch (InstantiationException ex) { - MessageDialog.openError(getShell(), "接続失敗2", ex.getClass().getName() + " " + ex.getMessage()); // RESOURCE - } catch (IllegalAccessException ex) { - MessageDialog.openError(getShell(), "接続失敗3", ex.getClass().getName() + " " + ex.getMessage()); // RESOURCE - } catch (IOException ex) { - MessageDialog.openError(getShell(), "接続失敗4", ex.getClass().getName() + " " + ex.getMessage()); // RESOURCE - } catch (SQLException ex) { - MessageDialog.openError(getShell(), "接続失敗5", ex.getClass().getName() + " " + ex.getMessage()); // RESOURCE - } catch (Exception ex) { - MessageDialog.openError(getShell(), "接続失敗6", ex.getClass().getName() + " " + ex.getMessage()); // RESOURCE - } finally { - if (connection != null) { - try { - connection.close(); - } catch (SQLException ex) { - // ignore - } - } + if (btnTest.getText().equals(RECONFIGURE)) { + connectionSettingReconfigure(); + } else { + testConnection(); } } }); } + /** + * ドライバjarのリストが変更された時のハンドラメソッド。 + */ private void driverListChanged() { String oldSelection = cmbDriverClass.getText(); cmbDriverClass.removeAll(); @@ -373,5 +416,40 @@ if (StringUtils.isEmpty(cmbDriverClass.getText())) { cmbDriverClass.select(0); // Indices that are out of range are ignored. なのでOK } + setPageComplete(false); } + + /** + * 接続のテストを行う。 + */ + private void testConnection() { + Connection connection = null; + try { + Driver driver = DriverUtil.getDriverInstance(getDriverJarPath(), getDriverClassName()); + Properties info = new Properties(); + info.setProperty("user", getUsername()); + info.setProperty("password", getPassword()); + connection = driver.connect(getUri(), info); + if (connection != null) { + MessageDialog.openInformation(getShell(), "接続成功", "データベースに接続できました。"); // RESOURCE + connectionSucceeded(); + } else { + MessageDialog.openError(getShell(), "接続失敗0", "null connection"); // RESOURCE + } + } catch (DriverNotFoundException ex) { + MessageDialog.openError(getShell(), "接続失敗1", ex.getClass().getName() + " " + ex.getMessage()); // RESOURCE + } catch (InstantiationException ex) { + MessageDialog.openError(getShell(), "接続失敗2", ex.getClass().getName() + " " + ex.getMessage()); // RESOURCE + } catch (IllegalAccessException ex) { + MessageDialog.openError(getShell(), "接続失敗3", ex.getClass().getName() + " " + ex.getMessage()); // RESOURCE + } catch (IOException ex) { + MessageDialog.openError(getShell(), "接続失敗4", ex.getClass().getName() + " " + ex.getMessage()); // RESOURCE + } catch (SQLException ex) { + MessageDialog.openError(getShell(), "接続失敗5", ex.getClass().getName() + " " + ex.getMessage()); // RESOURCE + } catch (Exception ex) { + MessageDialog.openError(getShell(), "接続失敗6", ex.getClass().getName() + " " + ex.getMessage()); // RESOURCE + } finally { + JmIOUtil.closeQuietly(connection); + } + } } Modified: hestia/trunk/org.jiemamy.eclipse.ui/src/main/java/org/jiemamy/eclipse/composer/SqlExportWizard.java =================================================================== --- hestia/trunk/org.jiemamy.eclipse.ui/src/main/java/org/jiemamy/eclipse/composer/SqlExportWizard.java 2009-04-03 11:25:10 UTC (rev 3087) +++ hestia/trunk/org.jiemamy.eclipse.ui/src/main/java/org/jiemamy/eclipse/composer/SqlExportWizard.java 2009-04-03 18:31:45 UTC (rev 3088) @@ -91,7 +91,7 @@ public void init(IWorkbench workbench, IStructuredSelection currentSelection) { setWindowTitle("SQLにエクスポート"); // RESOURCE -// setDefaultPageImageDescriptor(IDEWorkbenchPlugin.getIDEImageDescriptor("wizban/exportdir_wiz.png")); // $NON-NLS-1$ +// setDefaultPageImageDescriptor(IDEWorkbenchPlugin.getIDEImageDescriptor("wizban/exportdir_wiz.png")); setNeedsProgressMonitor(true); }