本文主要是介绍使用WTP跨文件持久化EMF对象,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
记得刚开始使用EMF时,我就觉得它跨文件保存对象的功能非常强大方便。
而使用WTP持久化EMF对象就没有这么方便了。毕竟WTP对保存的格式做了
严格的限制。
为了实验,我随便建立了一个模型,如下所示:
Shiep代表学校,包含若干系,每个系有若干老师。
Document是每个老师的档案,Documents是包含Document的容器。
建立这样一个模型的原因:学校要求把学校资料和老师档案分开保存。
这样Document就不能象平时一样把Document和Teacher设为包含(containment)关系。
一,EMF持久化
如果使用EMF自带的保存方法,建立完模型也就结束了:)
1.保存对象的代码片断:
Shiep shiep = ModelFactory.eINSTANCE.createShiep();
Depart electric = ModelFactory.eINSTANCE.createDepart();
electric.setName( " electric " );
shiep.getDeparts().add(electric);
Teacher andy = ModelFactory.eINSTANCE.createTeacher();
andy.setName( " andy " );
electric.getTeachers().add(andy);
Resource shiepRes = resourceSet.createResource(URI
.createURI( " file:///home/winters/emftest/shiep.xml " ));
shiepRes.getContents().add(shiep);
Documents root = ModelFactory.eINSTANCE.createDocuments();
Document d1 = ModelFactory.eINSTANCE.createDocument();
d1.setOwner(andy); // 这个andy对象就是跨文件保存的对象
d1.setContent( " He is a very good teacher. " );
root.getChildren().add(d1);
Resource documentsRes = resourceSet.createResource(URI
.createURI( " file:///home/winters/emftest/documents.xml " ));
documentsRes.getContents().add(root);
shiepRes.save( null );
documentsRes.save( null );
Depart electric = ModelFactory.eINSTANCE.createDepart();
electric.setName( " electric " );
shiep.getDeparts().add(electric);
Teacher andy = ModelFactory.eINSTANCE.createTeacher();
andy.setName( " andy " );
electric.getTeachers().add(andy);
Resource shiepRes = resourceSet.createResource(URI
.createURI( " file:///home/winters/emftest/shiep.xml " ));
shiepRes.getContents().add(shiep);
Documents root = ModelFactory.eINSTANCE.createDocuments();
Document d1 = ModelFactory.eINSTANCE.createDocument();
d1.setOwner(andy); // 这个andy对象就是跨文件保存的对象
d1.setContent( " He is a very good teacher. " );
root.getChildren().add(d1);
Resource documentsRes = resourceSet.createResource(URI
.createURI( " file:///home/winters/emftest/documents.xml " ));
documentsRes.getContents().add(root);
shiepRes.save( null );
documentsRes.save( null );
2.看看EMF的保存结果:
Shiep.xml:
<? xml version="1.0" encoding="ASCII" ?>
< org .shiep.edu.model:Shiep xmlns:org.shiep.edu.model ="http:///org/shiep/edu/model.ecore" >
< org .shiep.edu.model:Shiep xmlns:org.shiep.edu.model ="http:///org/shiep/edu/model.ecore" >
这篇关于使用WTP跨文件持久化EMF对象的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!