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

EMF中的模型保存一

阅读更多

使用EMF生成模型代码时,通常Eclipse会有一个缺省的保存格式。

在保存模型时,EMF会把根据模型生成一个EMF的Resource,然后用这个Resource来进行保存与加载。

在EMF中通常使用的Resource类型有:XML和XMI。在使用genmodel生成代码之前,我们可以设置要使用的Resource类型:

  • None
  • Basic
  • XML
  • XMI
  1. 如果选择None,则没有Resource类会被生成,可以看util包下的类;
  2. 如果选择的是一个Basic的类型,则会生成一个直接继承ResourceImpl的类;
  3. 如果选择的是XML类型,则会生成一个继承XMLResourceImpl的类;
  4. 如果选择的是XMI类型,则会生成一个继承XMIResourceImpl的类;

模型的加载与保存就是在Resource类的doSave()和doLoad()方法中完成的。在继承之前,先介绍一些简单的修改方法

 

一、修改Annotation

 

对于XML的Resource类型,这个比较简单,在ecore文件里,我们可以给每个元素加个若干个annotation。可以通常定义一些annotation来达到修改的目的。例如,如果想把结果保存为一个元素类型,并且元素名为myElement,则可以定义如下的annotation:

 

      <details key="name" value="myElement"/>
      <details key="kind" value="element"/>

 

二、修改Options

 

当我们使用annotation去修改保存过程的时候,实际是是使用XSD的插件去生成一个XMLMap来指定模型和它的保存类型之间的映射。因此,在XMI的情况下,我们也可以通过直接构建XMLMap来达到修改的目的。

 

在Editor(如果有一个的话)的doSave()方法中,在Resource保存前,我们可以指定XMLMap。例如:

 

	XMLMapImpl xmlMapImpl = new XMLMapImpl();
	XMLInfoImpl infoImpl = new XMLInfoImpl();
	infoImpl.setName("contentName");
	infoImpl.setXMLRepresentation(XMLInfoImpl.ATTRIBUTE);
	xmlMapImpl.add(PurchasePackage.eINSTANCE.getItemType_Comment(), infoImpl);
								
	saveOptions.put(XMLResource.OPTION_XML_MAP, xmlMapImpl);

 

这个意思就是说把comment这个元素修改为一个属性,并且保存的属性名为contentName。

 

分享到:
评论

