package jetbrains.mps.lang.generator.findUsages; /*Generated by MPS */ import jetbrains.mps.ide.findusages.findalgorithm.finders.GeneratedFinder; import org.jetbrains.mps.openapi.model.SNode; import org.jetbrains.mps.openapi.language.SAbstractConcept; import jetbrains.mps.smodel.adapter.structure.MetaAdapterFactory; import org.jetbrains.mps.openapi.module.SearchScope; import java.util.List; import org.jetbrains.mps.openapi.util.ProgressMonitor; import org.jetbrains.mps.openapi.model.SModel; import jetbrains.mps.lang.smodel.generator.smodelAdapter.SNodeOperations; import jetbrains.mps.lang.smodel.generator.smodelAdapter.SModelOperations; import org.jetbrains.mps.openapi.module.SModule; import org.jetbrains.mps.openapi.persistence.PersistenceFacade; import jetbrains.mps.baseLanguage.closures.runtime._FunctionTypes; import jetbrains.mps.internal.collections.runtime.ListSequence; import jetbrains.mps.internal.collections.runtime.IWhereFilter; import jetbrains.mps.lang.smodel.generator.smodelAdapter.SPropertyOperations; import jetbrains.mps.lang.smodel.generator.smodelAdapter.SLinkOperations; import org.jetbrains.annotations.Nullable; import org.jetbrains.mps.openapi.model.SNodeReference; public class FindInPriorityRules_Finder extends GeneratedFinder { public FindInPriorityRules_Finder() { } @Override public boolean isUsedByDefault(SNode node) { return true; } @Override public String getDescription() { return "Find MC in Priority Rules"; } @Override public String getLongDescription() { return "Discover uses of MC in priority rules by generator modules from scope"; } @Override public SAbstractConcept getSConcept() { return MetaAdapterFactory.getConcept(0xb401a68083254110L, 0x8fd384331ff25befL, 0xff0bea0475L, "jetbrains.mps.lang.generator.structure.MappingConfiguration"); } @Override protected void doFind(SNode node, SearchScope scope, final List<SNode> _results, ProgressMonitor monitor) { monitor.start(getDescription(), 0); try { SModel modelOfSelectedMC = SNodeOperations.getModel(node); final SNode moduleOfSelectedMC = SNodeOperations.as(SModelOperations.getModuleStub(modelOfSelectedMC), MetaAdapterFactory.getConcept(0x86ef829012bb4ca7L, 0x947f093788f263a9L, 0x5869770da61dfe21L, "jetbrains.mps.lang.project.structure.Generator")); SModule projectStructureModule = SNodeOperations.getModel(moduleOfSelectedMC).getModule(); final String selectedModelReference = PersistenceFacade.getInstance().asString(modelOfSelectedMC.getReference()); final String selectedNodeId = node.getNodeId().toString(); _FunctionTypes._void_P1_E0<? super SNode> addResultFunc = new _FunctionTypes._void_P1_E0<SNode>() { public void invoke(SNode it) { ListSequence.fromList(_results).addElement(it); } }; for (SModel projectStructureModel : projectStructureModule.getModels()) { for (SNode gn : SModelOperations.nodes(projectStructureModel, MetaAdapterFactory.getConcept(0x86ef829012bb4ca7L, 0x947f093788f263a9L, 0x5869770da61dfe21L, "jetbrains.mps.lang.project.structure.Generator"))) { ListSequence.fromList(SNodeOperations.getNodeDescendants(gn, MetaAdapterFactory.getConcept(0x86ef829012bb4ca7L, 0x947f093788f263a9L, 0x25c3f2845954f70fL, "jetbrains.mps.lang.project.structure.MappingConfigRefAllGlobal"), false, new SAbstractConcept[]{})).visitAll(addResultFunc); for (SNode mcer : ListSequence.fromList(SNodeOperations.getNodeDescendants(gn, MetaAdapterFactory.getConcept(0x86ef829012bb4ca7L, 0x947f093788f263a9L, 0x25c3f284595727e1L, "jetbrains.mps.lang.project.structure.MappingConfigExternalRef"), false, new SAbstractConcept[]{})).where(new IWhereFilter<SNode>() { public boolean accept(SNode it) { return eq_k8ktns_a0a0a0a0a0b0a0g0b0g(SPropertyOperations.getString(SLinkOperations.getTarget(it, MetaAdapterFactory.getContainmentLink(0x86ef829012bb4ca7L, 0x947f093788f263a9L, 0x25c3f284595727e1L, 0x25c3f284595727e3L, "generator")), MetaAdapterFactory.getProperty(0x86ef829012bb4ca7L, 0x947f093788f263a9L, 0x19bfb4173fb5210cL, 0x19bfb4173fb5210dL, "uuid")), SPropertyOperations.getString(moduleOfSelectedMC, MetaAdapterFactory.getProperty(0x86ef829012bb4ca7L, 0x947f093788f263a9L, 0x5869770da61dfe1eL, 0x5869770da61dfe22L, "uuid"))); } })) { ListSequence.fromList(SNodeOperations.getNodeDescendants(mcer, MetaAdapterFactory.getConcept(0x86ef829012bb4ca7L, 0x947f093788f263a9L, 0x25c3f284595702d4L, "jetbrains.mps.lang.project.structure.MappingConfigRefAllLocal"), false, new SAbstractConcept[]{})).visitAll(addResultFunc); ListSequence.fromList(SNodeOperations.getNodeDescendants(mcer, MetaAdapterFactory.getConcept(0x86ef829012bb4ca7L, 0x947f093788f263a9L, 0x25c3f28459572777L, "jetbrains.mps.lang.project.structure.MappingConfigNormalRef"), false, new SAbstractConcept[]{})).where(new IWhereFilter<SNode>() { public boolean accept(SNode it) { return SPropertyOperations.hasValue(it, MetaAdapterFactory.getProperty(0x86ef829012bb4ca7L, 0x947f093788f263a9L, 0x25c3f28459572777L, 0x25c3f28459572778L, "modelUID"), "*") || (eq_k8ktns_a0a0a0a0a0a0a0b0b0a0g0b0g_0(SPropertyOperations.getString(it, MetaAdapterFactory.getProperty(0x86ef829012bb4ca7L, 0x947f093788f263a9L, 0x25c3f28459572777L, 0x25c3f28459572778L, "modelUID")), selectedModelReference) && eq_k8ktns_a0a0a0a0a0a0a0b0b0a0g0b0g(SPropertyOperations.getString(it, MetaAdapterFactory.getProperty(0x86ef829012bb4ca7L, 0x947f093788f263a9L, 0x25c3f28459572777L, 0x25c3f28459572779L, "nodeID")), selectedNodeId)); } }).visitAll(addResultFunc); } } } } finally { monitor.done(); } } @Nullable @Override public SNodeReference getDeclarationNode() { return buildNodePointer(FindUsagesDescriptor.DECLARING_MODEL, "7868642031296064248"); } private static boolean eq_k8ktns_a0a0a0a0a0a0a0b0b0a0g0b0g(Object a, Object b) { return (a != null ? a.equals(b) : a == b); } private static boolean eq_k8ktns_a0a0a0a0a0a0a0b0b0a0g0b0g_0(Object a, Object b) { return (a != null ? a.equals(b) : a == b); } private static boolean eq_k8ktns_a0a0a0a0a0b0a0g0b0g(Object a, Object b) { return (a != null ? a.equals(b) : a == b); } }