package jetbrains.mps.ide.modelchecker.platform.actions;
/*Generated by MPS */
import java.util.List;
import org.jetbrains.mps.openapi.model.SModel;
import org.jetbrains.mps.openapi.module.SModule;
import jetbrains.mps.internal.collections.runtime.ListSequence;
import java.util.ArrayList;
import jetbrains.mps.internal.collections.runtime.Sequence;
import jetbrains.mps.smodel.SModelStereotype;
import jetbrains.mps.smodel.Language;
import jetbrains.mps.smodel.Generator;
import jetbrains.mps.internal.collections.runtime.CollectionSequence;
import org.jetbrains.annotations.NotNull;
import jetbrains.mps.ide.findusages.model.SearchResults;
import org.jetbrains.annotations.Nullable;
import jetbrains.mps.ide.findusages.model.SearchResult;
public final class ModelCheckerUtils {
private ModelCheckerUtils() {
}
public static List<SModel> getModelDescriptors(SModule module) {
List<SModel> modelDescrpitors = ListSequence.fromList(new ArrayList<SModel>());
for (SModel modelDescriptor : Sequence.fromIterable(module.getModels())) {
if (SModelStereotype.isUserModel(modelDescriptor)) {
ListSequence.fromList(modelDescrpitors).addElement(modelDescriptor);
}
if (ModelCheckerSettings.getInstance().isCheckStubs() && SModelStereotype.isStubModelStereotype(SModelStereotype.getStereotype(modelDescriptor))) {
ListSequence.fromList(modelDescrpitors).addElement(modelDescriptor);
}
}
if (module instanceof Language) {
Language language = (Language) module;
for (Generator generator : CollectionSequence.fromCollection(language.getGenerators())) {
ListSequence.fromList(modelDescrpitors).addSequence(ListSequence.fromList(getModelDescriptors(generator)));
}
}
return modelDescrpitors;
}
public static int getIssueCountForSeverity(@NotNull SearchResults<ModelCheckerIssue> issues, @Nullable String severity) {
if (severity == null) {
return 0;
}
int issueCount = 0;
for (SearchResult<ModelCheckerIssue> issue : ListSequence.fromList(issues.getSearchResults())) {
if (severity.equals(issue.getCategories().get(0).o2)) {
issueCount++;
}
}
return issueCount;
}
}