package jetbrains.mps.build.mps.runner.test.test4; /*Generated by MPS */ import jetbrains.mps.tool.environment.Environment; import jetbrains.mps.tool.environment.EnvironmentContainer; import jetbrains.mps.project.Project; import java.io.File; import java.util.List; import org.jetbrains.mps.openapi.model.SModel; import jetbrains.mps.smodel.ModelAccessHelper; import jetbrains.mps.util.Computable; import jetbrains.mps.internal.collections.runtime.IListSequence; import jetbrains.mps.internal.collections.runtime.ListSequence; import java.util.ArrayList; import jetbrains.mps.internal.collections.runtime.IWhereFilter; import org.jetbrains.mps.openapi.model.SNode; import jetbrains.mps.lang.smodel.generator.smodelAdapter.SModelOperations; import jetbrains.mps.smodel.adapter.structure.MetaAdapterFactory; import jetbrains.mps.lang.smodel.generator.smodelAdapter.SPropertyOperations; import jetbrains.mps.baseLanguage.closures.runtime.Wrappers; import jetbrains.mps.ide.ThreadUtils; import jetbrains.mps.baseLanguage.closures.runtime._FunctionTypes; import jetbrains.mps.lang.smodel.generator.smodelAdapter.SLinkOperations; import jetbrains.mps.internal.collections.runtime.Sequence; import jetbrains.mps.lang.smodel.generator.smodelAdapter.SNodeOperations; import org.jetbrains.mps.openapi.persistence.PersistenceFacade; import jetbrains.mps.smodel.SModelUtil_new; import org.jetbrains.mps.openapi.model.SNodeAccessUtil; public class MainClass { private static final String MPS_PROJECT = "project"; private static final String MPS_MODEL = "jetbrains.mps.build.mps.runner.test.solution.model"; private static final String MODEL_CLASSNAME = "TestClass"; public static void mpsMain() { System.out.println("Test project opening..."); Environment env = EnvironmentContainer.get(); assert env != null; final Project project = env.openProject(new File(MPS_PROJECT)); assert project != null; System.out.println("Test model access..."); final List<SModel> projectModels = new ModelAccessHelper(project.getModelAccess()).runReadAction(new Computable<IListSequence<SModel>>() { public IListSequence<SModel> compute() { return ListSequence.fromListWithValues(new ArrayList<SModel>(), project.getProjectModels()); } }); assert ListSequence.fromList(projectModels).count() == 1; final SModel model = new ModelAccessHelper(project.getModelAccess()).runReadAction(new Computable<SModel>() { public SModel compute() { return ListSequence.fromList(projectModels).findFirst(new IWhereFilter<SModel>() { public boolean accept(SModel it) { return MPS_MODEL.equals(it.getName().getValue()); } }); } }); assert model != null; // check model content final SNode node = new ModelAccessHelper(project.getModelAccess()).runReadAction(new Computable<SNode>() { public SNode compute() { return ListSequence.fromList(SModelOperations.roots(model, MetaAdapterFactory.getConcept(0xf3061a5392264cc5L, 0xa443f952ceaf5816L, 0xf8c108ca66L, "jetbrains.mps.baseLanguage.structure.ClassConcept"))).findFirst(new IWhereFilter<SNode>() { public boolean accept(SNode it) { return MODEL_CLASSNAME.equals(SPropertyOperations.getString(it, MetaAdapterFactory.getProperty(0xceab519525ea4f22L, 0x9b92103b95ca8c0cL, 0x110396eaaa4L, 0x110396ec041L, "name"))); } }); } }); assert node != null; // test write access final Wrappers._T<SNode> result = new Wrappers._T<SNode>(null); ThreadUtils.runInUIThreadAndWait(new Runnable() { public void run() { project.getModelAccess().executeCommand(new _Adapters._return_P0_E0_to_Runnable_adapter(new _FunctionTypes._return_P0_E0<SNode>() { public SNode invoke() { ListSequence.fromList(SLinkOperations.getChildren(node, MetaAdapterFactory.getContainmentLink(0xf3061a5392264cc5L, 0xa443f952ceaf5816L, 0x101d9d3ca30L, 0x4a9a46de59132803L, "member"))).addElement(_quotation_createNode_ea23db_a0a0a0a0a0a0r0e()); return result.value = Sequence.fromIterable(SNodeOperations.ofConcept(SLinkOperations.getChildren(node, MetaAdapterFactory.getContainmentLink(0xf3061a5392264cc5L, 0xa443f952ceaf5816L, 0x101d9d3ca30L, 0x4a9a46de59132803L, "member")), MetaAdapterFactory.getConcept(0xf3061a5392264cc5L, 0xa443f952ceaf5816L, 0xf8c108ca68L, "jetbrains.mps.baseLanguage.structure.FieldDeclaration"))).findFirst(new IWhereFilter<SNode>() { public boolean accept(SNode it) { return "n".equals(SPropertyOperations.getString(it, MetaAdapterFactory.getProperty(0xceab519525ea4f22L, 0x9b92103b95ca8c0cL, 0x110396eaaa4L, 0x110396ec041L, "name"))); } }); } })); } }); assert result.value != null; // create resulting file to signal everything is OK jetbrains.mps.build.mps.runner.test.test1.MainClass.mpsMain(); } private static SNode _quotation_createNode_ea23db_a0a0a0a0a0a0r0e() { PersistenceFacade facade = PersistenceFacade.getInstance(); SNode quotedNode_1 = null; SNode quotedNode_2 = null; SNode quotedNode_3 = null; quotedNode_1 = SModelUtil_new.instantiateConceptDeclaration(MetaAdapterFactory.getConcept(MetaAdapterFactory.getLanguage(0xf3061a5392264cc5L, 0xa443f952ceaf5816L, "jetbrains.mps.baseLanguage"), 0xf8c108ca68L, "FieldDeclaration"), null, null, false); SNodeAccessUtil.setProperty(quotedNode_1, MetaAdapterFactory.getProperty(0xceab519525ea4f22L, 0x9b92103b95ca8c0cL, 0x110396eaaa4L, 0x110396ec041L, "name"), "n"); quotedNode_2 = SModelUtil_new.instantiateConceptDeclaration(MetaAdapterFactory.getConcept(MetaAdapterFactory.getLanguage(0xf3061a5392264cc5L, 0xa443f952ceaf5816L, "jetbrains.mps.baseLanguage"), 0x10af9586f0cL, "PrivateVisibility"), null, null, false); quotedNode_1.addChild(MetaAdapterFactory.getContainmentLink(0xf3061a5392264cc5L, 0xa443f952ceaf5816L, 0x112670d273fL, 0x112670d886aL, "visibility"), quotedNode_2); quotedNode_3 = SModelUtil_new.instantiateConceptDeclaration(MetaAdapterFactory.getConcept(MetaAdapterFactory.getLanguage(0xf3061a5392264cc5L, 0xa443f952ceaf5816L, "jetbrains.mps.baseLanguage"), 0xf940d22479L, "IntegerType"), null, null, false); quotedNode_1.addChild(MetaAdapterFactory.getContainmentLink(0xf3061a5392264cc5L, 0xa443f952ceaf5816L, 0x450368d90ce15bc3L, 0x4ed4d318133c80ceL, "type"), quotedNode_3); return quotedNode_1; } }