假设我有人EMF模型。我创建了这个模型的两个实例bob.person和mike.person。有没有办法在我的工作区中创建所有模型的集合,这些模型是Person并使用OCL或EMF查询查询它们?
答案 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语句一起使用。