`
youngerbaby
  • 浏览: 115023 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

获取EObject对象的反向引用对象

 
阅读更多

在基于EMF模型的应用中经常会有这样的需求:

当一个模型对象被一个特定的对象引用后,就不可以再被其他的对象引用。如何获取一个模型被那些其他模型引用了这个信息呢?

当然一种解决方案是在建模的时候,把引用设成双向的。然而这样会造成一定的冗余,使你的模型稍显臃肿和复杂。其实如果你是用EMF来表示你的模型,通过EMF提供的API可以获得所有引用某个model的model列表:

代码如下:

EObject referencedModel = getReferencedModel();  // 被引用的对象

List adapters = referencedModel .eAdapters();          //获得所有与对象关联的adapter

 

for(Iterator it = adapters.iterator();it.hasNext();) {
        Object obj = it.next();
        // if the adapter is cross reference adapter
        if(obj instanceof CrossReferenceAdapter) {

                 Set refs = null;

                 // 返回所有引用referencedModel的对象

                 refs = ((CrossReferenceAdapter) obj).getInverseReferencers(referencedModel, null,null);

         }
}

方法getInverseReferencers()的参数参考EMF API.

分享到:
评论

相关推荐

    eclipse插件开发EMF api 文档

    `EObject`是所有模型对象的基类,`EClass`用于定义模型的类,`EAttribute`和`EReference`则分别表示模型中的属性和引用关系。 3. **资源管理**:`Resource`接口是EMF中用于处理模型存储的关键,它可以加载和保存...

    EMF读取XML

    - `Resource`对象包含了一个或多个`EObject`,这些对象对应于XML中的元素,可以通过遍历这些对象来访问XML数据。 5. **解析和操作XML** - 解析后的XML数据以EMF对象的形式存在,可以直接操作这些对象,例如修改...

    阿里巴巴高级Java面试题

    该类提供了一些基本的方法,如`getSource()`用于获取事件源对象。 2. **事件监听器(Event Listener)**:事件监听器是一个实现了特定接口的对象,这些接口通常继承自`java.util.EventListener`接口。当事件发生时,...

    阿里面试总结及答案

    - **事件**:通常继承自`java.util.EventObject`类,用于封装事件源对象及与事件相关的其他信息。例如,在一个按钮点击事件中,事件对象可能包含按钮的状态变化等信息。 示例代码如下: ```java public class ...

    eclipse EMF javadoc

    通过阅读这些文档,开发者可以学习如何创建、操作和序列化EMF模型,以及如何将模型转换为代码或者从代码反向生成模型。 EMF的核心组件包括: 1. **Ecore**: Ecore是EMF的基础元模型,它定义了基本的数据结构,如类...

    Eclipse建模框架开发人员指南

    这些库包括EObject接口,它是所有EMF对象的基类,以及ECore、EDataType等关键类。 5. **模型转换**:Model-to-model (M2M)转换是EMF的重要特性,它允许模型在不同的抽象层次之间转换,或者在不同的DSL之间转换。EMF...

    QGraphicsItem选中后,出现边框,可以拉伸

    在Qt框架中,`QGraphicsItem`是图形用户界面(GUI)编程中的一个重要类,用于在`QGraphicsView`或`QGraphicsScene`中绘制和管理图形对象。当我们需要实现可交互的图形元素,如按钮、图像或者自定义形状时,`...

    emf-practice:Eclipse建模框架实践代码

    这些库提供了一系列的API,例如`ResourceSet`,`Resource`,`EObject`等,用于处理模型的生命周期。 5. **例子和测试**:项目可能包含一些示例代码,演示如何使用EMF创建、读取、更新和删除(CRUD)模型对象。此外...

    GEF入门学习例子

    在GEF中,适配器通常用于将模型对象转换为视图对象。 7. **手势(Gesture)**: 手势是用户与图形元素交互的方式,如鼠标点击、拖拽等。GEF通过`CommandStack`和`DirectEditManager`来处理这些手势。 **例子中的关键...

    emf.uuid.library.example:关于如何为 EMF 模型启用 UUID 的示例

    它提供了创建、存储、交换和操作复杂的对象模型的能力。在EMF中,UUID(Universally Unique Identifier)是一种可确保每个实例在全球范围内唯一标识的方式。启用UUID对于模型的版本控制、合并和序列化特别有用,因为...

    GEF入门教程 八进制版本的源代码

    - `Model`: 存储图形元素的数据模型,可能包含`EObject`的子类,用于表示图形对象。 - `EditParts`: 这些是负责绘制和编辑图形元素的类,每个EditPart对应一个模型元素。 - `Commands`: 实现具体编辑操作的命令类,...

    taipan源码及学习资料

    1. **理解EMF**: 首先,你需要熟悉EMF的基本概念,如EObject、EClass、EReference和EAttribute等,这些都是构建模型的基础元素。此外,理解Ecore模型的生命周期和数据绑定机制也是必要的。 2. **学习GMF工具链**: ...

    ca.footeware.e4.imageview:练习e4 RCP应用

    3. **Component Model**:E4的组件模型基于EObject,这是EMF(Eclipse Modeling Framework)的一部分。开发者可以创建自定义的模型元素,这些元素代表UI组件或业务逻辑,实现了UI与业务的解耦。 4. **Event ...

    QVT Parser-开源

    3. **EMF框架**:熟悉EMF的基本概念,如Ecore模型、EClass、EObject等,以及如何使用EMF API创建和操作模型。 4. **模型转换**:掌握模型转换的基本步骤,包括源模型的读取、转换规则的执行和目标模型的生成。 5. ...

Global site tag (gtag.js) - Google Analytics