﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>BlogJava-Xiaobo Sun -随笔分类-Eclipse EMF</title><link>http://www.blogjava.net/sunxiaobo/category/28817.html</link><description>Eclipse-Europa
http://umlfact.berlios.de/~s_xsun/</description><language>zh-cn</language><lastBuildDate>Wed, 09 Jan 2008 05:10:01 GMT</lastBuildDate><pubDate>Wed, 09 Jan 2008 05:10:01 GMT</pubDate><ttl>60</ttl><item><title>The location of EMF ResourceSet</title><link>http://www.blogjava.net/sunxiaobo/archive/2007/12/17/168358.html</link><dc:creator>Xiaobo Sun</dc:creator><author>Xiaobo Sun</author><pubDate>Mon, 17 Dec 2007 14:34:00 GMT</pubDate><guid>http://www.blogjava.net/sunxiaobo/archive/2007/12/17/168358.html</guid><wfw:comment>http://www.blogjava.net/sunxiaobo/comments/168358.html</wfw:comment><comments>http://www.blogjava.net/sunxiaobo/archive/2007/12/17/168358.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/sunxiaobo/comments/commentRss/168358.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/sunxiaobo/services/trackbacks/168358.html</trackback:ping><description><![CDATA[The EMF ResourceSet is located in the EdtingDomain of Editor<br />
<img src ="http://www.blogjava.net/sunxiaobo/aggbug/168358.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/sunxiaobo/" target="_blank">Xiaobo Sun</a> 2007-12-17 22:34 <a href="http://www.blogjava.net/sunxiaobo/archive/2007/12/17/168358.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>EMF dynamic -&gt; reflection</title><link>http://www.blogjava.net/sunxiaobo/archive/2007/06/28/126872.html</link><dc:creator>Xiaobo Sun</dc:creator><author>Xiaobo Sun</author><pubDate>Thu, 28 Jun 2007 09:25:00 GMT</pubDate><guid>http://www.blogjava.net/sunxiaobo/archive/2007/06/28/126872.html</guid><wfw:comment>http://www.blogjava.net/sunxiaobo/comments/126872.html</wfw:comment><comments>http://www.blogjava.net/sunxiaobo/archive/2007/06/28/126872.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/sunxiaobo/comments/commentRss/126872.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/sunxiaobo/services/trackbacks/126872.html</trackback:ping><description><![CDATA[<p class="docText"> The situation where an application simply wants to share data without the need
for a generated type-safe API. The reflective EMF API is sometimes all one
really needs.</p>
<p class="docText">EMF provides a dynamic implementation of the reflective API
(that is, the <tt>EObject</tt> interface) which, although slower than the one
provided by the generated classes, implements the exact same behavior. If you
don't need a type-safe API, then the only advantage of generating Java classes,
as opposed to simply using the dynamic implementation, is that they use less
memory and provide faster access to the data. The down-side is that the
generated classes have to be maintained as the model evolves, and they have to
be deployed along with the application. This is the normal trade-off between
dynamic and static implementations.</p>
Dynamic: <br />
<p class="docText">================create dynamic models (types)=========================</p>
<pre>EcoreFactory ecoreFactory = EcoreFactory.eINSTANCE;<br />
EcorePackage ecorePackage = EcorePackage.eINSTANCE;<br />
<br />
EClass employeeClass = ecoreFactory.createEClass();<br />
employeeClass.setName("Employee");<br />
<br />
EAttribute employeeName = ecoreFactory.createEAttribute();<br />
employeeName.setName("name");<br />
employeeName.setEType(ecorePackage.getEString());<br />
employeeClass.getEAttributes().add(employeeName);<br />
EAttribute employeeManager = ecoreFactory.createEAttribute();<br />
employeeManager.setName("manager");<br />
employeeManager.setEType(ecorePackage.getEBoolean());<br />
employeeClass.getEAttributes().add(employeeManager);<br />
<br />
EClass departmentClass = ecoreFactory.createEClass();<br />
departmentClass.setName("Department");<br />
<br />
EAttribute departmentName = ecoreFactory.createEAttribute();<br />
departmentName.setName("name");<br />
departmentName.setEType(ecorePackage.getEString());<br />
departmentClass.getEAttributes().add(departmentName);<br />
<br />
EAttribute departmentNumber = ecoreFactory.createEAttribute();<br />
departmentNumber.setName("number");<br />
departmentNumber.setEType(ecorePackage.getEInt());<br />
departmentClass.getEAttributes().add(departmentNumber);<br />
<br />
EReference departmentEmployees = ecoreFactory.createEReference();<br />
departmentEmployees.setName("employees");<br />
departmentEmployees.setEType(employeeClass);<br />
departmentEmployees.setUpperBound(<br />
EStructuralFeature.UNBOUNDED_MULTIPLICITY);<br />
departmentEmployees.setContainment(true);<br />
departmentClass.getEReferences().add(departmentEmployees);<br />
<br />
EPackage companyPackage = ecoreFactory.createEPackage();<br />
companyPackage.setName("company");<br />
companyPackage.setNsPrefix("company");<br />
companyPackage.setNsURI("http:///com.example.company.ecore");<br />
companyPackage.getEClassifiers().add(employeeClass);<br />
companyPackage.getEClassifiers().add(departmentClass);<br />
<br />
=====================create objects==============================<br />
EFactory companyFactory = companyPackage.getEFactoryInstance();<br />
<br />
EObject employee1 = companyFactory.create(employeeClass);<br />
employee1.eSet(employeeName, "John");<br />
<br />
EObject employee2 = companyFactory.create(employeeClass);<br />
employee2.eSet(employeeName, "Katherine");<br />
employee2.eSet(employeeManager, Boolean.TRUE);<br />
<br />
EObject department = companyFactory.create(departmentClass);<br />
department.eSet(departmentName, "ABC");<br />
department.eSet(departmentNumber, new Integer(123));<br />
((List)department.eGet(departmentEmployees)).add(employee1);<br />
((List)department.eGet(departmentEmployees)).add(employee2);<br />
<br />
</pre>
<img src ="http://www.blogjava.net/sunxiaobo/aggbug/126872.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/sunxiaobo/" target="_blank">Xiaobo Sun</a> 2007-06-28 17:25 <a href="http://www.blogjava.net/sunxiaobo/archive/2007/06/28/126872.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>