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