Просмотр исходного кода

Replace usages of Vector (#188)

Replace legacy usages of Vector with corresponding usages of ArrayList. Related to #119.
Timur Sağlam 5 лет назад
Родитель
Сommit
1914ce3514

+ 12 - 11
jplag/src/main/java/jplag/JPlag.java

@@ -9,10 +9,11 @@ import java.io.FileReader;
 import java.io.IOException;
 import java.io.IOException;
 import java.lang.reflect.Constructor;
 import java.lang.reflect.Constructor;
 import java.lang.reflect.InvocationTargetException;
 import java.lang.reflect.InvocationTargetException;
+import java.util.ArrayList;
+
 import java.util.Arrays;
 import java.util.Arrays;
 import java.util.HashSet;
 import java.util.HashSet;
 import java.util.Iterator;
 import java.util.Iterator;
-import java.util.Vector;
 import java.util.stream.Collectors;
 import java.util.stream.Collectors;
 
 
 import jplag.options.JPlagOptions;
 import jplag.options.JPlagOptions;
@@ -40,7 +41,7 @@ public class JPlag implements ProgramI {
     // ERROR REPORTING:
     // ERROR REPORTING:
     private String currentSubmissionName = "<Unknown submission>"; // TODO PB: This should be moved to parseSubmissions(...)
     private String currentSubmissionName = "<Unknown submission>"; // TODO PB: This should be moved to parseSubmissions(...)
     private int errors = 0;
     private int errors = 0;
-    private Vector<String> errorVector = new Vector<>(); // Vector of errors that occurred during the execution of the program.
+    private ArrayList<String> errorVector = new ArrayList<>(); // Vector of errors that occurred during the execution of the program.
 
 
     /**
     /**
      * Creates and initializes a JPlag instance, parameterized by a set of options.
      * Creates and initializes a JPlag instance, parameterized by a set of options.
@@ -71,7 +72,7 @@ public class JPlag implements ProgramI {
         readExclusionFile(); // This file contains all files names which are excluded
         readExclusionFile(); // This file contains all files names which are excluded
 
 
         // 2. Parse and validate submissions:
         // 2. Parse and validate submissions:
-        Vector<Submission> submissions = findSubmissions(rootDir);
+        ArrayList<Submission> submissions = findSubmissions(rootDir);
         parseAllSubmissions(submissions, baseCodeSubmission);
         parseAllSubmissions(submissions, baseCodeSubmission);
         submissions = filterValidSubmissions(submissions);
         submissions = filterValidSubmissions(submissions);
         if (submissions.size() < 2) {
         if (submissions.size() < 2) {
@@ -178,14 +179,14 @@ public class JPlag implements ProgramI {
         System.out.println("Basecode directory \"" + baseCodePath + "\" will be used");
         System.out.println("Basecode directory \"" + baseCodePath + "\" will be used");
     }
     }
 
 
-    private Vector<Submission> filterValidSubmissions(Vector<Submission> submissions) {
-        return submissions.stream().filter(submission -> !submission.hasErrors()).collect(Collectors.toCollection(Vector::new));
+    private ArrayList<Submission> filterValidSubmissions(ArrayList<Submission> submissions) {
+        return submissions.stream().filter(submission -> !submission.hasErrors()).collect(Collectors.toCollection(ArrayList::new));
     }
     }
 
 
     /**
     /**
      * Find all submissions in the given root directory.
      * Find all submissions in the given root directory.
      */
      */
-    private Vector<Submission> findSubmissions(File rootDir) throws ExitException {
+    private ArrayList<Submission> findSubmissions(File rootDir) throws ExitException {
         String[] fileNamesInRootDir;
         String[] fileNamesInRootDir;
 
 
         try {
         try {
@@ -239,8 +240,8 @@ public class JPlag implements ProgramI {
         System.out.println("Initialized language " + this.getLanguage().name());
         System.out.println("Initialized language " + this.getLanguage().name());
     }
     }
 
 
-    private Vector<Submission> mapFileNamesInRootDirToSubmissions(String[] fileNames, File rootDir) throws ExitException {
-        Vector<Submission> submissions = new Vector<>();
+    private ArrayList<Submission> mapFileNamesInRootDirToSubmissions(String[] fileNames, File rootDir) throws ExitException {
+        ArrayList<Submission> submissions = new ArrayList<>();
 
 
         for (String fileName : fileNames) {
         for (String fileName : fileNames) {
             File submissionFile = new File(rootDir, fileName);
             File submissionFile = new File(rootDir, fileName);
@@ -274,7 +275,7 @@ public class JPlag implements ProgramI {
             if (options.hasBaseCode() && options.getBaseCodeSubmissionName().equals(fileName)) {
             if (options.hasBaseCode() && options.getBaseCodeSubmissionName().equals(fileName)) {
                 baseCodeSubmission = submission;
                 baseCodeSubmission = submission;
             } else {
             } else {
-                submissions.addElement(submission);
+                submissions.add(submission);
             }
             }
         }
         }
 
 
@@ -284,7 +285,7 @@ public class JPlag implements ProgramI {
     /**
     /**
      * TODO PB: Find a better way to separate parseSubmissions(...) and parseBaseCodeSubmission(...)
      * TODO PB: Find a better way to separate parseSubmissions(...) and parseBaseCodeSubmission(...)
      */
      */
-    private void parseAllSubmissions(Vector<Submission> submissions, Submission baseCodeSubmission) throws ExitException {
+    private void parseAllSubmissions(ArrayList<Submission> submissions, Submission baseCodeSubmission) throws ExitException {
         try {
         try {
             parseSubmissions(submissions);
             parseSubmissions(submissions);
             parseBaseCodeSubmission(baseCodeSubmission);
             parseBaseCodeSubmission(baseCodeSubmission);
@@ -335,7 +336,7 @@ public class JPlag implements ProgramI {
     /**
     /**
      * Parse all given submissions.
      * Parse all given submissions.
      */
      */
-    private void parseSubmissions(Vector<Submission> submissions) {
+    private void parseSubmissions(ArrayList<Submission> submissions) {
         if (submissions == null) {
         if (submissions == null) {
             System.out.println("Nothing to parse!");
             System.out.println("Nothing to parse!");
             return;
             return;

+ 6 - 5
jplag/src/main/java/jplag/Submission.java

@@ -14,7 +14,8 @@ import java.text.DecimalFormat;
 import java.util.ArrayList;
 import java.util.ArrayList;
 import java.util.Collection;
 import java.util.Collection;
 import java.util.Collections;
 import java.util.Collections;
-import java.util.Vector;
+
+import jplag.options.JPlagOptions;
 
 
 import jplag.options.JPlagOptions;
 import jplag.options.JPlagOptions;
 
 
@@ -115,10 +116,10 @@ public class Submission implements Comparable<Submission> {
     public String[][] readFiles(String[] files) throws jplag.ExitException {
     public String[][] readFiles(String[] files) throws jplag.ExitException {
         String[][] result = new String[files.length][];
         String[][] result = new String[files.length][];
         String help;
         String help;
-        Vector<String> text = new Vector<>();
+        ArrayList<String> text = new ArrayList<>();
 
 
         for (int i = 0; i < files.length; i++) {
         for (int i = 0; i < files.length; i++) {
-            text.removeAllElements();
+            text.clear();
 
 
             try {
             try {
                 FileInputStream fileInputStream = new FileInputStream(new File(submissionFile, files[i]));
                 FileInputStream fileInputStream = new FileInputStream(new File(submissionFile, files[i]));
@@ -130,7 +131,7 @@ public class Submission implements Comparable<Submission> {
                     help = help.replaceAll("<", "&lt;");
                     help = help.replaceAll("<", "&lt;");
                     help = help.replaceAll(">", "&gt;");
                     help = help.replaceAll(">", "&gt;");
                     help = help.replaceAll("\"", "&quot;");
                     help = help.replaceAll("\"", "&quot;");
-                    text.addElement(help);
+                    text.add(help);
                 }
                 }
 
 
                 in.close();
                 in.close();
@@ -143,7 +144,7 @@ public class Submission implements Comparable<Submission> {
             }
             }
 
 
             result[i] = new String[text.size()];
             result[i] = new String[text.size()];
-            text.copyInto(result[i]);
+            text.toArray(result[i]);
         }
         }
 
 
         return result;
         return result;

+ 11 - 11
jplag/src/main/java/jplag/reporting/Report.java

@@ -8,13 +8,13 @@ import java.io.FileWriter;
 import java.io.IOException;
 import java.io.IOException;
 import java.net.URL;
 import java.net.URL;
 import java.text.SimpleDateFormat;
 import java.text.SimpleDateFormat;
+import java.util.ArrayList;
 import java.util.Comparator;
 import java.util.Comparator;
 import java.util.Date;
 import java.util.Date;
 import java.util.HashMap;
 import java.util.HashMap;
 import java.util.List;
 import java.util.List;
 import java.util.Map;
 import java.util.Map;
 import java.util.TreeMap;
 import java.util.TreeMap;
-import java.util.Vector;
 
 
 import jplag.ExitException;
 import jplag.ExitException;
 import jplag.JPlagComparison;
 import jplag.JPlagComparison;
@@ -329,41 +329,41 @@ public class Report { // Mostly legacy code with some minor improvements.
             String tmp = text[markup.fileIndex][markup.lineIndex];
             String tmp = text[markup.fileIndex][markup.lineIndex];
             // is there any &quot;, &amp;, &gt; or &lt; in the String?
             // is there any &quot;, &amp;, &gt; or &lt; in the String?
             if (tmp.indexOf('&') >= 0) {
             if (tmp.indexOf('&') >= 0) {
-                Vector<String> tmpV = new Vector<>();
+                ArrayList<String> tmpV = new ArrayList<>();
                 // convert the string into a vector
                 // convert the string into a vector
                 int strLength = tmp.length();
                 int strLength = tmp.length();
                 for (int k = 0; k < strLength; k++) {
                 for (int k = 0; k < strLength; k++) {
                     if (tmp.charAt(k) != '&') {
                     if (tmp.charAt(k) != '&') {
-                        tmpV.addElement(tmp.charAt(k) + "");
+                        tmpV.add(tmp.charAt(k) + "");
                     } else { // put &quot;, &amp;, &gt; and &lt; into one element
                     } else { // put &quot;, &amp;, &gt; and &lt; into one element
                         String tmpSub = tmp.substring(k);
                         String tmpSub = tmp.substring(k);
                         if (tmpSub.startsWith("&quot;")) {
                         if (tmpSub.startsWith("&quot;")) {
-                            tmpV.addElement("&quot;");
+                            tmpV.add("&quot;");
                             k = k + 5;
                             k = k + 5;
                         } else if (tmpSub.startsWith("&amp;")) {
                         } else if (tmpSub.startsWith("&amp;")) {
-                            tmpV.addElement("&amp;");
+                            tmpV.add("&amp;");
                             k = k + 4;
                             k = k + 4;
                         } else if (tmpSub.startsWith("&lt;")) {
                         } else if (tmpSub.startsWith("&lt;")) {
-                            tmpV.addElement("&lt;");
+                            tmpV.add("&lt;");
                             k = k + 3;
                             k = k + 3;
                         } else if (tmpSub.startsWith("&gt;")) {
                         } else if (tmpSub.startsWith("&gt;")) {
-                            tmpV.addElement("&gt;");
+                            tmpV.add("&gt;");
                             k = k + 3;
                             k = k + 3;
                         } else {
                         } else {
-                            tmpV.addElement(tmp.charAt(k) + "");
+                            tmpV.add(tmp.charAt(k) + "");
                         }
                         }
                     }
                     }
                 }
                 }
                 if (markup.column <= tmpV.size()) {
                 if (markup.column <= tmpV.size()) {
-                    tmpV.insertElementAt(markup.text, markup.column);
+                    tmpV.add(markup.column, markup.text);
                 } else {
                 } else {
-                    tmpV.addElement(markup.text);
+                    tmpV.add(markup.text);
                 }
                 }
 
 
                 StringBuilder tmpVStr = new StringBuilder();
                 StringBuilder tmpVStr = new StringBuilder();
                 // reconvert the Vector into a String
                 // reconvert the Vector into a String
                 for (int k = 0; k < tmpV.size(); k++) {
                 for (int k = 0; k < tmpV.size(); k++) {
-                    tmpVStr.append(tmpV.elementAt(k));
+                    tmpVStr.append(tmpV.get(k));
                 }
                 }
                 text[markup.fileIndex][markup.lineIndex] = tmpVStr.toString();
                 text[markup.fileIndex][markup.lineIndex] = tmpVStr.toString();
             } else {
             } else {

+ 2 - 2
jplag/src/main/java/jplag/strategy/AbstractComparisonStrategy.java

@@ -1,8 +1,8 @@
 package jplag.strategy;
 package jplag.strategy;
 
 
+import java.util.ArrayList;
 import java.util.Hashtable;
 import java.util.Hashtable;
 import java.util.Optional;
 import java.util.Optional;
-import java.util.Vector;
 
 
 import jplag.GreedyStringTiling;
 import jplag.GreedyStringTiling;
 import jplag.JPlagComparison;
 import jplag.JPlagComparison;
@@ -24,7 +24,7 @@ public abstract class AbstractComparisonStrategy implements ComparisonStrategy {
         this.options = options;
         this.options = options;
     }
     }
 
 
-    protected void compareSubmissionsToBaseCode(Vector<Submission> submissions, Submission baseCodeSubmission) {
+    protected void compareSubmissionsToBaseCode(ArrayList<Submission> submissions, Submission baseCodeSubmission) {
         for (Submission currentSubmission : submissions) {
         for (Submission currentSubmission : submissions) {
             JPlagComparison baseCodeMatch = greedyStringTiling.compareWithBaseCode(currentSubmission, baseCodeSubmission);
             JPlagComparison baseCodeMatch = greedyStringTiling.compareWithBaseCode(currentSubmission, baseCodeSubmission);
             baseCodeMatches.put(currentSubmission.getName(), baseCodeMatch);
             baseCodeMatches.put(currentSubmission.getName(), baseCodeMatch);

+ 2 - 2
jplag/src/main/java/jplag/strategy/ComparisonStrategy.java

@@ -1,6 +1,6 @@
 package jplag.strategy;
 package jplag.strategy;
 
 
-import java.util.Vector;
+import java.util.ArrayList;
 
 
 import jplag.JPlagResult;
 import jplag.JPlagResult;
 import jplag.Submission;
 import jplag.Submission;
@@ -16,5 +16,5 @@ public interface ComparisonStrategy {
      * @param baseCodeSubmission is the base code on which each submission is based on.
      * @param baseCodeSubmission is the base code on which each submission is based on.
      * @return the comparison results.
      * @return the comparison results.
      */
      */
-    JPlagResult compareSubmissions(Vector<Submission> submissions, Submission baseCodeSubmission);
+    JPlagResult compareSubmissions(ArrayList<Submission> submissions, Submission baseCodeSubmission);
 }
 }

+ 3 - 4
jplag/src/main/java/jplag/strategy/NormalComparisonStrategy.java

@@ -2,7 +2,6 @@ package jplag.strategy;
 
 
 import java.util.ArrayList;
 import java.util.ArrayList;
 import java.util.List;
 import java.util.List;
-import java.util.Vector;
 
 
 import jplag.GreedyStringTiling;
 import jplag.GreedyStringTiling;
 import jplag.JPlagComparison;
 import jplag.JPlagComparison;
@@ -17,7 +16,7 @@ public class NormalComparisonStrategy extends AbstractComparisonStrategy {
     }
     }
 
 
     @Override
     @Override
-    public JPlagResult compareSubmissions(Vector<Submission> submissions, Submission baseCodeSubmission) {
+    public JPlagResult compareSubmissions(ArrayList<Submission> submissions, Submission baseCodeSubmission) {
         boolean withBaseCode = baseCodeSubmission != null;
         boolean withBaseCode = baseCodeSubmission != null;
         if (withBaseCode) {
         if (withBaseCode) {
             compareSubmissionsToBaseCode(submissions, baseCodeSubmission);
             compareSubmissionsToBaseCode(submissions, baseCodeSubmission);
@@ -29,12 +28,12 @@ public class NormalComparisonStrategy extends AbstractComparisonStrategy {
         List<JPlagComparison> comparisons = new ArrayList<>();
         List<JPlagComparison> comparisons = new ArrayList<>();
 
 
         for (i = 0; i < (numberOfSubmissions - 1); i++) {
         for (i = 0; i < (numberOfSubmissions - 1); i++) {
-            first = submissions.elementAt(i);
+            first = submissions.get(i);
             if (first.getTokenList() == null) {
             if (first.getTokenList() == null) {
                 continue;
                 continue;
             }
             }
             for (j = (i + 1); j < numberOfSubmissions; j++) {
             for (j = (i + 1); j < numberOfSubmissions; j++) {
-                second = submissions.elementAt(j);
+                second = submissions.get(j);
                 if (second.getTokenList() == null) {
                 if (second.getTokenList() == null) {
                     continue;
                     continue;
                 }
                 }

+ 4 - 5
jplag/src/main/java/jplag/strategy/ParallelComparisonStrategy.java

@@ -3,7 +3,6 @@ package jplag.strategy;
 import java.util.ArrayList;
 import java.util.ArrayList;
 import java.util.Collections;
 import java.util.Collections;
 import java.util.List;
 import java.util.List;
-import java.util.Vector;
 import java.util.concurrent.ConcurrentHashMap;
 import java.util.concurrent.ConcurrentHashMap;
 import java.util.concurrent.ConcurrentMap;
 import java.util.concurrent.ConcurrentMap;
 import java.util.concurrent.ExecutorService;
 import java.util.concurrent.ExecutorService;
@@ -36,7 +35,7 @@ public class ParallelComparisonStrategy extends AbstractComparisonStrategy {
     }
     }
 
 
     @Override
     @Override
-    public JPlagResult compareSubmissions(Vector<Submission> submissions, Submission baseCodeSubmission) {
+    public JPlagResult compareSubmissions(ArrayList<Submission> submissions, Submission baseCodeSubmission) {
         // Initialize:
         // Initialize:
         long timeBeforeStartInMillis = System.currentTimeMillis();
         long timeBeforeStartInMillis = System.currentTimeMillis();
         boolean withBaseCode = baseCodeSubmission != null;
         boolean withBaseCode = baseCodeSubmission != null;
@@ -73,13 +72,13 @@ public class ParallelComparisonStrategy extends AbstractComparisonStrategy {
     /**
     /**
      * @return a list of all submission tuples to be processed.
      * @return a list of all submission tuples to be processed.
      */
      */
-    private List<SubmissionTuple> buildComparisonTuples(Vector<Submission> submissions) {
+    private List<SubmissionTuple> buildComparisonTuples(ArrayList<Submission> submissions) {
         List<SubmissionTuple> tuples = new ArrayList<>();
         List<SubmissionTuple> tuples = new ArrayList<>();
         for (int i = 0; i < (submissions.size() - 1); i++) {
         for (int i = 0; i < (submissions.size() - 1); i++) {
-            Submission first = submissions.elementAt(i);
+            Submission first = submissions.get(i);
             if (first.getTokenList() != null) {
             if (first.getTokenList() != null) {
                 for (int j = (i + 1); j < submissions.size(); j++) {
                 for (int j = (i + 1); j < submissions.size(); j++) {
-                    Submission second = submissions.elementAt(j);
+                    Submission second = submissions.get(j);
                     if (second.getTokenList() != null) {
                     if (second.getTokenList() != null) {
                         tuples.add(new SubmissionTuple(first, second));
                         tuples.add(new SubmissionTuple(first, second));
                     }
                     }