`
liugang594
  • 浏览: 981618 次
  • 性别: 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图片格式转换成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. ...

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

    MFC中窗体界面保存成jpg,tif,tiff,emf,等各种文件,简短代码,加运行效果

    emf教程入门和插件

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

    emf文件格式详解

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

    emf转bmp代码

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

    遍历emf文件位图

    在遍历过程中,对于识别到的位图记录,我们可以使用`Graphics`对象的`DrawImage`方法绘制位图,并应用抗锯齿效果。这通常涉及到读取位图数据,创建`Bitmap`对象,然后调用`DrawImage`: ```cpp Bitmap bitmap...

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

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

    java开发工具EMF插件

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

    emf-runtime-2.7.2

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

    EMF模型文件对比/比较(emf.compare)

    - 如何配置和集成EMF.compare到他们的开发环境,如Eclipse IDE。 - 如何解析和加载EMF模型文件。 - 如何启动和使用比较视图,理解差异的表示方式。 - 如何处理和合并模型文件的冲突。 - 如何通过API扩展EMF.compare...

    emf-xsd-SDK-2.6.1

    在EMF中,XSD文件可以被用来作为模型的定义,生成相应的Java类和API,这样开发人员就可以在代码中直接操作这些模型对象。 GUI设计是构建用户界面的重要环节,EMF结合GEF (Graphical Editing Framework) 提供了一套...

    英文版微软EMF文件格式

    EMF文件的核心优势在于它能够保存图形对象的矢量信息,这意味着图像可以在不失真的情况下放大或缩小。这使得EMF成为创建图形、图表、logo和其他需要在不同尺寸下保持清晰的图形的理想选择。此外,EMF还支持颜色管理...

    emf文件和wmf的转换

    EMF(Enhanced Metafile)和WMF(Windows Metafile)是两种常见的矢量图形文件格式,主要用于存储图像数据,特别是在Windows操作系统环境下。这两种格式都允许无损缩放和复杂图形的绘制,但EMF是WMF的增强版本,提供...

    EMF、GEF、VE 适合于Eclipse 3.2.0

    EMF 提供了数据模型的创建、存储、序列化以及与Java对象之间的映射。开发者可以通过EMF定义自己的领域特定语言(DSL),并利用EMF生成对应的Java类和API,从而简化模型的编程和管理。此外,EMF还支持XMI(XML ...

    EMF_GEF_入门系列

    6. **交互与事件处理**:学习如何添加用户交互,如监听用户输入,处理拖放和连接事件,以及实现图形的动态更新。 7. **GEF与EMF结合**:演示如何将EMF的数据模型与GEF的图形编辑器相结合,创建一个完整的模型驱动的...

Global site tag (gtag.js) - Google Analytics