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