package org.checkerframework.eclipse.actions;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.Map;
import org.checkerframework.eclipse.CheckerPlugin;
import org.checkerframework.eclipse.prefs.CheckerPreferences;
import org.checkerframework.eclipse.util.PluginUtil;
import org.eclipse.jface.preference.IPreferenceStore;
/**
* This class manages the current checkers that can be run. Also keeps track of custom checkers that
* are made by the user.
*
* @author asumu
*/
public class CheckerManager {
/** Singleton constructor, should only be called once for the instance */
private CheckerManager() {}
public static List<CheckerInfo> getCheckerInfos() {
return CheckerInfo.getCheckers();
}
/**
* For each processor in processors, check to see if we recognize that processor and add its
* implicit imports to the "selected" list. Return selected.
*
* @return a list of quals paths to use as imports
*/
public static List<String> getSelectedQuals(final String[] processors) {
List<String> selected = new ArrayList<String>();
final Map<String, CheckerInfo> pathToChecker = CheckerInfo.getPathToCheckerInfo();
for (String processor : processors) {
final String trimmedProc = processor.trim();
if (pathToChecker.containsKey(trimmedProc)) {
final String qualsPath = pathToChecker.get(trimmedProc).getQualsPath();
if (qualsPath != null) {
selected.add(pathToChecker.get(trimmedProc).getQualsPath());
}
}
}
return selected;
}
public static IPreferenceStore getPrefStore() {
return CheckerPlugin.getDefault().getPreferenceStore();
}
public static String[] getStoredCustomClasses() {
final IPreferenceStore store = getPrefStore();
final String storedItems = store.getString(CheckerPreferences.PREF_CHECKER_CUSTOM_CLASSES);
if (storedItems != null && !storedItems.equals("")) {
return storedItems.split(",");
}
return new String[] {};
}
public static void storeCustomClasses(final String[] customClasses) {
final IPreferenceStore store = getPrefStore();
final String classString = PluginUtil.join(",", customClasses);
store.setValue(CheckerPreferences.PREF_CHECKER_CUSTOM_CLASSES, classString);
}
public static void storeSelectedClasses(final List<String> selectedClasses) {
final IPreferenceStore store = getPrefStore();
String toStore = "";
if (!selectedClasses.isEmpty()) {
toStore = PluginUtil.join(";", selectedClasses);
}
store.setValue(CheckerPreferences.PREF_CHECKER_SELECTED_CHECKERS, toStore);
}
public static List<String> getSelectedClasses() {
final IPreferenceStore store = getPrefStore();
String selectedStr = store.getString(CheckerPreferences.PREF_CHECKER_SELECTED_CHECKERS);
if (selectedStr == null || selectedStr.trim().isEmpty()) {
return new ArrayList<String>();
}
return Arrays.asList(selectedStr.split(";"));
}
}