LanguageOption.java 1.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152
  1. package de.jplag.options;
  2. import static java.util.stream.Collectors.toList;
  3. import java.util.Arrays;
  4. import java.util.Collection;
  5. /**
  6. * The available languages.
  7. */
  8. public enum LanguageOption {
  9. JAVA("java", "de.jplag.java.Language"),
  10. PYTHON_3("python3", "de.jplag.python3.Language"),
  11. C_CPP("cpp", "de.jplag.cpp.Language"),
  12. C_SHARP("csharp", "de.jplag.csharp.Language"),
  13. R_LANG("rlang", "de.jplag.rlang.Language"),
  14. KOTLIN("kotlin", "de.jplag.kotlin.Language"),
  15. CHAR("char", "de.jplag.chars.Language"),
  16. TEXT("text", "de.jplag.text.Language"),
  17. SCHEME("scheme", "de.jplag.scheme.Language"),
  18. EMF("emf-metamodel", "de.jplag.emf.Language"),
  19. EMF_DYNAMIC("emf-metamodel-dynamic", "de.jplag.emf.dynamic.Language");
  20. private final String classPath;
  21. private final String displayName;
  22. LanguageOption(String displayName, String classPath) {
  23. this.displayName = displayName;
  24. this.classPath = classPath;
  25. }
  26. public String getClassPath() {
  27. return this.classPath;
  28. }
  29. public String getDisplayName() {
  30. return this.displayName;
  31. }
  32. public static LanguageOption fromDisplayName(String displayName) {
  33. return Arrays.stream(LanguageOption.values()).filter(languageOption -> languageOption.displayName.equalsIgnoreCase(displayName)).findFirst()
  34. .orElse(getDefault());
  35. }
  36. public static Collection<String> getAllDisplayNames() {
  37. return Arrays.stream(LanguageOption.values()).map(languageOption -> languageOption.displayName).collect(toList());
  38. }
  39. public static LanguageOption getDefault() {
  40. return LanguageOption.JAVA;
  41. }
  42. }