亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 學院 > 開發設計 > 正文

EMF編程使用

2019-11-18 12:59:46
字體:
來源:轉載
供稿:網友

       看到eclipse3.2里面的GMF, 覺得比較有趣,底層還是用到了EMF. 花了兩天時間仔細研究了以下EMF,的確是個好東西.

EMF根據ecore建模(可以和schema的xsd相互轉換)生成強類型的EMF代碼. 這個強類型更強的地方是可以取得meta信息,從而可以用于校驗和界面輔助信息的生成.類似于動態bean,屬性也可以根據名稱動態取得.

以前考慮過用xsd描述界面, 但是數據載體只能是xml, 即使利用apache的schema編譯工具生成強類型的類,后臺代碼也是xml. 不利于持久化. emf在代碼生成引擎比較智能,可以標記出用戶代碼和自動生成代碼.不會有生成覆蓋問題.

這里做個簡單示例:
1. Ecore:
可以新建Ecore, 建立好以后用GMF可視化編輯(Eclipse3.2RC2)
EMF編程使用(圖一)


2. 生成Model:
點擊my.ecore文件,菜單:File->New->Other->Eclipse Modeling Framework->EMF Model
3. 打開生成的my.genmodel, 選擇樹頂點的:Generate Model Code
生成的代碼里面會有一個編譯錯誤. 是中文編程的問題, 中文沒有大小寫(先天不足啊),結果性別這個成員變量和性別類名混淆,出錯.在錯誤代碼前面加上包全名即可.
4. 利用生成的代碼構建一個家庭,輸出xml并且校驗之:

