package jetbrains.mps.lang.migration.pluginSolution.plugin;
/*Generated by MPS */
import org.jetbrains.mps.openapi.model.SNode;
import jetbrains.mps.smodel.Language;
import org.jetbrains.mps.openapi.model.SModel;
import jetbrains.mps.smodel.LanguageAspect;
import jetbrains.mps.smodel.action.SNodeFactoryOperations;
import jetbrains.mps.smodel.adapter.structure.MetaAdapterFactory;
import jetbrains.mps.lang.smodel.generator.smodelAdapter.SPropertyOperations;
import jetbrains.mps.lang.smodel.generator.smodelAdapter.SNodeOperations;
import jetbrains.mps.internal.collections.runtime.Sequence;
import jetbrains.mps.internal.collections.runtime.ListSequence;
import jetbrains.mps.lang.smodel.generator.smodelAdapter.SLinkOperations;
import jetbrains.mps.smodel.SModelInternal;
import jetbrains.mps.lang.migration.behavior.MigrationScript__BehaviorDescriptor;
public class MigrationScriptBuilder {
private SNode myScript;
private MigrationScriptBuilder(Language language) {
SModel migrationModel = LanguageAspect.MIGRATION.getOrCreate(language);
myScript = SNodeFactoryOperations.createNewRootNode(migrationModel, SNodeFactoryOperations.asInstanceConcept(MetaAdapterFactory.getConcept(0x9074634404fd4286L, 0x97d5b46ae6a81709L, 0x73e8a2c68b62c6a3L, "jetbrains.mps.lang.migration.structure.MigrationScript")), null);
}
public static MigrationScriptBuilder createMigrationScript(Language language) {
return new MigrationScriptBuilder(language);
}
public MigrationScriptBuilder setName(String name) {
SPropertyOperations.set(myScript, MetaAdapterFactory.getProperty(0xceab519525ea4f22L, 0x9b92103b95ca8c0cL, 0x110396eaaa4L, 0x110396ec041L, "name"), name);
return this;
}
public MigrationScriptBuilder setExecuteMethod(SNode method) {
SNodeOperations.replaceWithAnother(getExecuteMethod(), method);
return this;
}
public MigrationScriptBuilder appendExecuteStatements(SNode... statements) {
return appendExecuteStatements(Sequence.fromArray(statements));
}
public MigrationScriptBuilder appendExecuteStatements(Iterable<SNode> statements) {
ListSequence.fromList(SLinkOperations.getChildren(SLinkOperations.getTarget(getExecuteMethod(), MetaAdapterFactory.getContainmentLink(0xf3061a5392264cc5L, 0xa443f952ceaf5816L, 0xf8cc56b1fcL, 0xf8cc56b1ffL, "body")), MetaAdapterFactory.getContainmentLink(0xf3061a5392264cc5L, 0xa443f952ceaf5816L, 0xf8cc56b200L, 0xf8cc6bf961L, "statement"))).addSequence(Sequence.fromIterable(statements));
return this;
}
public MigrationScriptBuilder addDependency(SModel m) {
((SModelInternal) SNodeOperations.getModel(myScript)).addModelImport(m.getReference(), true);
return this;
}
public SNode getExecuteMethod() {
return MigrationScript__BehaviorDescriptor.getMethod_id6d7r2Fq2j7f.invoke(myScript, SNodeOperations.getNode("90746344-04fd-4286-97d5-b46ae6a81709/r:52a3d974-bd4f-4651-ba6e-a2de5e336d95(jetbrains.mps.lang.migration/jetbrains.mps.lang.migration.methods)", "5155329496662709030"));
}
public SNode getExecuteMethodModuleParameter() {
return ListSequence.fromList(SLinkOperations.getChildren(getExecuteMethod(), MetaAdapterFactory.getContainmentLink(0xf3061a5392264cc5L, 0xa443f952ceaf5816L, 0xf8cc56b1fcL, 0xf8cc56b1feL, "parameter"))).first();
}
public SNode getScript() {
return myScript;
}
}