hishidama / xtext-dmdl-editor Goto Github PK
View Code? Open in Web Editor NEWAsakusa Framework DMDLエディターEclipseプラグイン(Xtext版)
Asakusa Framework DMDLエディターEclipseプラグイン(Xtext版)
データモデルの説明が1行目にある状態で, 既存のデータモデルをウィザードで編集すると, 先頭に空行が2行挿入される.
先頭に空行が2行ある場合は挿入されない.
namespaceにアンダースコア入りの名前を指定すると、
Importer/Exporter生成ウィザードによって作られるクラスのimport文が正しくなくてコンパイルエラー状態になる。
@namespace(value = hoge_zzz)
example = {
↓
import com.example.modelgen.hoge_zzz.csv.AbstractExampleCsvInputDescription;
DMDLコンパイラーによって実際に生成されるクラスは、パッケージ名が「hogeZzz」になる。
デフォルトの名前としてポート名が使われているように見えるが, 31文字より多い長いポート名を使っていた場合, エラーが出るもののウィザードでは修正ができない.
そのためそれ以上ウィザードを進められない状態になってしまう.
FlowPart変更ウィザードでIn/Outを変更できるようにする。
バッチコンパイルメニューを実行すると、Javaのコンパイルを実行してからバッチコンパイル本体が実行されるが、
Javaのコンパイルが終了する前にバッチコンパイル本体の実行が始まってしまう。
モデルのプロパティーを複数選択し、同様の処理を生成する機能を追加する。
例えばプロパティー「foo」「bar」を指定し、テンプレートとして「result.set$(name.toCamelCase)Option(in.get$(nameToCamelCase)Option());
」という指定をすると、
result.setFooOption(in.getFooOption()); result.setBarOption(in.getBarOption());
というソースが生成されるようにする。
Mac OS X 10.8.5 上の Eclipse Kepler にて, データモデル定義で使っているグリッド部品では行数は表示されないので, エラー箇所を行数で指定されても原因箇所が分からない.
最左列に連番用の列を追加して欲しい.
JobFlow作成/変更ウィザードではImporter/Exporterを選択するが、そのダイアログにフィルター機能が欲しい。
Javaエディター上のクラス名やメソッド名を右クリックして出てくるコンテキストメニューに「Copy DMDL Name」メニューを追加する。
これは、クラス名やメソッド名をデータモデルのモデル名やプロパティー名としてクリップボードにコピーするもの。
いくつか試しにデータモデルから Direct I/O CSV 用の importer を作ってみたところ, 過去に作ったデータモデル用の importer クラスを import する文が余計に生成されている.
どこかにキャッシュが残っているような動きをする.
Convert 演算子の実装例 (http://asakusafw.s3.amazonaws.com/documents/latest/release/ja/html/dsl/operators.html#id44) にあるような, キャッシュオブジェクトを演算子オブジェクトのフィールドに保持しておき, それを再利用する実装も生成できるようにして欲しい.
現在のFlowPart変更ウィザードでは、変数名やコメントの値を、FlowPartクラスのコンストラクターから取得している。
しかし、変数名を変えたい場合は、フィールドをEclipseの機能で置換することの方が多い。
したがって、フィールドから情報を取るようにすれば、変数名の変更は以下の手順で出来るようになる。
定義へのジャンプとは別に "Open Type" ダイアログのような Data Model 専用の検索ダイアログが欲しい.
Search メニュー → Search... → Search ダイアログ, から検索できるのは分かりますが, 専用のものがあると嬉しいです.
JobFlowやFlowPart内でOperatorFactoryのクラス名やメソッドを右クリックして「Open Operator」を選択すると、Operatorクラス(該当メソッド)へジャンプすることが出来る。
FlowPartFactoryでも、「Open Operator」を選択すると、FlowPartクラスへジャンプすることが出来る。
しかし、FlowPartFactoryのcreateメソッドを指定してジャンプすると、FlowPartクラス名部分が開く。
createメソッドが選択されていた場合はFlowPartクラスのコンストラクターにジャンプできるようにしたい。
@Attributeを入力補完できるようにする。
「データモデルの作成」ウィザードの「データモデルの定義」では, テーブルの行を選択し, プロパティの挿入, 編集, 削除が行える.
末尾へプロパティを挿入する場合は, 末尾の空の行をクリックしてからプロパティの追加を行えば良いが, プロパティの数が1画面で表示できる量を越えると末尾の空行がクリックできなくなる.
その結果, 末尾にプロパティを追加したいときは, 最後尾のプロパティを選択し, 新たにプロパティを挿入し, 1 つ下に下げる操作を行うことになってしまう.
常に末尾にダミーの空プロパティを付けて, その行を選択して追加することで, 末尾へのプロパティの挿入操作が行えないだろうか?
Operatorメソッド作成ウィザードのConvert演算子では、代入先のモデルの全プロパティーに対するsetter呼び出しを生成している。
Fold演算子でも同様に生成する。
JobFlow作成/変更ウィザードのフィールドをソートする機能の追加。
dmdlファイルエディター上のモデル名やプロパティー名を右クリックして出てくるコンテキストメニューに「Copy Java Name」メニューを追加する。
これは、モデル名やプロパティー名をJavaのクラス名やメソッド名の一部(UpperCamelCase)としてクリップボードにコピーするもの。
集計モデルの作成ウィザードにおいて、集計種類(any・count・sum等)を選択するにはeditボタンを押して編集ダイアログを出す必要がある。(個々のプロパティー毎にダイアログを開かなければならない)
この集計種類を(編集ダイアログを出さずに)表内で直接変更できるようなボタンを追加する。
importer を作成するデータモデルが複数選択できるが, basePath, resourcePattern, dataSize の設定が同一の importer が, それぞれのデータモデルに対して作成される.
(親クラスはそれぞれ適切なものが選択されている.)
データモデル選択画面で 1 つしか選べないようにする方が良いと思う.
数値でまとまっているわけでもなく, 辞書順に並んでいるわけでもなく DECIMAL が探しづらかったので, 何らかのルールでソートして欲しい.
(公式ドキュメント http://asakusafw.s3.amazonaws.com/documents/latest/release/ja/html/dmdl/user-guide.html#id6 と同じ順序であることは認識しています.)
a = b + c + d
というモデル定義をした場合, Outline に c と d のプロパティが表示されていない.
結合モデル作成ウィザードの結合キー定義ページで
左側の表から(キーとしたいプロパティーのペアを同時に選択してコピーするのではなく)
キーとしたいプロパティーを1回ずつコピーして結合キーを定義できるようにする。
つまり、以下のような動作を出来るようにする。
※現状では、3の動作を行うと、「A1のみの行」はそのままで、新たに「B1のみの行」が追加される。
@namespaceに対応する。
Ashigel コンパイラがエラーとして弾かない, 数字始まりの単語を持つプロパティがあるモデルが作成できない.
エラーの文言でも「推奨」という言葉が使われており, ウィザードが進められない理由としては弱いと感じる.
DMDL エディタのフォーマット機能では, インデントの Tab は空白4つに置き換えているので, それに揃えて Tab の入力時に空白4つに置き換えて欲しい.
シンタックスエラーがあるDMDLスクリプトに対して
DMDLスクリプト内容を編集するウィザードを実行すると、
DMDLスクリプトのテキストが空になるという現象が発生しました。
以下再現手順です。
message = { };
@+
ボタン (データモデルに属性を追加) を押下する上記の手順で完了ボタンを押しても
ウィザードのページが閉じられず、
エディタの内容が空になります。
可能であれば、シンタックスエラーがある状態では
ウィザードを実行できないようにするのがよいと思います。
@auto_projectionに対応する。
Operatorメソッド作成ウィザードのBranchで既存enumを選択するとIllegalArgumentExceptionが発生する。
FlowPart変更ウィザードでコメントを変更できるようにする。
@アイコンからモデル属性付与を行おうとすると以下メッセージが出て失敗します。
「{model name}の加工に失敗しました。{dmdl file path}にエラーがある可能性があります。」
バージョンは下記の通りです。
Asakusa Framework : 0.7.0
Mac OS X 10.9.5
Java 1.7.0_25
DMDL EditorX Feature 0.0.1.201410041324
Xtend IDE 2.7.2.v201409160908
Xtend Library for GWT 2.7.2.v201409160908
Xtext Complete SDK 2.7.2.v201409160908
Xtext Redistributable 2.7.2.v201409160908
dmdlファイルの中身は、以下のような状態です。
"商品マスタ"
item_master = {
"商品ID"
item_id : INT;
"商品名"
item_name : TEXT;
};
"売上明細"
sales_detail = {
"明細ID"
sales_id : INT;
"商品ID"
item_id : INT;
"売上数"
count : INT;
};
"結合明細"
joined joined_sales = item_master -> {
"商品ID"
item_id -> item_id;
"商品名"
item_name -> item_name;
} % item_id
+ sales_detail -> {
"明細ID"
sales_id -> sales_id;
"商品ID"
item_id -> item_id;
"売上数"
count -> count;
} % item_id;
"出力明細"
output_sales = {
"フラグ"
flg : TEXT;
} + joined_sales;
Xtext2.7だと、DMDLエディター上で1文字入力する度に「The resource is concurrently edited in another editor. Do you want to continue?」というダイアログが出る。
このダイアログでYesを押すとしばらく出てこなくなるが、一旦ファイルを保存するとまた出てくる。
Xtext2.6では発生しない。
JobFlow作成/変更ウィザードでは、Importer/Exporterクラスを選択したときに、その変数名をモデル名から作っている(FlowPartウィザードと同じ)。
これを、Impoter/Exporterクラス名から作るようにする。
(もしくは、選択できるようにする)
あと、後から一括して変換できると良い。
改行コードが CR+LF , タブがハードタブである DMDL ファイルにウィザードから属性を追加すると, 変更を受けた行の改行コードが LF になり, タブがスペース 4 個になっています.
コンパイルも問題無くできるので動作に異常は無いと思いますが, git などでソースコードを管理している場合, 空白文字の変更が履歴に残ってしまい, 履歴を追うときにやや気になります.
飽くまで気になる程度の重要度です.
Search View にファイル名が空だが Data Model 名が存在する検索結果が表示されます.
この行は手順2で消した DMDL ファイルを表示しようとしているのだと思います.
再度, 手順1を行うとファイル名が空の検索結果が出なくなります.
存在しないファイルについては表示させない動作を期待します.
AsakusaFW 0.9.0でDMDLのコンパイルを行うとエラーになる。
データモデル検索ダイアログのfilterの機能を拡張する。
現在は build.properties の asakusa.dmdl.dir の値をデフォルト値として入れている.
パッケージ・エクスプローラなどからフォルダを右クリックして, データモデルの新規作成メニューを起動した場合は,
その右クリックされたフォルダの位置が「作成先ファイル名」のデフォルト値になっていて欲しい.
合成モデルが元になっている集計モデルをデータモデル編集ウィザードで変更しようとすると、
右側のデータモデル定義のsrc modelの初期値が(集計モデル名でなく)合成モデルの名前になっている。
Importer/Exporter作成ウィザードのImporter/Exporter一覧(ツリー)に属性(DirectIOかWindGateか)を表示する。
フロークラスからOperatorクラスへのハイパーリンクのジャンプ機能において、
Operatorのメソッド名がアンダースコア入りの場合に そのメソッドにジャンプできない。
(例えばOperatorのaaaBbb_CccDddというメソッドはOperatorFactoryではaaabbbCccdddになるようで、一致していないので現状ではジャンプできない)
現在, モデルの定義場所へのジャンプはできるが, その逆向きの「そのモデルが使われている場所」の一覧を見る方法が無い (or 分からない).
Eclipse のクラスやフィールドに対するコンテキストメニューの「参照 (References)」に近いイメージのものが欲しい.
メニューには「New JobFlow/FlowPart Test class ...」とありますが、
ダイアログの「Class under test」でJobFlowクラスを指定すると、
「is not FlowPart class」とエラーが出ます。
バージョンは以下の通りです。
Asakusa Framework : 0.7.0
Mac OS X 10.9.5
Java 1.7.0_25
DMDL EditorX Feature 0.0.1.201410041324
Xtend IDE 2.7.2.v201409160908
Xtend Library for GWT 2.7.2.v201409160908
Xtext Complete SDK 2.7.2.v201409160908
Xtext Redistributable 2.7.2.v201409160908
「command + マウスオーバー」で表示されるはずのメニューが表示されない.
再現環境の OS は Windows 7, Eclipse 4.3.
key の 2 つ目以降の名前が Outline に表示されない.
ExporterクラスのgetOrderメソッド内に文字列に対してプロパティー名の入力補完およびツールチップの表示が出来るようにする。
(getOrderメソッド内は、基本的にはソート用のプロパティー名を列挙するだけのはずなので、文字列はプロパティー名と見なす)
Operatorメソッド作成ウィザードにおいて、例えばConvert演算子ではフィールドにオブジェクトを用意し、それを使うようなソースを生成している。
フィールドを使うかどうかを選択する(使うならフィールド名を入力する)ページを用意した方がいいような気がしてきた。
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.