package jetbrains.mps.migration.component.util; /*Generated by MPS */ import org.jetbrains.mps.openapi.module.SModule; import jetbrains.mps.project.Project; import jetbrains.mps.lang.migration.runtime.base.MigrationModuleUtil; import jetbrains.mps.ide.migration.ScriptApplied; import java.util.List; import jetbrains.mps.internal.collections.runtime.ListSequence; import java.util.ArrayList; import org.jetbrains.mps.openapi.language.SLanguage; import jetbrains.mps.internal.collections.runtime.SetSequence; import jetbrains.mps.project.AbstractModule; import jetbrains.mps.lang.migration.runtime.base.MigrationScriptReference; import jetbrains.mps.lang.migration.runtime.base.RefactoringScriptReference; import java.util.Set; public class MigrationsUtil { public static Iterable<SModule> getMigrateableModulesFromProject(Project p) { return MigrationModuleUtil.getMigrateableModulesFromProject(p); } public static boolean isModuleMigrateable(SModule m) { return MigrationModuleUtil.isModuleMigrateable(m); } public static Iterable<ScriptApplied> getAllSteps(SModule module, boolean firstOnly) { List<ScriptApplied> result = ListSequence.fromList(new ArrayList<ScriptApplied>()); for (SLanguage lang : SetSequence.fromSet(getUsedLanguages(module))) { int currentLangVersion = lang.getLanguageVersion(); int ver = ((AbstractModule) module).getUsedLanguageVersion(lang, false); ver = Math.max(ver, 0); currentLangVersion = Math.max(currentLangVersion, 0); for (int i = ver; i < currentLangVersion; i++) { ListSequence.fromList(result).addElement(new ScriptApplied(module, new MigrationScriptReference(lang, i))); if (firstOnly) { break; } } } for (SModule dep : SetSequence.fromSet(getModuleDependencies(module))) { int currentDepVersion = ((AbstractModule) dep).getModuleVersion(); int ver = ((AbstractModule) module).getDependencyVersion(dep, false); ver = Math.max(ver, 0); currentDepVersion = Math.max(currentDepVersion, 0); for (int i = ver; i < currentDepVersion; i++) { ListSequence.fromList(result).addElement(new ScriptApplied(module, new RefactoringScriptReference(dep, i))); if (firstOnly) { break; } } } return result; } public static Set<SModule> getModuleDependencies(SModule module) { return MigrationModuleUtil.getModuleDependencies(module); } public static Set<SLanguage> getUsedLanguages(SModule module) { return MigrationModuleUtil.getUsedLanguages(module); } }