# EMF, ECore & Meta Model

EMF (Eclipse Modeling Framework) requires two differents operations in order to obtain "ready to use" Java based Ecore models :

- Ecore Modeling
- Code Generation

These two steps will be iterated as time as needed in order to refine Ecore model according to user requirements.

Ecore modeling is associated to .ecore files. ".ecore" files contains the user model description compliant with EMOF metamodel.

Code Generation is associated to .genmodel files. ".genmodel" files contains the configuration needed to drive model code generation.

As a result of code generation, we obtain one to three different plugins :

1. Model
2. Edit
3. Editor

These three differents parts comes from the fact model based development is strongly linked to separation of concerns. This means that each part contains separated functionalities, each part respectively being dependant of the precedent one ([3. Editor] depends on [2. Edit] depending on [1. Model]).

# EMF Ecore Based Search

Given the fact Ecore models are all compliant with EMOF metamodel, EMOF metamodel based computations are subsequently applicable to all Ecore models.

This means that basics operations such as visiting, querying, comparing or refactoring based on EMOF metamodel still remain valid on Ecore models.

EMF Search is a actually a metamodel beased search valid on any Ecore model.

Another cool aspect of the situation is that EMOF based search can be specialized for a any user defined Ecore model. This means that we can actually specialize the search operation according to a particular Ecore model.

# EMF Search Integration Overview

EMF Search is an integration to Eclipse Platform Search framework for modeling context.

This Search integration contributes either a Search Page tab and a Search Result View page. This is done by extending org.eclipse.search.searchPages & org.eclipse.search.searchResultViewPages.

# EMF Search Generation Specifics

EMF Search code generation takes advantage of the Ecore generation framework. Search code generation is triggered everytime a model, edit, editor are generated.

This is done by contributing a Search GenAdapter to org.eclipse.emf.codegen.ecore.generatorAdapters extension point. as a result EMF Searh generation can be considered as a natural addition to user model.