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

添加监听到EMF对象、加密保存

阅读更多

一、可以注册监听来获取EMF模型改变事件,例如:

 

public class ElementObserver {
	private IPersonList persons;

	public ElementObserver() {
		ModelFactory factory = ModelFactory.eINSTANCE;
		persons = factory.createIPersonList();

		Adapter adapter = new AdapterImpl() {
			public void notifyChanged(Notification notification) {
				System.out
						.println("Notfication received from the data model. Data model has changed!!!");
			}
		};
		persons.eAdapters().add(adapter);
	}

	public void doStuff() {
		ModelFactory factory = ModelFactory.eINSTANCE;
		IPerson person = factory.createIPerson();
		person.setFirstName("Lars");
		System.out.println("I'm adding a person.");
		persons.getPersons().add(person);
		System.out.println("I'm changing a entry");
		persons.getPersons().get(0).setFirstName("Lars2");
	}
}

 

通过注册Adapter对象persons里,我们可以收到消息如果这个list有增删。

 

public class TotalObserver {
	private IPersonList persons;

	public TotalObserver() {
		ModelFactory factory = ModelFactory.eINSTANCE;
		persons = factory.createIPersonList();

		EContentAdapter adapter = new EContentAdapter() {
			public void notifyChanged(Notification notification) {
				super.notifyChanged(notification);
				System.out
						.println("Notfication received from the data model. Data model has changed!!!");
			}
		};
		persons.eAdapters().add(adapter);
	}

	public void doStuff() {
		ModelFactory factory = ModelFactory.eINSTANCE;
		IPerson person = factory.createIPerson();
		person.setFirstName("Lars");
		System.out.println("I'm adding a person.");
		persons.getPersons().add(person);
		System.out.println("I'm changing a entry");
		IPerson person2 = persons.getPersons().get(0);
		person2.setFirstName("Lars2");

	}
}

 

通过增加EContentAdapter,我们可以监听到list的增删和其中某个元素有变化。

 

二、EMF模型保存时加密

 

可以通过设置Save Option和Load Option来实现模型保存时加密、加载时解密的过程。例如:

public class MyXMIFactoryImpl extends XMIResourceFactoryImpl {

	@Override
	public Resource createResource(URI uri) {
		XMIResourceFactoryImpl resFactory = new XMIResourceFactoryImpl();
		XMIResource resource = (XMIResource) resFactory.createResource(uri);
		try {
			resource.getDefaultLoadOptions().put(Resource.OPTION_CIPHER,
					new AESCipherImpl("12345"));
			resource.getDefaultSaveOptions().put(Resource.OPTION_CIPHER,
					new AESCipherImpl("12345"));
		} catch (Exception e) {
			e.printStackTrace();
		}
		return resource;
	}
}

 

分享到:
评论

