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.
Difference between revisions of "EMF Search---Developer Guide"
(→Ecore Query & Helper) |
(→Ecore Query & Helper) |
||
Line 71: | Line 71: | ||
EcoreTextualModelSearchQueryBuilderHelper.getInstance(). | EcoreTextualModelSearchQueryBuilderHelper.getInstance(). | ||
buildGlobalTextualModelSearchQuery( | buildGlobalTextualModelSearchQuery( | ||
− | + | ELEMENT_NAME_VALUATION_BEGINING_WITH_A, | |
scope, | scope, | ||
EcorePackage.eNS_URI | EcorePackage.eNS_URI |
Revision as of 11:40, 25 April 2008
Contents
Introduction
Developers have several levels/contexts/persitences configurations for which they want to use EMF Search.
One aspect is which modeling level they want their extension to address :
- meta modeling level
- Ecore meta-modeling (M3)
- UML2 meta-modeling or custom meta-models (M2)
- Model instance (M1)
Another aspect is where and how their meta models are stored :
- meta model perstistence layer type
- Eclipse Resources
- Local File System
- WWW distant resources (Close to be supported)
- DB persitence (Support planned)
Depending on these particular situations, EMF Search typical usages exist.
Search Scope & Visitors
EMF Search defines a Scope API contract with IModelSearchScope :
public interface IModelSearchScope<P, O> { List<P> getParticipants(); void addParticipant(P resource); void addParticipants(P[] resources); void removeParticipant(P resource); void removeParticipants(P[] resources); List<P> findPartcipant(Class<O> clazz); String getLabel(); }
- Eclipse Workspace resource
- Local File System
- Distant locations (Http URIs)
- EE repositories
Ecore Query & Helper
Ecore EMF Search comes with several helpers for query building & launching :
// // Non Case Sensitive Joker expression matching all text beginning with either 'a' or 'A' // private static final String ELEMENT_NAME_VALUATION_BEGINS_WITH_A = "A*"; IModelSearchScope scope = ModelSearchWorkspaceScopeFactory.getInstance(). createModelSearchWorkspaceScope( "org.eclipse.emf.search.ecoreSearchEngine" ); IModelSearchResult query = EcoreTextualModelSearchQueryBuilderHelper.getInstance(). buildGlobalTextualModelSearchQuery( ELEMENT_NAME_VALUATION_BEGINING_WITH_A, scope, EcorePackage.eNS_URI ); query.run(new NullProgressMonitor()); ISearchResult result = query.getModelSearchResult(); if (result instanceof IModelSearchResult) { // Help yourself with model result entry Collection<IModelResultEntry> reultEntries = ((IModelSearchResult)result).getResultsFlatenned(); if (reultEntries.getSource() instanceof EObject) { // Do whatever you want on this occurence } }