package jetbrains.mps.lang.core.util; /*Generated by MPS */ import org.jetbrains.mps.openapi.language.SAbstractConcept; import org.jetbrains.mps.openapi.module.SModule; import org.jetbrains.annotations.NotNull; import org.jetbrains.mps.openapi.model.SNode; import jetbrains.mps.internal.collections.runtime.Sequence; import org.jetbrains.mps.openapi.model.SModel; import jetbrains.mps.internal.collections.runtime.ITranslator2; import jetbrains.mps.lang.smodel.generator.smodelAdapter.SNodeOperations; import jetbrains.mps.editor.runtime.impl.cellActions.CommentUtil; import jetbrains.mps.lang.migration.runtime.base.Problem; import org.jetbrains.mps.openapi.module.SearchScope; import jetbrains.mps.lang.smodel.query.runtime.CommandUtil; import jetbrains.mps.lang.smodel.query.runtime.QueryExecutionContext; import jetbrains.mps.internal.collections.runtime.CollectionSequence; import jetbrains.mps.internal.collections.runtime.ISelector; import jetbrains.mps.lang.migration.runtime.base.DeprecatedConceptNotMigratedProblem; public class OldCommentAnnotationMigration { private SAbstractConcept concept; private SModule module; public OldCommentAnnotationMigration(@NotNull SAbstractConcept concept, @NotNull SModule module) { this.concept = concept; this.module = module; } public void migrate() { Iterable<SNode> oldComments = Sequence.fromIterable(((Iterable<SModel>) module.getModels())).translate(new ITranslator2<SModel, SNode>() { public Iterable<SNode> translate(SModel it) { return it.getRootNodes(); } }).translate(new ITranslator2<SNode, SNode>() { public Iterable<SNode> translate(SNode it) { return SNodeOperations.getNodeDescendants(((SNode) it), SNodeOperations.asSConcept(concept), false, new SAbstractConcept[]{}); } }); for (SNode comment : Sequence.fromIterable(oldComments)) { SNode parent = SNodeOperations.getParent(comment); if (parent != null) { SNodeOperations.deleteNode(comment); CommentUtil.commentOut(parent); } } } public Iterable<Problem> check() { { final SearchScope scope = CommandUtil.createScope(module); QueryExecutionContext context = new QueryExecutionContext() { public SearchScope getDefaultSearchScope() { return scope; } }; return CollectionSequence.fromCollection(CommandUtil.instances(CommandUtil.createConsoleScope(null, false, context), SNodeOperations.asSConcept(concept), false)).select(new ISelector<SNode, Problem>() { public Problem select(SNode it) { return ((Problem) new DeprecatedConceptNotMigratedProblem(it)); } }); } } }