相关推荐

    从剪贴板提取EMF图元文件并保存的C#工程,绝对有用!

    标题中的“从剪贴板提取EMF图元文件并保存的C#工程”是指一个C#编程项目,其主要功能是获取用户剪贴板中的增强型元文件(EMF)格式图像,并将其保存到本地系统。EMF是一种矢量图形格式,常用于Windows操作系统中,...

    EMF读取XML

    - 解析后的XML数据以EMF对象的形式存在,可以直接操作这些对象,例如修改属性值、添加或删除元素。 - 修改后,可以使用`save()`方法将模型保存回XML文件,这会自动处理XML编码和格式化。 6. **性能优化** - EMF...

    微软emf文件格式详解

    - **CAD系统**:计算机辅助设计(CAD)系统也经常使用EMF格式来保存复杂的图形设计,因为它的高保真度有助于保持设计的准确性。 #### 五、EMF格式的知识产权声明 根据微软发布的[MS-EMF]文档(EnhancedMetafile ...

    MFC中窗体界面保存成jpg,tif,tiff,emf,等各种文件

    ### MFC中窗体界面保存成jpg、tif、tiff、emf等文件的技术解析 在Windows编程领域,Microsoft Foundation Classes (MFC) 是一种广泛使用的框架,它简化了使用C++进行Windows应用程序开发的过程。本文将详细介绍如何...

    将EMF图片格式转换成PNG

    // 创建一个BufferedImage对象,用于保存PNG图像 BufferedImage image = new BufferedImage(emf.getWidth(), emf.getHeight(), BufferedImage.TYPE_INT_ARGB); // 将EMF渲染到BufferedImage上 Graphics2D g2d =...

    SVG转EMF的示例代码

    你可以通过Maven或Gradle将它引入,或者直接下载JAR文件并添加到项目的类路径中。然后,你可以按照以下步骤进行: 1. 创建一个SVG图形的输入流,通常是读取SVG文件的FileInputStream。 2. 使用Batik的...

    Emf2Png.zip

    - **绘制EMF到Bitmap**:调用Graphics对象的DrawImage()方法,将EMF图像绘制到Bitmap上。这会将EMF的矢量数据转换为位图像素。 - **保存为PNG**:最后,使用Bitmap对象的Save()方法,指定保存路径和PNG作为目标...

    eclipse插件开发EMF api 文档

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

    emf文件格式详解

    通过阅读这份文档,读者可以了解到如何创建、编辑和解析EMF文件,以及EMF在应用程序中的使用方式,比如打印、图像处理和图形显示。 **emf.hlp**:这是一个帮助文件,通常用于提供快速查询和参考。在这个文件中,...

    emf教程入门和插件

    EMF提供了运行时环境(EMF Runtime),使得模型可以在应用程序中被实例化、修改和保存。这个环境支持动态加载和解析模型,以及持久化模型到磁盘。 6. **EMF插件** 插件是EMF生态系统的重要组成部分,它们扩展了...

    emf转bmp代码

    增强型元文件是一种矢量图形格式,广泛用于Windows操作系统中,它可以保存图形对象的描述,包括线条、曲线、填充区域等。而位图则是像素图像,适用于存储照片或包含大量细节的图像。 描述中的“emf转bmpemf”可能是...

    java emf 转jpg源码.zip

    6. 用户界面(UI)设计:虽然描述中没有明确提到 UI,但通常这类工具会有一个简单的用户界面,允许用户选择输入 EMF 文件,设置转换参数,并保存转换后的 JPG 文件。 7. 异常处理和错误报告:良好的源码应该包含...

    EMF 自学笔记5

    EMF的序列化机制可以处理复杂的模型结构,包括循环引用、嵌套对象等,确保了模型数据的完整性和一致性。 #### 六、EMF在实际项目中的应用 EMF在各种领域都有广泛的应用,特别是在复杂系统的建模和设计中。例如,在...

    EMF Developer Guide

    此外,EMF提供了丰富的API,允许动态修改模型,实现模型的加载、保存和验证。 **高级话题** EMF支持许多高级特性,例如: 1. **逆向工程**:可以从现有的Java代码反向生成EMF模型。 2. **动态模型**:在运行时动态...

    EMF文件提取文本,预览,打印

    将EMF文件发送到打印机涉及将文件中的图形指令翻译成打印机语言,例如PCL或PostScript。这通常通过打印机驱动程序完成,该驱动程序理解EMF格式并将其转换为适合特定打印机的命令。 4. **转换为图像**:有时候,将...

    eclipse的emf插件

    3. **持久性**:EMF支持将模型对象序列化为XML文件,使得模型数据可以在不同时间点保存和恢复,同时也方便了跨系统数据交换。 4. **图形用户界面(GUI)编辑器**:EMF提供了一个框架,可以快速构建基于模型的图形...

    java开发工具EMF插件

    3. **模型操作**:EMF提供了丰富的API,包括创建、修改、查询模型对象,以及保存和加载模型到XML文件。 4. **图形化编辑器**:EMF集成了GEF(Graphical Editor Framework),可以快速构建基于模型的图形化编辑器,...

    eclipse emf&gef

    将现有的XML或UML模型导入到EMF中,然后利用EMF的工具对其进行扩展和维护。 ##### 2.2 EMF编辑器与代码生成 **2.2.1 生成的插件** EMF自动生成的插件包含了编辑器、视图和其他相关组件。 **2.2.2 通过GenModel...

    emf-runtime-2.7.2

    这个列表可能包含了一系列用于安装或更新EMF Runtime 2.7.2到Eclipse环境中的文件,如JAR包、配置文件等,这些文件将被Eclipse识别并集成到其插件系统中,以提供对EMF功能的支持。 EMF的主要特点和应用包括: 1. **...

    Eclipse Modeling Framework (EMF) Developer Guide

    此外,还可以使用 EMF 的资源框架来管理模型实例的加载和保存操作。 #### 2. EMF 编辑框架程序员指南 **EMF Edit Framework Programmer's Guide** 重点介绍了如何使用 EMF 创建用户界面,以便编辑和查看 EMF 模型...

Global site tag (gtag.js) - Google Analytics