Explorar o código

ShortName -> Identifier

Dominik Fuchß %!s(int64=4) %!d(string=hai) anos
pai
achega
e02f893f2d

+ 3 - 3
jplag.cli/src/main/java/de/jplag/CommandLineArgument.java

@@ -34,8 +34,8 @@ public enum CommandLineArgument {
     NEW_DIRECTORY(new Builder("-new", String.class).nargs(NumberOfArgumentValues.ONE_OR_MORE_VALUES)),
     OLD_DIRECTORY(new Builder("-old", String.class).nargs(NumberOfArgumentValues.ONE_OR_MORE_VALUES)),
     LANGUAGE(
-            new Builder("-l", String.class).defaultsTo(de.jplag.java.Language.SHORT_NAME)
-                    .choices(LanguageLoader.getAllAvailableLanguageShortNames())),
+            new Builder("-l", String.class).defaultsTo(de.jplag.java.Language.IDENTIFIER)
+                    .choices(LanguageLoader.getAllAvailableLanguageIdentifiers())),
     BASE_CODE("-bc", String.class),
     VERBOSITY(new Builder("-v", String.class).defaultsTo("quiet").choices(List.of("quiet", "long"))), // TODO SH: Replace verbosity when integrating a
                                                                                                       // real logging library
@@ -89,7 +89,7 @@ public enum CommandLineArgument {
     /**
      * The short name of the default {@link Language}.
      */
-    public static final String DEFAULT_LANGUAGE = de.jplag.java.Language.SHORT_NAME;
+    public static final String DEFAULT_LANGUAGE_IDENTIFIER = de.jplag.java.Language.IDENTIFIER;
 
     private final String flag;
     private final NumberOfArgumentValues numberOfValues;

+ 3 - 3
jplag.cli/src/test/java/de/jplag/cli/LanguageTest.java

@@ -15,7 +15,7 @@ class LanguageTest extends CommandLineInterfaceTest {
     @Test
     void testDefaultLanguage() {
         buildOptionsFromCLI(CURRENT_DIRECTORY);
-        assertEquals(CommandLineArgument.DEFAULT_LANGUAGE, options.getLanguageShortName());
+        assertEquals(CommandLineArgument.DEFAULT_LANGUAGE_IDENTIFIER, options.getLanguageIdentifier());
     }
 
     @Test
@@ -34,9 +34,9 @@ class LanguageTest extends CommandLineInterfaceTest {
     @Test
     void testValidLanguages() {
         for (Language language : LanguageLoader.getAllAvailableLanguages()) {
-            String argument = buildArgument(CommandLineArgument.LANGUAGE, language.getShortName());
+            String argument = buildArgument(CommandLineArgument.LANGUAGE, language.getIdentifier());
             buildOptionsFromCLI(argument, CURRENT_DIRECTORY);
-            assertEquals(language.getShortName(), options.getLanguageShortName());
+            assertEquals(language.getIdentifier(), options.getLanguageIdentifier());
         }
     }
 

+ 1 - 1
jplag.frontend-utils/src/main/java/de/jplag/Language.java

@@ -20,7 +20,7 @@ public interface Language {
     /**
      * Short name of the language used for CLI options.
      */
-    String getShortName();
+    String getIdentifier();
 
     /**
      * Minimum number of tokens required for a match.

+ 12 - 11
jplag.frontend-utils/src/main/java/de/jplag/LanguageLoader.java

@@ -35,14 +35,14 @@ public final class LanguageLoader {
         Map<String, Language> languages = new TreeMap<>();
 
         for (Language language : ServiceLoader.load(Language.class)) {
-            String shortName = language.getShortName();
-            if (languages.containsKey(shortName)) {
-                logger.error("Multiple implementations for a language '{}' are present in the classpath! Skipping ..", shortName);
-                languages.remove(shortName);
+            String languageIdentifier = language.getIdentifier();
+            if (languages.containsKey(languageIdentifier)) {
+                logger.error("Multiple implementations for a language '{}' are present in the classpath! Skipping ..", languageIdentifier);
+                languages.remove(languageIdentifier);
                 continue;
             }
             logger.info("Loading Language Frontend '{}'", language.getName());
-            languages.put(shortName, language);
+            languages.put(languageIdentifier, language);
         }
 
         loaded = Collections.unmodifiableMap(languages);
@@ -51,13 +51,14 @@ public final class LanguageLoader {
 
     /**
      * Load a language that is currently in the classpath by its short name.
-     * @param shortName the short name of the language
+     * @param identifier the short name of the language
      * @return the language or an empty optional if no language has been found.
+     * @see Language#getIdentifier()
      */
-    public static Optional<Language> getLanguage(String shortName) {
-        var result = getAllAvailableLanguages().stream().filter(it -> Objects.equals(it.getShortName(), shortName)).findFirst();
+    public static Optional<Language> getLanguage(String identifier) {
+        var result = getAllAvailableLanguages().stream().filter(it -> Objects.equals(it.getIdentifier(), identifier)).findFirst();
         if (result.isEmpty())
-            logger.warn("Attempt to load Language {} was not successful", shortName);
+            logger.warn("Attempt to load Language {} was not successful", identifier);
         return result;
     }
 
@@ -65,8 +66,8 @@ public final class LanguageLoader {
      * Get a list of all available languages with their short name.
      * @return the list of all languages
      */
-    public static List<String> getAllAvailableLanguageShortNames() {
-        return getAllAvailableLanguages().stream().map(Language::getShortName).toList();
+    public static List<String> getAllAvailableLanguageIdentifiers() {
+        return getAllAvailableLanguages().stream().map(Language::getIdentifier).toList();
     }
 
     /**

+ 3 - 3
jplag.frontend.chars/src/main/java/de/jplag/chars/Language.java

@@ -12,7 +12,7 @@ import de.jplag.TokenList;
 @MetaInfServices(de.jplag.Language.class)
 public class Language implements de.jplag.Language {
 
-    public static final String SHORT_NAME = "char";
+    public static final String IDENTIFIER = "char";
     private final Parser parser;
 
     public Language() {
@@ -30,8 +30,8 @@ public class Language implements de.jplag.Language {
     }
 
     @Override
-    public String getShortName() {
-        return SHORT_NAME;
+    public String getIdentifier() {
+        return IDENTIFIER;
     }
 
     @Override

+ 3 - 3
jplag.frontend.cpp/src/main/java/de/jplag/cpp/Language.java

@@ -8,7 +8,7 @@ import de.jplag.TokenList;
 
 @MetaInfServices(de.jplag.Language.class)
 public class Language implements de.jplag.Language {
-    public static final String SHORT_NAME = "cpp";
+    public static final String IDENTIFIER = "cpp";
 
     private final Scanner scanner; // cpp code is scanned not parsed
 
@@ -27,8 +27,8 @@ public class Language implements de.jplag.Language {
     }
 
     @Override
-    public String getShortName() {
-        return SHORT_NAME;
+    public String getIdentifier() {
+        return IDENTIFIER;
     }
 
     @Override

+ 3 - 3
jplag.frontend.csharp-6/src/main/java/de/jplag/csharp/Language.java

@@ -14,7 +14,7 @@ import de.jplag.TokenList;
 @MetaInfServices(de.jplag.Language.class)
 public class Language implements de.jplag.Language {
     private static final String NAME = "C# 6 Parser";
-    private static final String SHORT_NAME = "csharp";
+    private static final String IDENTIFIER = "csharp";
     private static final String[] FILE_ENDINGS = new String[] {".cs", ".CS"};
     private static final int DEFAULT_MIN_TOKEN_MATCH = 8;
 
@@ -35,8 +35,8 @@ public class Language implements de.jplag.Language {
     }
 
     @Override
-    public String getShortName() {
-        return SHORT_NAME;
+    public String getIdentifier() {
+        return IDENTIFIER;
     }
 
     @Override

+ 3 - 3
jplag.frontend.golang/src/main/java/de/jplag/golang/Language.java

@@ -7,7 +7,7 @@ import de.jplag.TokenList;
 public class Language implements de.jplag.Language {
 
     private static final String NAME = "Go Parser";
-    public static final String SHORT_NAME = "go";
+    public static final String IDENTIFIER = "go";
     private static final int DEFAULT_MIN_TOKEN_MATCH = 8;
     private static final String[] FILE_EXTENSIONS = {".go"};
     private final GoParserAdapter parserAdapter;
@@ -27,8 +27,8 @@ public class Language implements de.jplag.Language {
     }
 
     @Override
-    public String getShortName() {
-        return SHORT_NAME;
+    public String getIdentifier() {
+        return IDENTIFIER;
     }
 
     @Override

+ 3 - 3
jplag.frontend.java/src/main/java/de/jplag/java/Language.java

@@ -11,7 +11,7 @@ import de.jplag.TokenList;
  */
 @MetaInfServices(de.jplag.Language.class)
 public class Language implements de.jplag.Language {
-    public static final String SHORT_NAME = "java";
+    public static final String IDENTIFIER = "java";
 
     private final Parser parser;
 
@@ -30,8 +30,8 @@ public class Language implements de.jplag.Language {
     }
 
     @Override
-    public String getShortName() {
-        return SHORT_NAME;
+    public String getIdentifier() {
+        return IDENTIFIER;
     }
 
     @Override

+ 3 - 3
jplag.frontend.kotlin/src/main/java/de/jplag/kotlin/Language.java

@@ -13,7 +13,7 @@ import de.jplag.TokenList;
 public class Language implements de.jplag.Language {
 
     private static final String NAME = "Kotlin Parser";
-    public static final String SHORT_NAME = "kotlin";
+    public static final String IDENTIFIER = "kotlin";
     private static final int DEFAULT_MIN_TOKEN_MATCH = 8;
     private static final String[] FILE_EXTENSIONS = {".kt"};
     private final KotlinParserAdapter parserAdapter;
@@ -33,8 +33,8 @@ public class Language implements de.jplag.Language {
     }
 
     @Override
-    public String getShortName() {
-        return SHORT_NAME;
+    public String getIdentifier() {
+        return IDENTIFIER;
     }
 
     @Override

+ 3 - 3
jplag.frontend.python-3/src/main/java/de/jplag/python3/Language.java

@@ -9,7 +9,7 @@ import de.jplag.TokenList;
 @MetaInfServices(de.jplag.Language.class)
 public class Language implements de.jplag.Language {
 
-    public static final String SHORT_NAME = "python3";
+    public static final String IDENTIFIER = "python3";
 
     private final Parser parser;
 
@@ -28,8 +28,8 @@ public class Language implements de.jplag.Language {
     }
 
     @Override
-    public String getShortName() {
-        return SHORT_NAME;
+    public String getIdentifier() {
+        return IDENTIFIER;
     }
 
     @Override

+ 3 - 3
jplag.frontend.rlang/src/main/java/de/jplag/rlang/Language.java

@@ -13,7 +13,7 @@ import de.jplag.TokenList;
 public class Language implements de.jplag.Language {
 
     private static final String NAME = "R Parser";
-    public static final String SHORT_NAME = "rlang";
+    public static final String IDENTIFIER = "rlang";
     private static final int DEFAULT_MIN_TOKEN_MATCH = 8;
     private static final String[] FILE_EXTENSION = {".R", ".r"};
     private final RParserAdapter parserAdapter;
@@ -33,8 +33,8 @@ public class Language implements de.jplag.Language {
     }
 
     @Override
-    public String getShortName() {
-        return SHORT_NAME;
+    public String getIdentifier() {
+        return IDENTIFIER;
     }
 
     @Override

+ 3 - 3
jplag.frontend.scheme/src/main/java/de/jplag/scheme/Language.java

@@ -9,7 +9,7 @@ import de.jplag.TokenList;
 @MetaInfServices(de.jplag.Language.class)
 public class Language implements de.jplag.Language {
 
-    public static final String SHORT_NAME = "scheme";
+    public static final String IDENTIFIER = "scheme";
     private final de.jplag.scheme.Parser parser;
 
     public Language() {
@@ -27,8 +27,8 @@ public class Language implements de.jplag.Language {
     }
 
     @Override
-    public String getShortName() {
-        return SHORT_NAME;
+    public String getIdentifier() {
+        return IDENTIFIER;
     }
 
     @Override

+ 3 - 3
jplag.frontend.text/src/main/java/de/jplag/text/Language.java

@@ -14,7 +14,7 @@ import de.jplag.TokenList;
 @MetaInfServices(de.jplag.Language.class)
 public class Language implements de.jplag.Language {
 
-    public static final String SHORT_NAME = "text";
+    public static final String IDENTIFIER = "text";
     private final ParserAdapter parserAdapter;
 
     public Language() {
@@ -32,8 +32,8 @@ public class Language implements de.jplag.Language {
     }
 
     @Override
-    public String getShortName() {
-        return SHORT_NAME;
+    public String getIdentifier() {
+        return IDENTIFIER;
     }
 
     @Override

+ 2 - 2
jplag/src/main/java/de/jplag/JPlag.java

@@ -105,10 +105,10 @@ public class JPlag {
     }
 
     private static Language initializeLanguage(JPlagOptions options) {
-        String languageShortName = options.getLanguageShortName();
+        String languageShortName = options.getLanguageIdentifier();
         Language currentLanguage = options.getLanguage();
 
-        if (currentLanguage != null && (languageShortName == null || languageShortName.equals(currentLanguage.getShortName()))) {
+        if (currentLanguage != null && (languageShortName == null || languageShortName.equals(currentLanguage.getIdentifier()))) {
             // Ensure that we do not rely on the ServiceLoader API. We can also load an arbitrary language via Options
             return currentLanguage;
         }

+ 1 - 1
jplag/src/main/java/de/jplag/Submission.java

@@ -202,7 +202,7 @@ public class Submission implements Comparable<Submission> {
     private void copySubmission() {
         File rootDirectory = submissionRootFile.getParentFile();
         assert rootDirectory != null;
-        File submissionDirectory = createSubdirectory(rootDirectory, ERROR_FOLDER, language.getShortName(), name);
+        File submissionDirectory = createSubdirectory(rootDirectory, ERROR_FOLDER, language.getIdentifier(), name);
         for (File file : files) {
             try {
                 Files.copy(file.toPath(), new File(submissionDirectory, file.getName()).toPath());

+ 5 - 5
jplag/src/main/java/de/jplag/options/JPlagOptions.java

@@ -29,7 +29,7 @@ public class JPlagOptions {
     /**
      * The short name of the language used to parse the submissions.
      */
-    private String languageShortName;
+    private String languageIdentifier;
 
     /**
      * Language used to parse the submissions.
@@ -133,10 +133,10 @@ public class JPlagOptions {
     /**
      * Constructor with required attributes.
      */
-    public JPlagOptions(List<String> submissionDirectories, List<String> oldSubmissionDirectories, String languageShortName) {
+    public JPlagOptions(List<String> submissionDirectories, List<String> oldSubmissionDirectories, String languageIdentifier) {
         this.submissionDirectories = submissionDirectories;
         this.oldSubmissionDirectories = oldSubmissionDirectories;
-        this.languageShortName = languageShortName;
+        this.languageIdentifier = languageIdentifier;
     }
 
     public Optional<String> getBaseCodeSubmissionName() {
@@ -159,8 +159,8 @@ public class JPlagOptions {
         return fileSuffixes;
     }
 
-    public String getLanguageShortName() {
-        return languageShortName;
+    public String getLanguageIdentifier() {
+        return languageIdentifier;
     }
 
     public Language getLanguage() {

+ 1 - 1
jplag/src/test/java/de/jplag/TestBase.java

@@ -46,7 +46,7 @@ public abstract class TestBase {
     }
 
     protected JPlagResult runJPlag(List<String> newPaths, List<String> oldPaths, Consumer<JPlagOptions> customization) throws ExitException {
-        JPlagOptions options = new JPlagOptions(newPaths, oldPaths, Language.SHORT_NAME);
+        JPlagOptions options = new JPlagOptions(newPaths, oldPaths, Language.IDENTIFIER);
         options.setVerbosity(Verbosity.LONG);
         customization.accept(options);
         JPlag jplag = new JPlag(options);

+ 7 - 8
jplag/src/test/java/de/jplag/special/TokenPrinterTest.java

@@ -19,21 +19,20 @@ import de.jplag.options.JPlagOptions;
  * Special test case the does not really test anything but prints the tokens and the corresponding line of code.
  * @author Timur Saglam
  */
-// TODO DF: We could move some tests to their language frontends.
-public class TokenPrinterTest extends TestBase {
+class TokenPrinterTest extends TestBase {
     private static final String LARGE_SPACE = "   ";
     private static final String LINE = "------------------";
 
     private static final int MIN_TOKEN_MATCH = 5;
     private static final String PRINTER_FOLDER = "PRINTER"; // in the folder 'jplag/src/test/resources/samples'
 
-    private static final String LANGUAGE_CPP = de.jplag.cpp.Language.SHORT_NAME;
-    private static final String LANGUAGE_R = de.jplag.rlang.Language.SHORT_NAME;
-    private static final String LANGUAGE_KOTLIN = de.jplag.kotlin.Language.SHORT_NAME;
+    private static final String LANGUAGE_CPP = de.jplag.cpp.Language.IDENTIFIER;
+    private static final String LANGUAGE_R = de.jplag.rlang.Language.IDENTIFIER;
+    private static final String LANGUAGE_KOTLIN = de.jplag.kotlin.Language.IDENTIFIER;
 
-    private static final String LANGUAGE_GO = de.jplag.golang.Language.SHORT_NAME;
+    private static final String LANGUAGE_GO = de.jplag.golang.Language.IDENTIFIER;
 
-    @Disabled
+    @Disabled("Not a meaningful test, used for designing the token set")
     @Test
     void printCPPFiles() {
         printSubmissions(options -> {
@@ -42,7 +41,7 @@ public class TokenPrinterTest extends TestBase {
         });
     }
 
-    @Disabled
+    @Disabled("Not a meaningful test, used for designing the token set")
     @Test
     void printJavaFiles() {
         printSubmissions(options -> {