假设我有人 EMF 模型。我创建了这个模型 bob.person 和 mike.person 的 2 个实例。有没有办法在我的工作区中创建所有模型的集合,这些模型是 Person 并使用 OCL 或 EMF Query 查询它们?
问问题
89 次
1 回答
3
当然是。
首先,使用 Eclipse 资源 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 模型查询语句一起使用。
于 2012-07-19T05:49:11.223 回答