zoukankan      html  css  js  c++  java
  • EMF的一些总结(1)——关于Packages and Factories

    Packages and Factories
    package和factory类帮助你访问模型的metadata,或者创建模型的实例。
    通过package可以轻松的获得模型的EClass对象,如:

    EClass purchaseOrderClass = epo2Package.getPurchaseORder();
    例外还有一种方法也可以通过package类对象获得model的EClass对象,如:
    EClass purchaseOrderClass =
      (EClass)epo2Package.getEClassifier(
    "PurchaseOrder");
    可以通过类似的方法访问模型的属性、引用还有其他更多的信息。
    tip: EEnum是EDataType的子类
    获得package对象的方法:
    1.通过加载外部.ecore文件,从加载的Resource对象中获取,如:
    ResourceSet resourceSet = new ResourceSetImpl();
    URI fileURI 
    = URI.createURI("/ExtendedPO2.ecore");
    Resource resource 
    = resourceSet.getResource(fileURI, true);
    EPackage epo2Package 
    = (EPackage)resource.getContents().get(0);
    2.通过package registry来访问,package registry提供了namespace URIs到EPackage的映射关系。如果是插件方式的开发,通过定义扩展点可以在插件加载的时候把package对象注册到registry中,如:
    <extension point="org.eclipse.emf.ecore.generated_package">
      
    <package
         uri 
    = "http:///com/example/epo2.ecore"
         
    class = "com.example.epo2.EPO2Package" />
    </extension>
    如果不是插件开发方式,可以功过构造函数来将package注册到Registry实例中,如:
    protected EPackageImpl(String packageURI, EFactory factory) {
      
    super();
      Registry.INSTANCE.put(packageURI, 
    this);
      
    }

    注册后可以功过下面代码获得package对象:
    EPackage.Registry.INSTANCE.getEPackage() 

  • 相关阅读:
    LETTers比赛第十二场解题报告
    LETTers练习赛第十场 第四题
    LETTers练习赛第十场 第二题
    LETTers练习赛第十场 第一题
    LETTers练习赛十一场解题报告
    RedHat Enterprise Linux 基本网络配置
    c# 连接MySQL中文乱码问题的解决方法
    [原]iBatis.Net(C#)系列一:简介及运行环境
    ArcGIS 9.3 sp1 下载更新
    [原]iBatis.Net(C#)系列二:SQL数据映射
  • 原文地址:https://www.cnblogs.com/youngerbaby/p/391949.html
Copyright © 2011-2022 走看看