Skip to main content

Notice: this Wiki will be going read only early in 2024 and edits will no longer be possible. Please see: https://gitlab.eclipse.org/eclipsefdn/helpdesk/-/wikis/Wiki-shutdown-plan for the plan.

Jump to: navigation, search

Corona HowTo: Generate the Corona ContextContainer Model

Revision as of 17:27, 12 December 2006 by Glenn.everitt.compuware.com (Talk | contribs)

(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)

EMF/SDO model generation on the basis of model schema

Assumption: used eclipse platform is extended by emf-sdo-xsd sdk.

  1. Create EMF project for generic model
    1. open New Project Wizard (File->New->Project)
    2. select EMF Project and Next>
    3. define Project Name e.g. org.eclipse.corona.model.container and select Next>
    4. select XML Schema as a model importer and Next>
    5. browse file system to load model schema (context-container-xxx.xsd) and select Next>
    6. check if root package name is org.eclipse.corona.model.container and...
    7. file name is container.ecore
    8. select Finish
    9. EMF project including generic model is created.
  2. Create EMF project for model extending generic model
    1. open New Project Wizard (File->New->Project)
    2. select EMF Project and Next>
    3. define Project Name e.g. org.eclipse.corona.model.container.project and select Next>
    4. select XML Schema as a model importer and Next>
    5. browse file system to load model schema (project-context-container-xxx.xsd) and select Next>
    6. as the root package select org.eclipse.corona.model.container.project
    7. browse for referenced generator model and select genmodel file (e.g. org.eclipse.corona.model.container/model/context-container-xxx.genmodel)
    8. confirm referenced generator model selection (using checkbox)
    9. select Finish
    10. EMF project including model extending the generic model is created.
  3. SDO model code generation
    1. from the model root context menu (right mouse button) select Set SDO Defaults
    2. save model changes
    3. from the model root context menu select Generate Model Code to generate SDO model sources
    4. to generate editor for SDO model select from mentioned context menu first Generate Edit Code, then Generate Editor Code
    5. to generate default test cases for generated model select from the same menu option Generate Test Code instead of selecting separately each code generation option you can select Generate All
    6. Repeat these steps for both generic and specialized model.
  4. Create data graph for generated model
    1. select project containing specialized model code
    2. run selected project as eclipse application (remove ecf plugins from used run configuration)
    3. In newly opened eclipse workbench:
      1. open New Project Wizard (File->New->Project)
      2. select General->Project and Next>
      3. define Project Name e.g. org.eclipse.corona.model.container.graph and select Finish
      4. open context menu for newly created project and select New->Other
      5. select Data Graph Model from Example EMF Model Creation Wizards and Next->
      6. if needed change suggested data graph file name and select Next->
      7. select as Model URI: http://www.eclipse.org/corona/model/container/project and as Model Object: ProjectContextContainer
      8. select Finish
    4. Data graph representing specialized model is created.
  5. Define sample project context container model using newly created data graph
    1. open data graph with Data Graph Editor
    2. expand data graph and select Project Context Container
    3. using properties view you can define the following: name, container uri, container type, container description
  6. To define nested model elements (e.g. repositories):
    1. open context menu for Project Context Container and select New Child->Repositories Repositories
    2. open context menu for Repositories and select New Child->Repository Repository
    3. select Repository node and define Repository properties using properties view

After defining sample project context container model:

    1. save data graph
    2. open saved data graph with Text Editor (from context menu select Open with->Text Editor)

Defined data graph form should be similar to the following one:

<?xml version="1.0" encoding="UTF-8"?>
<sdo:datagraph xmlns:project="http://www.eclipse.org/corona/model/container/project"
  xmlns:sdo="commonj.sdo">
  <changeSummary xmlns=""/>
  <project:project-context-container name="Sample Eclipse Project">
   <container-uri> http://www.eclipse.org/corona/container/sampleEclipseProject
   </container-uri>  
     <container-type>http://www.eclipse.org/corona/containerTypes/eclipseProject</container-type>
     <container-description>Sample eclipse project description</container-description>   
     <repositories>         
       <repository content-type="http://www.eclipse.org/corona/contentTypes/teamMemberRepository"
           name="Team Member Repository"   uri="http://www.eclipse.org/corona/repository/TeamMemberRepository">        
         <description>Team Member Repository description</description>
         <repository-configurations default-configuration-name="memebers_1">
           <repository-configuration name="members_1">
  	       <repository-connection-parameters access-type="http://www.eclipse.org/corona/accessTypes/xmlRepository"
                name="XML repository resource">
               <repository-connection-parameter name="fileURI" value="file:///model/data/teamMembers.xml"/>
               <resource-subset selection-criteria="//team/members"  type="http://www.eclipse.org/corona/resourceSubsetTypes/XPathResultSet"/> 
             </repository-connection-parameters>
           </repository-configuration>
         </repository-configurations>
       </repository>
     </repositories>
  </project:project-context-container>
</sdo:datagraph>
  • Such xml is an example of serialized project context container model.

To load it: SDOUtil.loadDataGraph… api has to be used. (described on corona-dev)

  1. Create editor for generated model
    1. select project containing specialized model editor code
    2. run selected project as eclipse application (remove ecf plugins from used run configuration)
    3. In newly opened eclipse workbench:
      1. open New Project Wizard (File->New->Project)
      2. select General->Project and Next>
      3. define Project Name e.g. org.eclipse.corona.model.container.editor and select Finish
      4. open context menu for newly created project and select New->Other
      5. select Project Model from Example EMF Model Creation Wizards and Next->
      6. if needed change suggested project file name and select Next->
      7. select Model Object: Context Container
      8. select Finish
  2. Define sample project context container model using newly created editor
    1. open model with Project Model Editor
    2. expand model and select Context Container
    3. using properties view you can define the following: name, container uri, container type, container description
  3. To define nested model elements (e.g. repositories):
    1. open context menu for Context Container and select New Child->Repositories
    2. open context menu for Repositories and select New Child->Repository
    3. select Repository node and define Repository properties using properties view
  4. After defining sample project context container model:
    1. save project model
    2. open saved project model with Text Editor (from context menu select Open with->Text Editor)
    3. Defined project model form should be similar to the following one:
		<?xml version="1.0" encoding="UTF-8"?>
<project:project-context-container xmlns:project="http://www.eclipse.org/corona/model/container/project" name="Project Model">
  	<container-uri>
         http://www.eclipse.org/corona/container/sampleEclipseProject
         </container-uri>
  	<container-type>
         http://www.eclipse.org/corona/containerTypes/eclipseProject
         </container-type>
  	<container-description>
         Project Model Description
         </container-description>
         
  	<repositories>
<repository content-type="http://www.eclipse.org/corona/contentTypes/teamMemberRepository" name="Team Member Repository" uri="http://www.eclipse.org/corona/repository/TeamMemberRepository">
      		<description>
         Team Member Repository description
         </description>
         
<repository-configurations default-configuration-name="members_1">
        
         <repository-configuration name="members_1">
<repository-connection-parameters access-type="http://www.eclipse.org/corona/accessTypes/xmlRepository" name="XML repository resource">
<repository-connection-parameter  name="fileURI" value="file:///model/data/teamMembers.xml"/>
<resource-subset selection-criteria="//team/members" type="http://www.eclipse.org/corona/resourceSubsetTypes/XPathResultSet"/>
          		      </repository-connection-parameters>
               </repository-configuration>
      		</repository-configurations>
    		</repository>
  	</repositories>
</project:project-context-container>
  • To load such project model the following generated api has to be used:

ProjectXMLProcessor xmlProcessor = new ProjectXMLProcessor(); Resource resource = xmlProcessor.load(inputStream, options);

Back to the top