Forráskód Böngészése

refactor CLI classes to own package `de.jplag.cli`
moved LanguageLoader into CLI as only required there

Jan Wittler 3 éve
szülő
commit
4e4a1bf91a

+ 2 - 2
cli/pom.xml

@@ -103,7 +103,7 @@
                 <configuration>
                     <archive>
                         <manifest>
-                            <mainClass>de.jplag.CLI</mainClass>
+                            <mainClass>de.jplag.cli.CLI</mainClass>
                             <packageName>jplag</packageName>
                         </manifest>
                     </archive>
@@ -117,7 +117,7 @@
                     </descriptors>
                     <archive>
                         <manifest>
-                            <mainClass>de.jplag.CLI</mainClass>
+                            <mainClass>de.jplag.cli.CLI</mainClass>
                             <packageName>jplag</packageName>
                             <addDefaultImplementationEntries>true</addDefaultImplementationEntries>
                             <addDefaultSpecificationEntries>true</addDefaultSpecificationEntries>

+ 32 - 30
cli/src/main/java/de/jplag/CLI.java → cli/src/main/java/de/jplag/cli/CLI.java

@@ -1,32 +1,32 @@
-package de.jplag;
-
-import static de.jplag.CommandLineArgument.BASE_CODE;
-import static de.jplag.CommandLineArgument.CLUSTER_AGGLOMERATIVE_INTER_CLUSTER_SIMILARITY;
-import static de.jplag.CommandLineArgument.CLUSTER_AGGLOMERATIVE_THRESHOLD;
-import static de.jplag.CommandLineArgument.CLUSTER_ALGORITHM;
-import static de.jplag.CommandLineArgument.CLUSTER_DISABLE;
-import static de.jplag.CommandLineArgument.CLUSTER_METRIC;
-import static de.jplag.CommandLineArgument.CLUSTER_PREPROCESSING_CDF;
-import static de.jplag.CommandLineArgument.CLUSTER_PREPROCESSING_NONE;
-import static de.jplag.CommandLineArgument.CLUSTER_PREPROCESSING_PERCENTILE;
-import static de.jplag.CommandLineArgument.CLUSTER_PREPROCESSING_THRESHOLD;
-import static de.jplag.CommandLineArgument.CLUSTER_SPECTRAL_BANDWIDTH;
-import static de.jplag.CommandLineArgument.CLUSTER_SPECTRAL_KMEANS_ITERATIONS;
-import static de.jplag.CommandLineArgument.CLUSTER_SPECTRAL_MAX_RUNS;
-import static de.jplag.CommandLineArgument.CLUSTER_SPECTRAL_MIN_RUNS;
-import static de.jplag.CommandLineArgument.CLUSTER_SPECTRAL_NOISE;
-import static de.jplag.CommandLineArgument.DEBUG;
-import static de.jplag.CommandLineArgument.EXCLUDE_FILE;
-import static de.jplag.CommandLineArgument.LANGUAGE;
-import static de.jplag.CommandLineArgument.MIN_TOKEN_MATCH;
-import static de.jplag.CommandLineArgument.NEW_DIRECTORY;
-import static de.jplag.CommandLineArgument.OLD_DIRECTORY;
-import static de.jplag.CommandLineArgument.RESULT_FOLDER;
-import static de.jplag.CommandLineArgument.ROOT_DIRECTORY;
-import static de.jplag.CommandLineArgument.SHOWN_COMPARISONS;
-import static de.jplag.CommandLineArgument.SIMILARITY_THRESHOLD;
-import static de.jplag.CommandLineArgument.SUBDIRECTORY;
-import static de.jplag.CommandLineArgument.SUFFIXES;
+package de.jplag.cli;
+
+import static de.jplag.cli.CommandLineArgument.BASE_CODE;
+import static de.jplag.cli.CommandLineArgument.CLUSTER_AGGLOMERATIVE_INTER_CLUSTER_SIMILARITY;
+import static de.jplag.cli.CommandLineArgument.CLUSTER_AGGLOMERATIVE_THRESHOLD;
+import static de.jplag.cli.CommandLineArgument.CLUSTER_ALGORITHM;
+import static de.jplag.cli.CommandLineArgument.CLUSTER_DISABLE;
+import static de.jplag.cli.CommandLineArgument.CLUSTER_METRIC;
+import static de.jplag.cli.CommandLineArgument.CLUSTER_PREPROCESSING_CDF;
+import static de.jplag.cli.CommandLineArgument.CLUSTER_PREPROCESSING_NONE;
+import static de.jplag.cli.CommandLineArgument.CLUSTER_PREPROCESSING_PERCENTILE;
+import static de.jplag.cli.CommandLineArgument.CLUSTER_PREPROCESSING_THRESHOLD;
+import static de.jplag.cli.CommandLineArgument.CLUSTER_SPECTRAL_BANDWIDTH;
+import static de.jplag.cli.CommandLineArgument.CLUSTER_SPECTRAL_KMEANS_ITERATIONS;
+import static de.jplag.cli.CommandLineArgument.CLUSTER_SPECTRAL_MAX_RUNS;
+import static de.jplag.cli.CommandLineArgument.CLUSTER_SPECTRAL_MIN_RUNS;
+import static de.jplag.cli.CommandLineArgument.CLUSTER_SPECTRAL_NOISE;
+import static de.jplag.cli.CommandLineArgument.DEBUG;
+import static de.jplag.cli.CommandLineArgument.EXCLUDE_FILE;
+import static de.jplag.cli.CommandLineArgument.LANGUAGE;
+import static de.jplag.cli.CommandLineArgument.MIN_TOKEN_MATCH;
+import static de.jplag.cli.CommandLineArgument.NEW_DIRECTORY;
+import static de.jplag.cli.CommandLineArgument.OLD_DIRECTORY;
+import static de.jplag.cli.CommandLineArgument.RESULT_FOLDER;
+import static de.jplag.cli.CommandLineArgument.ROOT_DIRECTORY;
+import static de.jplag.cli.CommandLineArgument.SHOWN_COMPARISONS;
+import static de.jplag.cli.CommandLineArgument.SIMILARITY_THRESHOLD;
+import static de.jplag.cli.CommandLineArgument.SUBDIRECTORY;
+import static de.jplag.cli.CommandLineArgument.SUFFIXES;
 
 import java.io.File;
 import java.security.SecureRandom;
