Notice: This Wiki is now read only and edits are no longer possible. Please see: https://gitlab.eclipse.org/eclipsefdn/helpdesk/-/wikis/Wiki-shutdown-plan for the plan.
STEM Model Generator/EAnnotations
STEM Model Generator EAnnotation info coming soon.
Contents
Ecore EAnnotations
To generate code complying with the STEM API, additional information must be passed to the code generator that is out-of-scope to EMF's Ecore and GenModel schemas. To get around this, Ecore EAnnotations are used to pass information to the code generator. In order to use an Ecore/GenModel that wasn't generated automatically, you need to add these EAnnotations by hand.
Adding an EAnnotation to an EPackage/EClass/EAttribute
It's easy to add an EAnnotation to an existing Ecore model instance using the Ecore Editor.
- Open your project's .ecore file in the EMF Ecore Editor
- Right click on the object you wish to EAnnotate. Select New Child, EAnnotation.
- Right click on the new EAnnotation and select Show Properties View
- In the Properties view, enter a value for the Source
- Note: This is generally a URI. See below for appropriate EAnnotation Source values for use with STEM's Model Generator
- Right click on the new EAnnotation. Select New Child, Details Entry.
- Select the new EAnnotation Detail Entry
- In the Properties view, enter values for Key and Value
- Note: See below for values to use with STEM's Model Generator
- Repeat this step for additional Detail Entries
- Save the Ecore file
Annotating a STEM Computational Model Ecore
- EPackage
- EClass (all)
- EAttribute (all)
- EClass extending IntegrationDecorator (Computational Models)
- EAttribute contained by EClass extending IntegrationDecorator (Model Parameters)
- EAttribute contained by EClass extending IntegrationLabelValue (Compartments)
EAnnotations used in STEM's Model Generator
STEM Model Generator Marker EAnnotation
Description | Generator Marker Annotation | |||
Source | http:///org/eclipse/stem/modelgen/generated | |||
Details | Key | Example Value | Description | |
version | 1.0 | Model Generator version to use in codegen |
Author Details EAnnotation
Description | Author Details Annotation. Similar to the STEM Dublin Core. | |||
Source | http:///org/eclipse/stem/modelgen/author | |||
Details | Key | Example Value | Description | |
tbd | tbd | tbd |
Model Adapters EAnnotation
Description | STEM Adapter class references. Used to define inheritance hierarchy of generated classes. | |||
Source | http:///org/eclipse/stem/modelgen/model/adapters | |||
Details | Key | Example Value | Description | |
propertyEditorClass | MyDiseaseModel-PropertyEditor | The class name of property editor for the computational model | ||
propertyEditor-SuperClass | StandardDisease-ModelPropertyEditor | The parent class name of property editor for the computational model |
Label and LabelValue EAnnotations
Description | Model label EAnnotation. Defines the IntegrationLabels returned by the computational model's create*Label(...) method. | |||
Source | http:///org/eclipse/stem/modelgen/model/label | |||
Details | Key | Example Value | Description | |
* | MyDiseaseModelLabel | The class name of the label created by this computational model |
Description | Model label value EAnnotation. Defines the IntegrationLabelValues (which stores compartments) returned by the computational model's create*LabelValue(...) method. | |||
Source | http:///org/eclipse/stem/modelgen/model/labelvalue | |||
Details | Key | Example Value | Description | |
* | MyDiseaseModelLabelValue | The LabelValue class name created by this computational model |
Compartment Type EAnnotation
Description | Sets the compartment type in a IntegrationLabelValue EClass's EAttribute. | |||
Source | http:///org/eclipse/stem/modelgen/compartment/type | |||
Details | Key | Example Value | Description | |
type | Standard | The compartment type. Valid values are Standard, Incidence, and Deaths |
Model Parameter UI Messages EAnnotation
Description | Defines UI strings applied to the EAttributes in the computational model's property editor. | |||
Source | http:///org/eclipse/stem/modelgen/modelparam/messages | |||
Details | Key | Example Value | Description | |
name | Transmission Rate | Display name | ||
tooltip | Transmission Rate is a value for doing something | Extended help message describing the purpose of the EAttribute/parameter | ||
unit | ft/s | The expected units for the parameter | ||
invalid | Transmission Rate is invalid | Message to display if the value does not satisfy the required constraints | ||
missing | Transmission Rate is required | Message to display if a required value is missing |
Model Parameter Constraints EAnnotation
Description | Defines validation constraints applied to values for the EAttribute | |||
Source | http:///org/eclipse/stem/modelgen/modelparam/constraints | |||
Details | Key | Example Value | Description | |
minValue | 0.0 | Minimum numeric value allowed | ||
maxValue | 1.0 | Maximum numeric value allowed |
GenModel Settings
To take advantage of the STEM Model Generator's custom templates, you must enable Dynamic Templates in your project's GenModel.
- Open your project's .genmodel in the EMF Generator editor
- Select the top level item (the GenModel)
- Right click and select Show Properties View
- Apply the following settings exactly as specified. When finished, Save the GenModel.
Property Value Compliance Level 6.0 Runtime Version 2.7 Suppress Notification true Public Constructors true Dynamic Templates true Force Overwrite true Templates Directory platform:/plugin/org.eclipse.stem.model.codegen/templates Template Plug-in Variables STEM_CODEGEN=org.eclipse.stem.model.codegen Update Classpath true
Running the Code Generator
After you finish editing the Ecore and GenModel, you can now run the STEM Model Generator directly. The STEM Model Generator acts as an EMF Generator Adapter, therefore it runs automatically when you execute the EMF Code Generator.
- Open your project's .genmodel in the EMF Generator editor
- Select the top-level item (the GenModel)
- Right click and select a Generate option (Generate All, for example)
- Wait while the EMF Code Generator + STEM Model Generator run