|
|
|
|
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
│<< 前のページへ │一覧 │
現在1.0.8向けの新機能を開発中です。 まずは、アウトラインをせっかく表示できるようになったので、 1.「副問合せ」だけを実行できるように機能を開発中です。 ※アウトラインのSelectStatementノードを右クリックし実行するイメージです。 2.SQLエディターの実行結果は、同エディターで表示されるように開発中です。 SQL実行ビューではなく、SQLエディターをメインに利用されている人は 使いやすくなるのと思います。 ![]() この開発中の画面は、予告なく変更されることがあります。 今回、以下点に苦労しました。 ・OutlineViewのContextMenuが出ない org.eclipse.ui.popupMenusに対して拡張するのですが、SQLをアウトライン表示すると 右クリックでContextMenu自体が出ないため、拡張ポイントを定義しても 何も表示されないのです。 対応 空のContextMenuが表示できるように実装して、上記拡張ポイントでメニューを 追加しました 参考 org.eclipse.jdt.internal.ui.javaeditor.JavaOutlinePage(1095行目付近) ・CTRL+A(全て選択)がテキストの全選択になる。 エディター上に、TextViewerとTableViewerをSashを使って配置すると TableViewerにフォーカスがある状態で、CTRL+Aを実行しても、テキストが全選択 になり、SQL実行結果の全レコードを選択してくれない。 # 再ターゲット可能なActionとして、任意のActionに入れ替えはできたのですが、 # キーバインドが入れ替わらない。という意味です。 対応 CommandServiceからCommandを取得して、実行するAction(Handler)を上書き。 void setGlobalActionForResultView(IActionBars bars) { bars.clearGlobalActionHandlers(); copyAction.refresh(); bars.setGlobalActionHandler(ActionFactory.COPY.getId(), copyAction); bars.setGlobalActionHandler(ActionFactory.SELECT_ALL.getId(), selectAllRecordAction); bars.updateActionBars(); // CTRL+C ICommandService commandService = (ICommandService) getSite().getService(ICommandService.class); Command copy = commandService.getCommand("org.eclipse.ui.edit.copy"); copy.setHandler(new ActionHandler(copyAction)); // CTRL+Aに対するコマンドの変更 Command select = commandService.getCommand("org.eclipse.ui.edit.selectAll"); select.setHandler(new ActionHandler(selectAllRecordAction)); } # 呼び出し側(フォーカスイベントに追加) public void createResultPartControl() { : table.addFocusListener(new FocusAdapter() { public void focusGained(FocusEvent e) { IActionBars bars = getEditorSite().getActionBars(); setGlobalActionForResultView(bars); bars.updateActionBars(); } }); }
テーブル編集エディターのWhere条件フィールドでは、 CTRL+SPACEを押下すると、カラム名やキーワードの補完ができます。 # 実は、知らない人もいたりして・・・ 以下がスクリーンショットです。 ![]() Eclipse3.2からは、テキストフィールドやコンボボックスに対して 比較的簡単に「コード補完」機能を実装できるようになりました。 カラム名の入力が非常に楽にはなるのですが、アイコンが付けられないが残念です。 # IContentProposalには画像を返すメソッドが無いためです。 しかし、Javaのクラス作成ウィザードなどでは、テキストフィールドに アイコン付きの補完ができます。 調べてみると、そこで使っているAPIは、3.2や3.3では 推奨されないメソッドになっていました・・・・。 しかし、JDTが現在でも使っているAPIなので、そう簡単にはメソッドが廃止には ならないだろうと思い、次のバージョンでは、 「あえて、推奨されないメソッド」で実装しようと思っています。 以下が、変更後のスクリーンショットです。 (カラムアイコンがあるで、以前より見やすいです) ![]() 将来、そのAPIが廃止になれば、アイコン無しの補完に 戻したいと思います^^。
DBViewer 1.0.7をリリースしました。 ご利用の方はバージョンアップされることをお勧めします。 主な機能 1.SQLアウトライン表示(β版) Select, Insert, Update, Delete 用です。 それ以外(ストアドなど)は・・・・。 2.DBツリービューのFilter設定 表示したくない要素やフォルダを設定できます。 3.データベース定義でのスキーマFilter設定 表示するスキーマのON/OFFを設定できます。 4.MySQL5のスキーマ表示(DBツリービュー) など、です。 また、テーブル編集エディターの起動が以前よりも早くなっていますので、 ぜひ、最新バージョンを使ってみてください。 詳しくは、こちら
DBViewerには、2種類のSQLFormatterが搭載されています。 1つは、blancoSqlFormatter もう1つは、DBViewer独自のFormatterです。 DBViewer独自といっても、私ではなく、会社の後輩が作っています。 ※私には作れません^^w 今日はその2つのFormatterの性能差(あくまでも一例です)を書いておきたいと思います。 とあるプロジェクトで、整形すると4000行近くなる長いSELECT文を書いた 後輩がおりまして、、その整形の時間を計測してみてました。 ------------------ 計測環境 ------------------ JDK1.4.2 DBViewer1.0.7(リリース前) SQLFormatter 1.0.0v20080313(リリース前) BlancoFormatter 0.0.3 (最新版ではありません) ------------------ 性能結果 ------------------ BlancoFormatter:約30秒~40秒 DBViewerFormatter(改良前):約10秒 想像以上に性能差があり、びっくりしました。 後輩は「もう少し性能向上できそう」と言って、改良版をくれました。 それで計測したところ、 DBViewerFormatter(改良後):約4秒~6秒 すばらしい!!、 やるな後輩!! また、字句解析する際に、offsetやlength情報なども付与してもらっており、 今後の開発するかもしれない、「SQLのアウトライン表示」、「マーカー」機能など・・・ に重宝するはずです。 あとがき そもそも、普通、4000行のSELECT文は書かないよね~ そんな長いSELECTが必要になるのは、テーブル構造が問題だね。 Viewとか、Functionに置き換えができないのか、見てみたのですが、 どうしても無理そうでした。(やっぱりテーブルの持ち方が悪い) そもぞも、バッチで必要なデータに加工すればいいのに・・・ どうしてもオンラインでデータを抜きたいらしい・・・
実は、最近注目しているDBフロントエンドがあります。 それは、「jOra」です。 http://jora.luenasoft.de/ Oracle専用のプラグインになりますが、かなりクールな感じです。 DataBase Explorerは、なかなか斬新なインターフィエスを採用しています。 http://jora.luenasoft.de/features.html#explorer 実は、jOraを触ったときに、まだまだDBViewerのレスポンスは改善できるぞ! と思って、テーブル編集エディターの処理を大幅に見直したのです^^。
1.0.7のリリース準備に入っています。 リリース準備で一番時間がかかるのが、海外向けのリリースノートです。 機能追加や障害修正内容を下手な英語で書くのが大変です^^ 文書が苦手なので、スクリーンショットで表現します(^^) 「百聞は一見にしかず」ですから。 しかし、スクリーンショットは、日本語用と英語用の2パターン 作っていたりして、、、結構手間がかかります。 今回は、日本語のリリース予告を先に公開しました。 http://www.ne.jp/asahi/zigen/home/plugin/dbviewer/news_jp.html
DBViewerでは、DataBaseMetaDataを使って、 DBツリービューを作成しています。 MySQLでは、DataBaseMetaDataのgetSchemasメソッドではnullを返すため、 スキーマは表示せず、テーブルやViewのフォルダをDataBase要素の下に 作成するように実装しています。 つまり、スキーマ未対応のデータベースとして表示していました。 しかし、MySQL5からは、"information_schema"というデータベース(もしくはスキーマ?) が新しく存在することを最近知り、次のバージョンでは、 スキーマとして一覧に表示できるようにしたいと思っています。 ※開発中の画面の為、変更されることがあります。 ![]() また、Filterのインターフェイスを変更しました。 1.テーブル/カラムフィルターをそれぞれ持つように修正 2.複数キーワードに対応(AND条件になります) カンマ(もしくは空白)で区切ります。
![]() テーブル編集エディターでは、カラムの表示・非表示を設定するダイアログです。 次期バージョン(1.0.7)では、必要なカラムを検索し、まとめてON/OFFできる ような機能を考えています。 正規表現や、大/小文字の区別が可能になっているので、 特に、名前でのソート機能はつけていません。 ソートができると、テーブルエディターでのカラム表示順を変更したい・・・ という要望があると、ちょっと困るので(笑)
多くの要望がありました、「スキーマフィルター」機能を データベース定義のオプションページ(ウィザードの3画面目) に、DBツリーに表示するスキーマを複数選択できるように考えています。 ![]() 100以上のスキーマでも検索できるように Filter機能(正規表現可能、大/小文字区別可能)を搭載しました。 この機能によって、もともとあった「接続スキーマのみ表示する」機能は 廃止になります。 こんな感じでいかがでしょうか? │<< 前のページへ │一覧 │ 一番上に戻る │ |
| ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||