@@ -45,10 +45,12 @@ import org.slf4j.ILoggerFactory;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
+import de.jplag.JPlag;
+import de.jplag.JPlagResult;
+import de.jplag.cli.logger.CollectedLoggerFactory;
 import de.jplag.clustering.ClusteringOptions;
 import de.jplag.clustering.Preprocessing;
 import de.jplag.exceptions.ExitException;
-import de.jplag.logger.CollectedLoggerFactory;
 import de.jplag.options.JPlagOptions;
 import de.jplag.reporting.reportobject.ReportObjectFactory;
 

+ 1 - 1
cli/src/main/java/de/jplag/CliGroupHelper.java → cli/src/main/java/de/jplag/cli/CliGroupHelper.java

@@ -1,4 +1,4 @@
-package de.jplag;
+package de.jplag.cli;
 
 import java.util.HashMap;
 import java.util.Map;

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

@@ -1,7 +1,7 @@
-package de.jplag;
+package de.jplag.cli;
 
-import static de.jplag.CLI.ADVANCED_GROUP;
-import static de.jplag.CLI.CLUSTERING_GROUP_NAME;
+import static de.jplag.cli.CLI.ADVANCED_GROUP;
+import static de.jplag.cli.CLI.CLUSTERING_GROUP_NAME;
 import static de.jplag.options.JPlagOptions.DEFAULT_SHOWN_COMPARISONS;
 import static de.jplag.options.JPlagOptions.DEFAULT_SIMILARITY_THRESHOLD;
 import static net.sourceforge.argparse4j.impl.Arguments.append;
@@ -20,6 +20,9 @@ import net.sourceforge.argparse4j.inf.ArgumentParser;
 import net.sourceforge.argparse4j.inf.FeatureControl;
 import net.sourceforge.argparse4j.inf.Namespace;
 
+import de.jplag.Language;
+import de.jplag.Messages;
+import de.jplag.NumberOfArgumentValues;
 import de.jplag.clustering.ClusteringAlgorithm;
 import de.jplag.clustering.ClusteringOptions;
 import de.jplag.clustering.algorithm.InterClusterSimilarity;

+ 3 - 1
language-api/src/main/java/de/jplag/LanguageLoader.java → cli/src/main/java/de/jplag/cli/LanguageLoader.java

@@ -1,4 +1,4 @@
-package de.jplag;
+package de.jplag.cli;
 
 import java.util.Collections;
 import java.util.Map;
