2

Person EMF Model があるとしましょう。このモデル bob.person と mike.person の 2 つのインスタンスを作成します。自分のワークスペース内の Person であるすべてのモデルのコレクションを作成し、OCL または EMF Query を使用してクエリを実行する方法はありますか?

4

1 に答える 1

3

はい、間違いなく。

まず、ワークスペースで特定のタイプのすべてのモデルのコレクションを作成するには、EclipseResourcesAPIを使用します。

IResourceVisitor 

特定の拡張子を持つファイルを検索し、それらをコレクションに入れると便利です。これらは、次の方法でリソースセットにロードできます。

ResourceSet personSet = new ResourceSetImpl();
for (IResource res : foundIResources) {
  personSet.getResource(URI.createFileUTI(res.getFullPath(), true);
} 

次に、結果セットに対してクエリを実行する必要があります。次の方法で、リソースセットのすべてのルート要素を収集できます。

Set<EObject> roots = new HashSet<EObject>;
for (Resource res : personSet.getResources()) {
  roots.addAll(res.getContent());
}

または作成する

IEObjectSource

同様の機能を備え、FROMEMFモデルクエリステートメントで使用します。

于 2012-07-19T05:49:11.223 に答える