Word-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee" twffan="done">EMF編程使用(圖二) import  java.io.IOException;
EMF編程使用(圖二) import  java.util.Iterator;
EMF編程使用(圖二)
EMF編程使用(圖二) import  org.eclipse.emf.common.util.Diagnostic;
EMF編程使用(圖二) import  org.eclipse.emf.common.util.URI;
EMF編程使用(圖二) import  org.eclipse.emf.ecore.EObject;
EMF編程使用(圖二) import  org.eclipse.emf.ecore.resource.Resource;
EMF編程使用(圖二) import  org.eclipse.emf.ecore.util.Diagnostician;
EMF編程使用(圖二) import  org.eclipse.emf.ecore.xmi.XMLResource;
EMF編程使用(圖二) import  org.eclipse.emf.ecore.xmi.impl.XMLResourceImpl;
EMF編程使用(圖二) import  org.steeven.family.FamilyFactory;
EMF編程使用(圖二) import  org.steeven.family.人物;
EMF編程使用(圖二) import  org.steeven.family.家庭;
EMF編程使用(圖二) import  org.steeven.family.性別;
EMF編程使用(圖二)
EMF編程使用(圖三)EMF編程使用(圖四) public   class  TestMy  EMF編程使用(圖五) {
EMF編程使用(圖六)
EMF編程使用(圖七)EMF編程使用(圖八)     public   static   void  main(String[] args)  throws  IOException  EMF編程使用(圖五) {
EMF編程使用(圖六)        testFamily();
EMF編程使用(圖九)    }
EMF編程使用(圖六)
EMF編程使用(圖七) EMF編程使用(圖八)     PRivate   static   void  testFamily()  throws  IOException  EMF編程使用(圖五) {
EMF編程使用(圖六)        家庭 family  =  FamilyFactory.eINSTANCE.create家庭();
EMF編程使用(圖六)        family.setTitle( " steeven家 " );
EMF編程使用(圖六)        family.set老公(FamilyFactory.eINSTANCE.create人物());
EMF編程使用(圖六)        family.get老公().set姓名( " steeven " );
EMF編程使用(圖六)        family.set老婆(FamilyFactory.eINSTANCE.create人物());
EMF編程使用(圖六)        family.get老婆().set姓名( " stella " );
EMF編程使用(圖六)        family.get老婆().set性別(性別.女_LITERAL);
EMF編程使用(圖六)        人物 sophie  =  FamilyFactory.eINSTANCE.create人物();
EMF編程使用(圖六)        sophie.set姓名( " sophie " );
EMF編程使用(圖六)        sophie.set性別(性別.女_LITERAL);
EMF編程使用(圖六)        family.get兔崽子().add(sophie);
EMF編程使用(圖六)        dump(family);
EMF編程使用(圖六)        validate(family);
EMF編程使用(圖九)    }
EMF編程使用(圖六)
EMF編程使用(圖七) EMF編程使用(圖八)     private   static   void  validate(EObject family)  EMF編程使用(圖五) {
EMF編程使用(圖六)        Diagnostic diagnostic  =  Diagnostician.INSTANCE.validate(family);
EMF編程使用(圖六)        System.out.println(diagnostic);
EMF編程使用(圖七)EMF編程使用(圖八)         for  (Iterator it  =  diagnostic.getChildren().iterator(); it.hasNext();)  EMF編程使用(圖五) {
EMF編程使用(圖六)            Diagnostic diag  =  (Diagnostic) it.next();
EMF編程使用(圖六)            System.out.println(diag.getMessage());
EMF編程使用(圖九)        }
EMF編程使用(圖九)    }
EMF編程使用(圖六)
EMF編程使用(圖七) EMF編程使用(圖八)     private   static  Resource dump(EObjectEMF編程使用(圖五) objs)  throws  IOException  EMF編程使用(圖五) {
EMF編程使用(圖六)         //  ResourceSet rs = new ResourceSetImpl();
EMF編程使用(圖六)         //  rs.getResourceFactoryRegistry().getExtensionToFactoryMap().put(
EMF編程使用(圖六)         //  Resource.Factory.Registry.DEFAULT_EXTENSION,
EMF編程使用(圖六)         //  new XMIResourceFactoryImpl());
EMF編程使用(圖六)         //  Resource resource = rs.createResource(URI
EMF編程使用(圖六)         //  .createFileURI("c://temp//test.xml"));
EMF編程使用(圖六)         XMLResource resource  =   new  XMLResourceImpl(URI
EMF編程使用(圖六)                .createFileURI( " c://temp//test.xml " ));
EMF編程使用(圖六)        resource.setEncoding( " GBK " );
EMF編程使用(圖六)         for  (EObject obj : objs)
EMF編程使用(圖六)            resource.getContents().add(obj);  //  目前版本不加入resource驗證會報singling異常
EMF編程使用(圖六)         resource.save(System.out,  null );
EMF編程使用(圖六)         return  resource;
EMF編程使用(圖九)    }
EMF編程使用(圖十)}
EMF編程使用(圖二)



