[Jiemamy-notify:1918] commit [3088] [ECL-42] DBImporterにて、接続テストを強制するように変更。

Back to archive index

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);
 	}
 	



Jiemamy-notify メーリングリストの案内
Back to archive index