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.
Corona HowTo: Generate the Corona ContextContainer Model
Revision as of 09:56, 9 January 2007 by Dennis.oflynn.compuware.com (Talk | contribs)
Eclipse Home | Wiki Home | Development | How To... |
EMF/SDO model generation on the basis of model schema
Assumption: used eclipse platform is extended by emf-sdo-xsd sdk.
- Create EMF project for generic model
- open New Project Wizard (File->New->Project)
- select EMF Project and Next>
- define Project Name e.g. org.eclipse.corona.model.container and select Next>
- select XML Schema as a model importer and Next>
- browse file system to load model schema (context-container-xxx.xsd) and select Next>
- check if root package name is org.eclipse.corona.model.container and...
- file name is container.ecore
- select Finish
- EMF project including generic model is created.
- Create EMF project for model extending generic model
- open New Project Wizard (File->New->Project)
- select EMF Project and Next>
- define Project Name e.g. org.eclipse.corona.model.container.project and select Next>
- select XML Schema as a model importer and Next>
- browse file system to load model schema (project-context-container-xxx.xsd) and select Next>
- as the root package select org.eclipse.corona.model.container.project
- browse for referenced generator model and select genmodel file (e.g. org.eclipse.corona.model.container/model/context-container-xxx.genmodel)
- confirm referenced generator model selection (using checkbox)
- select Finish
- EMF project including model extending the generic model is created.
- SDO model code generation
- from the model root context menu (right mouse button) select Set SDO Defaults
- save model changes
- from the model root context menu select Generate Model Code to generate SDO model sources
- to generate editor for SDO model select from mentioned context menu first Generate Edit Code, then Generate Editor Code
- 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
- Repeat these steps for both generic and specialized model.
- Create data graph for generated model
- select project containing specialized model code
- run selected project as eclipse application (remove ecf plugins from used run configuration)
- In newly opened eclipse workbench:
- open New Project Wizard (File->New->Project)
- select General->Project and Next>
- define Project Name e.g. org.eclipse.corona.model.container.graph and select Finish
- open context menu for newly created project and select New->Other
- select Data Graph Model from Example EMF Model Creation Wizards and Next->
- if needed change suggested data graph file name and select Next->
- select as Model URI: http://www.eclipse.org/corona/model/container/project and as Model Object: ProjectContextContainer
- select Finish
- Data graph representing specialized model is created.
- Define sample project context container model using newly created data graph
- open data graph with Data Graph Editor
- expand data graph and select Project Context Container
- using properties view you can define the following: name, container uri, container type, container description
- To define nested model elements (e.g. repositories):
- open context menu for Project Context Container and select New Child->Repositories Repositories
- open context menu for Repositories and select New Child->Repository Repository
- select Repository node and define Repository properties using properties view
- After defining sample project context container model:
- save data graph
- 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:
- To load Xml into Datagraph: SDOUtil.loadDataGraph… api has to be used. (described on corona-dev)
- Xml is an example of serialized project context container model.
<?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>
- Create editor for generated model
- select project containing specialized model editor code
- run selected project as eclipse application (remove ecf plugins from used run configuration)
- In newly opened eclipse workbench:
- open New Project Wizard (File->New->Project)
- select General->Project and Next>
- define Project Name e.g. org.eclipse.corona.model.container.editor and select Finish
- open context menu for newly created project and select New->Other
- select Project Model from Example EMF Model Creation Wizards and Next->
- if needed change suggested project file name and select Next->
- select Model Object: Context Container
- select Finish
- Define sample project context container model using newly created editor
- open model with Project Model Editor
- expand model and select Context Container
- using properties view you can define the following: name, container uri, container type, container description
- To define nested model elements (e.g. repositories):
- open context menu for Context Container and select New Child->Repositories
- open context menu for Repositories and select New Child->Repository
- select Repository node and define Repository properties using properties view
- After defining sample project context container model:
- save project model
- open saved project model with Text Editor (from context menu select Open with->Text Editor)
- To load such project model the following generated api has to be used:
- ProjectXMLProcessor xmlProcessor = new ProjectXMLProcessor();
- Resource resource = xmlProcessor.load(inputStream, options);
- 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>