發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
在线看福利67194| 成人综合国产精品| 国产精品成人播放| 亚洲国产精品成人av| 欧美视频免费在线| 色综合视频一区中文字幕| 午夜精品免费视频| 欧美大片网站在线观看| 国产亚洲精品美女久久久| 亚洲精品国产精品国产自| 国产亚洲精品久久| 狠狠色狠狠色综合日日小说| 中文字幕精品一区久久久久| 久久精品99久久久久久久久| 国产精品午夜国产小视频| 亚洲国产精品视频在线观看| 国产欧美日韩亚洲精品| 亚洲国产精品嫩草影院久久| 亚洲18私人小影院| 久久精品国产欧美亚洲人人爽| 国产成人av网址| 欧美老女人bb| 97在线看福利| 国产精品亚洲一区二区三区| 97福利一区二区| 国产欧美一区二区白浆黑人| 亚洲电影在线看| 欧美性xxxxxxxxx| 中文字幕欧美精品在线| 日本一本a高清免费不卡| 九九综合九九综合| 一区国产精品视频| 亚洲欧美激情视频| 欧美另类99xxxxx| 久久久久久久久久婷婷| 久久久久久久网站| 成人激情在线观看| 另类美女黄大片| 亚洲欧美国产va在线影院| 欧美国产高跟鞋裸体秀xxxhd| www.xxxx精品| 色偷偷88888欧美精品久久久| 亚洲国产精品悠悠久久琪琪| 青草青草久热精品视频在线观看| 国产一区二区免费| 成人444kkkk在线观看| 97色在线视频观看| 97**国产露脸精品国产| 久久久亚洲网站| 国产精品第二页| 欧美日韩免费看| 午夜精品久久久久久99热| 国产中文字幕亚洲| 日韩av片永久免费网站| 欧美激情网友自拍| 欧美肥老太性生活视频| 欧美高清自拍一区| 色悠悠久久久久| 国产精品自拍偷拍| 欧美性猛交视频| 欧美中文字幕视频| 欧美孕妇毛茸茸xxxx| 91国产高清在线| 丁香五六月婷婷久久激情| 国产成人av在线播放| 奇米影视亚洲狠狠色| 久久国产精彩视频| 日韩欧美aaa| 欧美在线观看一区二区三区| 久热精品视频在线观看一区| 成人免费高清完整版在线观看| 亚洲免费高清视频| 亚洲最新视频在线| 久久久久亚洲精品| 国产精品扒开腿爽爽爽视频| 午夜精品免费视频| 日韩激情视频在线播放| 国产精品美乳在线观看| 亚洲日韩欧美视频| 成人激情视频免费在线| 日韩精品免费电影| 亚洲精品一区av在线播放| 久久久久中文字幕2018| 欧美天天综合色影久久精品| 久久99热精品这里久久精品| 日日狠狠久久偷偷四色综合免费| 中文字幕综合一区| 亚洲欧美国产精品久久久久久久| 亚洲人成免费电影| 日本国产一区二区三区| 亚洲乱亚洲乱妇无码| 亚洲国产精品热久久| 日韩欧美成人免费视频| 国产精品福利观看| 成人福利视频在线观看| 日本人成精品视频在线| 午夜精品一区二区三区在线视| 亚洲激情电影中文字幕| 欧美一级片久久久久久久| 另类色图亚洲色图| 亚洲激情视频在线播放| 久久久久久国产精品| 性金发美女69hd大尺寸| 一区二区三区黄色| 91精品国产高清自在线看超| 国产精品久久久| 久久伊人精品一区二区三区| 最近2019年好看中文字幕视频| 欧美一级淫片videoshd| 日韩欧美在线视频观看| 18性欧美xxxⅹ性满足| 欧美亚洲第一区| 国产成人精品电影| 亚洲精品日产aⅴ| 欧美裸体xxxx| 欧美激情中文字幕乱码免费| 欧美尺度大的性做爰视频| 成人av电影天堂| 色婷婷av一区二区三区在线观看| 国产原创欧美精品| 性欧美xxxx交| 国产精品极品在线| 亚洲国产免费av| 日日狠狠久久偷偷四色综合免费| 亚洲国产成人爱av在线播放| 精品国产一区二区三区在线观看| 久久久精品中文字幕| 欧美成人免费在线视频| 国产精品亚洲综合天堂夜夜| 欧美国产欧美亚洲国产日韩mv天天看完整| 日韩免费看的电影电视剧大全| 亚洲a级在线播放观看| 国产精品天天狠天天看| 久久久久久亚洲| 91色在线视频| 亚洲精品美女免费| 欧美在线观看日本一区| 亚洲sss综合天堂久久| 亚洲精品在线观看www| 国产精品69久久久久| 色www亚洲国产张柏芝| 日韩精品中文字幕在线| 日本成人在线视频网址| 亚洲国产高清高潮精品美女| 国产精品视频一区二区高潮| 国产一区二区香蕉| 亚洲色图偷窥自拍| 91av在线免费观看视频| 亚洲欧美在线第一页| 日韩精品中文在线观看| 色www亚洲国产张柏芝| 久久在线观看视频| 亚洲高清色综合| 97成人超碰免| 久久免费视频这里只有精品| 91免费看视频.| 91久久久久久久一区二区| 91精品久久久久久| 久久久久国色av免费观看性色| 国产精品久久久久久久一区探花| 97精品国产97久久久久久免费| 欧美国产视频一区二区| 国产精品久久久久久久久久99| 欧美成人国产va精品日本一级|