package org.psjava.judgesubmit;
import java.io.IOException;
import java.util.Collection;
import org.psjava.ds.map.Map;
import org.psjava.ds.map.MutableMap;
import org.psjava.goods.GoodMutableMapFactory;
import com.abbajoa.codecombine.LanguageToolSelector;
import com.abbajoa.codecombine.combiner.Combiner;
import com.abbajoa.codecombine.combiner.InvalidDataException;
public class CodeCombineAdapter {
public static String combine(String code, Language language, Collection<String> searchDirs) throws IOException, InvalidInputException {
Combiner combiner = LanguageToolSelector.createLanguageTool(CodeCombineAdapter.convertToCombinesLanguage(language)).createCombiner();
try {
return combiner.combine(code, searchDirs);
} catch (InvalidDataException e) {
throw new InvalidInputException("Invalid data while combining external code: " + e.getMessage());
}
}
private static com.abbajoa.codecombine.Language convertToCombinesLanguage(Language language) {
return createMap().get(language);
}
public static boolean isSupported(Language language) {
return createMap().containsKey(language);
}
private static Map<Language, com.abbajoa.codecombine.Language> createMap() {
MutableMap<Language, com.abbajoa.codecombine.Language> map = GoodMutableMapFactory.getInstance().create();
map.put(Language.CPP, com.abbajoa.codecombine.Language.CPP);
map.put(Language.C, com.abbajoa.codecombine.Language.CPP);
map.put(Language.JAVA, com.abbajoa.codecombine.Language.JAVA);
return map;
}
}