package jetbrains.mps.lang.test.runtime;
/*Generated by MPS */
import org.jetbrains.mps.openapi.model.SModel;
import jetbrains.mps.project.Project;
import java.util.Map;
import org.jetbrains.mps.openapi.model.SNode;
import java.util.List;
import jetbrains.mps.internal.collections.runtime.MapSequence;
import java.util.HashMap;
import jetbrains.mps.internal.collections.runtime.ListSequence;
import java.util.ArrayList;
import jetbrains.mps.smodel.SNodeId;
import jetbrains.mps.smodel.CopyUtil;
import jetbrains.mps.lang.smodel.generator.smodelAdapter.SNodeOperations;
import jetbrains.mps.smodel.adapter.structure.MetaAdapterFactory;
import org.jetbrains.mps.openapi.language.SAbstractConcept;
public class BaseTestBody {
public SModel myModel;
public Project myProject;
protected Map<SNode, SNode> myMap;
private List<SNode> myCopies;
public BaseTestBody() {
myMap = MapSequence.fromMap(new HashMap<SNode, SNode>());
myCopies = ListSequence.fromList(new ArrayList<SNode>());
}
public void addNodeById(final String id) throws Exception {
myProject.getModelAccess().executeCommand(new Runnable() {
public void run() {
SNode node = myModel.getNode(SNodeId.fromString(id));
SNode copy = CopyUtil.copy(node, myMap, true);
for (SNode a : ListSequence.fromList(SNodeOperations.getNodeDescendants(copy, MetaAdapterFactory.getConcept(0x8585453e6bfb4d80L, 0x98deb16074f1d86cL, 0x11e0d52da47L, "jetbrains.mps.lang.test.structure.INodeAnnotation"), false, new SAbstractConcept[]{}))) {
SNodeOperations.deleteNode(a);
}
myModel.addRootNode(copy);
ListSequence.fromList(myCopies).addElement(copy);
}
});
}
public SNode getNodeById(String id) {
return MapSequence.fromMap(myMap).get(myModel.getNode(SNodeId.fromString(id)));
}
public SNode getRealNodeById(String id) {
return myModel.getNode(SNodeId.fromString(id));
}
}