@@ -11,6 +11,8 @@ import java.util.TreeSet;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
+import de.jplag.Language;
+
 /**
  * This class contains methods to load {@link Language Languages}.
  * @author Dominik Fuchss

+ 1 - 1
cli/src/main/java/de/jplag/logger/CollectedLogger.java → cli/src/main/java/de/jplag/cli/logger/CollectedLogger.java

@@ -1,4 +1,4 @@
-package de.jplag.logger;
+package de.jplag.cli.logger;
 
 import java.io.PrintStream;
 import java.io.Serial;

+ 1 - 1
cli/src/main/java/de/jplag/logger/CollectedLoggerFactory.java → cli/src/main/java/de/jplag/cli/logger/CollectedLoggerFactory.java

@@ -1,4 +1,4 @@
-package de.jplag.logger;
+package de.jplag.cli.logger;
 
 import java.util.ArrayList;
 import java.util.List;

+ 1 - 1
cli/src/main/java/de/jplag/logger/CollectedLoggerServiceProvider.java → cli/src/main/java/de/jplag/cli/logger/CollectedLoggerServiceProvider.java

@@ -1,4 +1,4 @@
-package de.jplag.logger;
+package de.jplag.cli.logger;
 
 import org.kohsuke.MetaInfServices;
 import org.slf4j.ILoggerFactory;

+ 1 - 1
cli/src/main/java/de/jplag/logger/Triple.java → cli/src/main/java/de/jplag/cli/logger/Triple.java

@@ -1,4 +1,4 @@
-package de.jplag.logger;
+package de.jplag.cli.logger;
 
 public record Triple<A, B, C> (A first, B second, C third) {
 }

+ 0 - 2
cli/src/test/java/de/jplag/cli/BaseCodeOptionTest.java

@@ -5,8 +5,6 @@ import static org.junit.jupiter.api.Assertions.assertNull;
 
 import org.junit.jupiter.api.Test;
 
-import de.jplag.CommandLineArgument;
-
 class BaseCodeOptionTest extends CommandLineInterfaceTest {
 
     private static final String NAME = "BaseCodeName";

+ 0 - 1
cli/src/test/java/de/jplag/cli/ClusteringTest.java

@@ -4,7 +4,6 @@ import static org.junit.jupiter.api.Assertions.assertEquals;
 
 import org.junit.jupiter.api.Test;
 
-import de.jplag.CommandLineArgument;
 import de.jplag.clustering.Preprocessing;
 
 class ClusteringTest extends CommandLineInterfaceTest {

+ 1 - 3
cli/src/test/java/de/jplag/cli/CommandLineInterfaceTest.java

@@ -1,14 +1,12 @@
 package de.jplag.cli;
 
-import static de.jplag.CommandLineArgument.ROOT_DIRECTORY;
+import static de.jplag.cli.CommandLineArgument.ROOT_DIRECTORY;
 import static java.util.stream.Collectors.toSet;
 
 import java.util.Arrays;
 
 import net.sourceforge.argparse4j.inf.Namespace;
 
-import de.jplag.CLI;
-import de.jplag.CommandLineArgument;
 import de.jplag.options.JPlagOptions;
 
 /**

+ 0 - 2
cli/src/test/java/de/jplag/cli/LanguageTest.java

@@ -9,9 +9,7 @@ import java.util.List;
 import org.junit.jupiter.api.Assertions;
 import org.junit.jupiter.api.Test;
 
-import de.jplag.CommandLineArgument;
 import de.jplag.Language;
-import de.jplag.LanguageLoader;
 
 class LanguageTest extends CommandLineInterfaceTest {
 

+ 0 - 2
cli/src/test/java/de/jplag/cli/MinTokenMatchTest.java

@@ -6,8 +6,6 @@ import static org.junit.jupiter.api.Assertions.assertNotNull;
 
 import org.junit.jupiter.api.Test;
 
-import de.jplag.CommandLineArgument;
-
 class MinTokenMatchTest extends CommandLineInterfaceTest {
 
     @Test

+ 0 - 1
cli/src/test/java/de/jplag/cli/SimiliarityThresholdTest.java

@@ -5,7 +5,6 @@ import static org.junit.jupiter.api.Assertions.assertEquals;
 
 import org.junit.jupiter.api.Test;
 
-import de.jplag.CommandLineArgument;
 import de.jplag.options.JPlagOptions;
 
 class SimiliarityThresholdTest extends CommandLineInterfaceTest {

+ 0 - 1
cli/src/test/java/de/jplag/cli/StoredMatchesTest.java

@@ -5,7 +5,6 @@ import static org.junit.jupiter.api.Assertions.assertEquals;
 
 import org.junit.jupiter.api.Test;
 
-import de.jplag.CommandLineArgument;
 import de.jplag.options.JPlagOptions;
 
 class StoredMatchesTest extends CommandLineInterfaceTest {

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

@@ -8,7 +8,6 @@ import java.util.function.Function;
 import java.util.stream.Collectors;
 
 import de.jplag.exceptions.ExitException;
-import de.jplag.java.Language;
 import de.jplag.options.JPlagOptions;
 
 public abstract class TestBase {
@@ -50,7 +49,7 @@ public abstract class TestBase {
             throws ExitException {
         var newFiles = newPaths.stream().map(path -> new File(path)).collect(Collectors.toSet());
         var oldFiles = oldPaths.stream().map(path -> new File(path)).collect(Collectors.toSet());
-        JPlagOptions options = new JPlagOptions(LanguageLoader.getLanguage(Language.IDENTIFIER).orElseThrow(), newFiles, oldFiles);
+        JPlagOptions options = new JPlagOptions(new de.jplag.java.Language(), newFiles, oldFiles);
         options = customization.apply(options);
         JPlag jplag = new JPlag(options);
         return jplag.run();

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

@@ -8,7 +8,6 @@ import org.junit.jupiter.api.Disabled;
 import org.junit.jupiter.api.Test;
 
 import de.jplag.JPlagResult;
-import de.jplag.LanguageLoader;
 import de.jplag.Submission;
 import de.jplag.TestBase;
 import de.jplag.TokenPrinter;
@@ -35,8 +34,7 @@ class TokenPrinterTest extends TestBase {
     @Disabled("Not a meaningful test, used for designing the token set")
     @Test
     void printCPPFiles() {
-        printSubmissions(
-                options -> options.withLanguageOption(LanguageLoader.getLanguage(LANGUAGE_CPP).orElseThrow()).withMinimumTokenMatch(MIN_TOKEN_MATCH));
+        printSubmissions(options -> options.withLanguageOption(new de.jplag.cpp.Language()).withMinimumTokenMatch(MIN_TOKEN_MATCH));
     }
 
     @Disabled("Not a meaningful test, used for designing the token set")
@@ -48,20 +46,19 @@ class TokenPrinterTest extends TestBase {
     @Disabled("Not a meaningful test, used for designing the token set")
     @Test
     void printRLangFiles() {
-        printSubmissions(
-                options -> options.withLanguageOption(LanguageLoader.getLanguage(LANGUAGE_R).orElseThrow()).withMinimumTokenMatch(MIN_TOKEN_MATCH));
+        printSubmissions(options -> options.withLanguageOption(new de.jplag.rlang.Language()).withMinimumTokenMatch(MIN_TOKEN_MATCH));
     }
 
     @Disabled("Not a meaningful test, used for designing the token set")
     @Test
     void printGoFiles() {
-        printSubmissions(options -> options.withLanguageOption(LanguageLoader.getLanguage(LANGUAGE_GO).orElseThrow()));
+        printSubmissions(options -> options.withLanguageOption(new de.jplag.golang.Language()));
     }
 
     @Disabled("Not a meaningful test, used for designing the token set")
     @Test
     void printKotlinFiles() {
-        printSubmissions(options -> options.withLanguageOption(LanguageLoader.getLanguage(LANGUAGE_KOTLIN).orElseThrow()));
+        printSubmissions(options -> options.withLanguageOption(new de.jplag.kotlin.Language()));
     }
 
     private void printSubmissions(Function<JPlagOptions, JPlagOptions> optionsCustomization) {

+ 1 - 1
endtoend-testing/pom.xml

@@ -16,7 +16,7 @@
         </dependency>
         <dependency>
             <groupId>de.jplag</groupId>
-            <artifactId>java</artifactId>
+            <artifactId>cli</artifactId>
             <version>${revision}</version>
             <scope>test</scope>
         </dependency>

+ 1 - 1
endtoend-testing/src/test/java/de/jplag/endtoend/EndToEndGeneratorTest.java

@@ -20,7 +20,7 @@ import de.jplag.JPlag;
 import de.jplag.JPlagComparison;
 import de.jplag.JPlagResult;
 import de.jplag.Language;
-import de.jplag.LanguageLoader;
+import de.jplag.cli.LanguageLoader;
 import de.jplag.endtoend.constants.TestDirectoryConstants;
 import de.jplag.endtoend.helper.FileHelper;
 import de.jplag.endtoend.helper.TestSuiteHelper;

+ 1 - 1
endtoend-testing/src/test/java/de/jplag/endtoend/EndToEndSuiteTest.java

@@ -24,7 +24,7 @@ import de.jplag.JPlag;
 import de.jplag.JPlagComparison;
 import de.jplag.JPlagResult;
 import de.jplag.Language;
-import de.jplag.LanguageLoader;
+import de.jplag.cli.LanguageLoader;
 import de.jplag.endtoend.constants.TestDirectoryConstants;
 import de.jplag.endtoend.helper.FileHelper;
 import de.jplag.endtoend.helper.TestSuiteHelper;