相关推荐

    emf教程入门和插件

    通过XMI,你可以将Ecore模型保存为XML文件,便于数据的存储和传输。 4. **代码生成** EMF的一大优点是它可以自动生成Java代码,这些代码对应于你用Ecore定义的模型。这减少了手动编写重复代码的工作,提高了开发...

    EMF读取XML

    1. **EMF模型与XML的关系** - EMF模型是面向对象的,它定义了数据结构和业务规则,可以看作是XML数据的抽象表示。 - XML是一种标记语言,用于存储和传输结构化数据,它与EMF模型之间的映射使得XML数据能够被EMF...

    Eclipse开发使用GEF和EMF(IBM 红皮书)中英文对照版

    4. EMF模型的生成与使用:讲解如何定义XML Schema,由EMF自动生成Java类,以及如何在代码中操作这些模型对象。 5. 数据持久化:介绍如何利用EMF的持久化服务将模型数据保存和加载到文件中。 6. 插件开发:讲解如何在...

    EMF Developer Guide

    1. **逆向工程**:可以从现有的Java代码反向生成EMF模型。 2. **动态模型**:在运行时动态创建和修改模型,适用于需求不断变化的项目。 3. **转换和映射**:可以定义模型之间的转换规则,将一个模型转换为另一个模型...

    Eclipse Modeling Framework (EMF) Developer Guide

    - **创建编辑器**: EMF 提供了一种机制来自动生成编辑器,这些编辑器可以用来查看和修改 EMF 模型中的数据。开发者可以通过简单的配置文件来定制编辑器的行为和外观。 - **表单编辑器**: EMF 的表单编辑器提供了一个...

    java开发工具EMF插件

    总结,Java开发工具EMF插件是Eclipse IDE中的一个强大工具,它简化了模型驱动开发的过程,提高了开发效率。无论是进行软件设计、数据库建模还是业务流程建模,EMF都能提供有力的支持。通过熟练掌握EMF,开发者可以更...

    eclipse插件开发EMF api 文档

    3. **资源管理**:`Resource`接口是EMF中用于处理模型存储的关键,它可以加载和保存模型实例。`EObject.eResource()`方法可以获取对象所在的资源,而`Resource.load()`和`Resource.save()`则用于读写模型数据。 4. ...

    eclipse的emf插件

    6. **版本控制**:EMF模型与版本控制系统(如Git)兼容,使得团队协作和版本管理变得简单。 在给定的压缩包文件中,我们看到以下几个关键文件或目录: - **content.jar**:可能包含EMF插件的核心内容,如类库、...

    emf 转 BMP格式 lib

    EMF是一种矢量图格式,可以保存图形、文本和其他元素,并且支持抗锯齿,这意味着在放大时图像边缘依然保持平滑。BMP则是一个位图格式,它直接存储像素数据,不包含任何关于图形如何绘制的信息,因此在放大时可能会...

    GEF快速入门教程和EMF教程

    本文将详细介绍如何使用Graphical Editing Framework (GEF)实现一个简单的“Hello World”示例,并结合Eclipse Modeling Framework (EMF)进行扩展。通过此教程,读者能够理解GEF的基本架构以及如何在Eclipse RCP应用...

    EMF Eclipse Modeling Framework 第二版

    - 本书还包含了对 `@model` JavaDoc 标签、生成器模型属性以及资源保存和加载选项的完整文档,帮助开发者更好地理解并利用 EMF 提供的各种功能。 6. **最新 EMF 特性**: - 扩展元数据:提供更丰富的模型元数据...

    emf-xsd-Update-2.10.2

    EMF允许开发者创建、编辑和保存模型,这些模型可以是业务流程、数据库结构或任何其他需要表示的数据结构。而Visual Editor是基于EMF构建的一种图形化工具,它提供了直观的界面,让用户可以通过拖拽和配置元素来设计...

    EMF-runtime-2.7.2

    1. **核心库**:EMF的核心库包括了处理模型、序列化、反序列化、比较和图层等基本操作的类。这些类使得开发者可以方便地创建和操作基于EMF的模型。 2. **XMI支持**:XMI(XML Metadata Interchange)是一种标准格式...

    activiti designer插件emf

    EMF还支持序列化和反序列化,使得流程模型可以被保存和加载到数据库中。通过EMF,Activiti Designer能够实现对流程图的直观表示,包括泳道、任务、网关等元素,并且可以生成符合BPMN标准的XML流程定义文件。 在处理...

    eclipse EMF javadoc

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

    EMF学习完整教程

    EMF(Eclipse Modeling Framework)是Eclipse基金会推出的一款模型框架,其第二版教程详细介绍了如何使用Java、UML、XML Schema和Ecore定义模型,以及如何生成高质量的代码来实现模型和编辑器。本教程不仅包含超过40...

    eclipse emf插件

    Eclipse EMF(Executable Model Framework)插件是Eclipse IDE中的一个重要组成部分,它是一个用于构建、编辑和理解复杂数据模型的框架。EMF基于模型驱动的软件开发(MDE, Model Driven Engineering)理念,允许开发者...

    emf-sdo-runtime-2.2.2

    总的来说,"emf-sdo-runtime-2.2.2"是Eclipse环境中一个重要的模型框架插件,对于需要处理复杂数据模型和依赖于SDO功能的项目来说,它是不可或缺的。正确安装并使用此插件,可以提升开发者的生产力,并促进代码的可...

Global site tag (gtag.js) - Google Analytics