package jetbrains.mps.lang.smodel.query.runtime; /*Generated by MPS */ import org.jetbrains.mps.openapi.model.SNode; import org.jetbrains.mps.openapi.module.SearchScope; import jetbrains.mps.internal.collections.runtime.Sequence; import jetbrains.mps.internal.collections.runtime.ITranslator2; import org.jetbrains.mps.openapi.model.SModel; import jetbrains.mps.lang.smodel.generator.smodelAdapter.SModelOperations; import org.jetbrains.mps.openapi.model.SReference; import jetbrains.mps.lang.smodel.generator.smodelAdapter.SNodeOperations; import org.jetbrains.mps.openapi.module.SModule; import java.util.Collection; import java.util.Set; import jetbrains.mps.findUsages.FindUsagesManager; import java.util.Collections; import jetbrains.mps.progress.EmptyProgressMonitor; import jetbrains.mps.util.annotation.ToRemove; import org.jetbrains.mps.openapi.language.SAbstractConcept; import jetbrains.mps.baseLanguage.closures.runtime._FunctionTypes; import jetbrains.mps.ide.findusages.model.SearchResults; import org.jetbrains.mps.openapi.model.SNodeReference; import org.jetbrains.mps.openapi.module.SRepository; import jetbrains.mps.internal.collections.runtime.IWhereFilter; import jetbrains.mps.internal.collections.runtime.IVisitor; import jetbrains.mps.ide.findusages.model.SearchResult; import org.jetbrains.mps.openapi.model.SModelReference; import org.jetbrains.mps.openapi.module.SModuleReference; import org.jetbrains.annotations.Nullable; import jetbrains.mps.project.EditableFilteringScope; import jetbrains.mps.ide.findusages.model.scopes.ModelsScope; import jetbrains.mps.ide.findusages.model.scopes.ModulesScope; import java.util.Iterator; import jetbrains.mps.project.Project; import jetbrains.mps.ide.findusages.model.scopes.ProjectScope; public class CommandUtil { public static Iterable<SNode> nodes(SearchScope scope) { return Sequence.fromIterable(models(scope)).translate(new ITranslator2<SModel, SNode>() { public Iterable<SNode> translate(SModel it) { return SModelOperations.nodes(it, null); } }); } public static Iterable<SReference> references(SearchScope scope) { return Sequence.fromIterable(nodes(scope)).translate(new ITranslator2<SNode, SReference>() { public Iterable<SReference> translate(SNode it) { return SNodeOperations.getReferences(it); } }); } public static Iterable<SModel> models(SearchScope scope) { return (Iterable<SModel>) scope.getModels(); } public static Iterable<SModule> modules(SearchScope scope) { return scope.getModules(); } public static Collection<SReference> usages(SearchScope scope, SNode node) { return (Set<SReference>) FindUsagesManager.getInstance().findUsages(scope, Collections.<SNode>singleton(node), new EmptyProgressMonitor()); } @Deprecated @ToRemove(version = 3.5) public static Collection<SNode> instances(SearchScope scope, SAbstractConcept concept) { return instances(scope, concept, false); } public static Collection<SNode> instances(SearchScope scope, SAbstractConcept concept, boolean exact) { return FindUsagesManager.getInstance().findInstances(scope, Collections.singleton(concept), exact, new EmptyProgressMonitor()); } public static _FunctionTypes._return_P0_E0<? extends SearchResults> nodesToResults(final Iterable<SNodeReference> nodes, final SRepository repository) { return new _FunctionTypes._return_P0_E0<SearchResults<SNode>>() { public SearchResults<SNode> invoke() { final SearchResults<SNode> res = new SearchResults<SNode>(); Sequence.fromIterable(nodes).where(new IWhereFilter<SNodeReference>() { public boolean accept(SNodeReference it) { return check_1pinza_a0a0a0a0b0a0a41(it, repository) != null; } }).visitAll(new IVisitor<SNodeReference>() { public void visit(SNodeReference it) { res.getSearchResults().add(new SearchResult<SNode>(check_1pinza_a0a0a0a0a0b0a0a41(it, repository), "usage")); } }); return res; } }; } public static _FunctionTypes._return_P0_E0<? extends SearchResults> modelsToResults(final Iterable<SModelReference> models, final SRepository repository) { return new _FunctionTypes._return_P0_E0<SearchResults<SModel>>() { public SearchResults<SModel> invoke() { final SearchResults<SModel> res = new SearchResults<SModel>(); Sequence.fromIterable(models).where(new IWhereFilter<SModelReference>() { public boolean accept(SModelReference it) { return check_1pinza_a0a0a0a0b0a0a61(it, repository) != null; } }).visitAll(new IVisitor<SModelReference>() { public void visit(SModelReference it) { res.getSearchResults().add(new SearchResult<SModel>(check_1pinza_a0a0a0a0a0b0a0a61(it, repository), "usage")); } }); return res; } }; } public static _FunctionTypes._return_P0_E0<? extends SearchResults> modulesToResults(final Iterable<SModuleReference> modules, final SRepository repository) { return new _FunctionTypes._return_P0_E0<SearchResults<SModule>>() { public SearchResults<SModule> invoke() { final SearchResults<SModule> res = new SearchResults<SModule>(); Sequence.fromIterable(modules).where(new IWhereFilter<SModuleReference>() { public boolean accept(SModuleReference it) { return check_1pinza_a0a0a0a0b0a0a81(it, repository) != null; } }).visitAll(new IVisitor<SModuleReference>() { public void visit(SModuleReference it) { res.getSearchResults().add(new SearchResult<SModule>(check_1pinza_a0a0a0a0a0b0a0a81(it, repository), "usage")); } }); return res; } }; } public static SNodeReference getNodeReference(SNode aNode) { return check_1pinza_a0a02(aNode); } public static SNodeReference getReferenceReference(SReference aReference) { return check_1pinza_a0a12(check_1pinza_a0a0v(aReference)); } public static SModelReference getModelReference(SModel aModel) { return check_1pinza_a0a22(aModel); } public static SModuleReference getModuleReference(SModule aModule) { return check_1pinza_a0a32(aModule); } public static SearchScope createConsoleScope(@Nullable final SearchScope baseScope, final boolean includeReadOnly, QueryExecutionContext context) { SearchScope scope = (baseScope == null ? context.getDefaultSearchScope() : baseScope); return (includeReadOnly ? scope : new EditableFilteringScope(scope)); } public static SearchScope createScope(SModel model) { return new ModelsScope(model); } public static SearchScope createScope(SModule module) { return new ModulesScope(module); } public static SearchScope createScope(Iterable modelsAndModules) { Iterator<Object> it = modelsAndModules.iterator(); if (!(it.hasNext())) { return new ModelsScope(); } return (it.next() instanceof SModule ? new ModulesScope(modelsAndModules) : new ModelsScope(modelsAndModules)); } public static SearchScope createScope(Project project) { return new ProjectScope(project); } public static SearchScope createScope(SearchScope searchScope) { return searchScope; } private static SNode check_1pinza_a0a0a0a0b0a0a41(SNodeReference checkedDotOperand, SRepository repository) { if (null != checkedDotOperand) { return checkedDotOperand.resolve(repository); } return null; } private static SNode check_1pinza_a0a0a0a0a0b0a0a41(SNodeReference checkedDotOperand, SRepository repository) { if (null != checkedDotOperand) { return checkedDotOperand.resolve(repository); } return null; } private static SModel check_1pinza_a0a0a0a0b0a0a61(SModelReference checkedDotOperand, SRepository repository) { if (null != checkedDotOperand) { return checkedDotOperand.resolve(repository); } return null; } private static SModel check_1pinza_a0a0a0a0a0b0a0a61(SModelReference checkedDotOperand, SRepository repository) { if (null != checkedDotOperand) { return checkedDotOperand.resolve(repository); } return null; } private static SModule check_1pinza_a0a0a0a0b0a0a81(SModuleReference checkedDotOperand, SRepository repository) { if (null != checkedDotOperand) { return checkedDotOperand.resolve(repository); } return null; } private static SModule check_1pinza_a0a0a0a0a0b0a0a81(SModuleReference checkedDotOperand, SRepository repository) { if (null != checkedDotOperand) { return checkedDotOperand.resolve(repository); } return null; } private static SNodeReference check_1pinza_a0a02(SNode checkedDotOperand) { if (null != checkedDotOperand) { return checkedDotOperand.getReference(); } return null; } private static SNodeReference check_1pinza_a0a12(SNode checkedDotOperand) { if (null != checkedDotOperand) { return checkedDotOperand.getReference(); } return null; } private static SNode check_1pinza_a0a0v(SReference checkedDotOperand) { if (null != checkedDotOperand) { return checkedDotOperand.getSourceNode(); } return null; } private static SModelReference check_1pinza_a0a22(SModel checkedDotOperand) { if (null != checkedDotOperand) { return checkedDotOperand.getReference(); } return null; } private static SModuleReference check_1pinza_a0a32(SModule checkedDotOperand) { if (null != checkedDotOperand) { return checkedDotOperand.getModuleReference(); } return null; } }