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);
}
}