使用工作区中的所有模型

时间:2012-07-18 21:24:40

标签: eclipse-emf

假设我有人EMF模型。我创建了这个模型的两个实例bob.person和mike.person。有没有办法在我的工作区中创建所有模型的集合,这些模型是Person并使用OCL或EMF查询查询它们?

1 个答案:

答案 0 :(得分:3)

是的,当然。

首先,要在工作空间中创建某种类型的所有模型的集合,请使用Eclipse Resources API。

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
具有类似功能的

与FROM EMF Model Query语句一起使用。