diff --git a/pom.xml b/pom.xml index 75cff393c3..aa0adec93a 100644 --- a/pom.xml +++ b/pom.xml @@ -31,7 +31,6 @@ 5.8.2 1.15 1.0 - 2.11.0 5.0.1 8.0.30 @@ -47,11 +46,6 @@ jcip-annotations ${jcip-annotations.version} - - commons-io - commons-io - ${commons-io.version} - diff --git a/src/main/java/tools/mapletools/QuestItemFetcher.java b/src/main/java/tools/mapletools/QuestItemFetcher.java index 440e96fd26..130ba51de9 100644 --- a/src/main/java/tools/mapletools/QuestItemFetcher.java +++ b/src/main/java/tools/mapletools/QuestItemFetcher.java @@ -1,13 +1,14 @@ package tools.mapletools; -import org.apache.commons.io.FileUtils; import provider.wz.WZFiles; import server.ItemInformationProvider; import tools.DatabaseConnection; import tools.Pair; -import java.io.*; -import java.nio.charset.StandardCharsets; +import java.io.BufferedReader; +import java.io.FileNotFoundException; +import java.io.IOException; +import java.io.PrintWriter; import java.nio.file.Files; import java.nio.file.Path; import java.sql.Connection; @@ -19,7 +20,7 @@ import java.util.*; /** * @author RonanLana *

- * This application haves 2 objectives: fetch missing drop data relevant to quests, + * This application has 2 objectives: fetch missing drop data relevant to quests, * and update the questid from items that are labeled as "Quest Item" on the DB. *

* Running it should generate a report file under "output" folder with the search results. @@ -28,6 +29,7 @@ import java.util.*; */ public class QuestItemFetcher { private static final Path OUTPUT_FILE = ToolConstants.getOutputFile("quest_report.txt"); + private static final Collection RELEVANT_FILE_EXTENSIONS = Set.of(".sql", ".js", ".txt", ".java"); private static final int INITIAL_STRING_LENGTH = 50; private static final int INITIAL_LENGTH = 200; private static final boolean DISPLAY_EXTRA_INFO = true; // display items with zero quantity over the quest act WZ @@ -335,22 +337,28 @@ public class QuestItemFetcher { } } - private static void filterDirectorySearchMatchingData(String path, List> itemsWithQuest) { - Iterator iter = FileUtils.iterateFiles(new File(path), new String[]{"sql", "js", "txt", "java"}, true); - - while (iter.hasNext()) { - File file = iter.next(); - fileSearchMatchingData(file, itemsWithQuest); + private static void filterDirectorySearchMatchingData(String filePath, List> itemsWithQuest) { + try { + Files.walk(Path.of(filePath)) + .filter(QuestItemFetcher::isRelevantFile) + .forEach(path -> fileSearchMatchingData(path, itemsWithQuest)); + } catch (IOException e) { + throw new RuntimeException("Error during recursive file walk", e); } } + private static boolean isRelevantFile(Path file) { + String fileName = file.getFileName().toString(); + return RELEVANT_FILE_EXTENSIONS.stream().anyMatch(fileName::endsWith); + } + private static boolean foundMatchingDataOnFile(String fileContent, String searchStr) { return fileContent.contains(searchStr); } - private static void fileSearchMatchingData(File file, List> itemsWithQuest) { + private static void fileSearchMatchingData(Path file, List> itemsWithQuest) { try { - String fileContent = FileUtils.readFileToString(file, StandardCharsets.UTF_8); + String fileContent = Files.readString(file); List> copyItemsWithQuest = new ArrayList<>(itemsWithQuest); for (Pair iq : copyItemsWithQuest) { @@ -359,7 +367,7 @@ public class QuestItemFetcher { } } } catch (IOException ioe) { - System.out.println("Failed to read file: " + file.getAbsolutePath()); + System.out.println("Failed to read file: " + file.getFileName().toAbsolutePath().toString()); ioe.printStackTrace(); } } @@ -374,7 +382,7 @@ public class QuestItemFetcher { List> list = new ArrayList<>(map.size()); list.addAll(map.entrySet()); - list.sort((o1, o2) -> o1.getKey() - o2.getKey()); + list.sort(Comparator.comparingInt(Map.Entry::getKey)); return list; } @@ -383,7 +391,7 @@ public class QuestItemFetcher { List> list = new ArrayList<>(map.size()); list.addAll(map.entrySet()); - list.sort((o1, o2) -> o1.getKey() - o2.getKey()); + list.sort(Comparator.comparingInt(Map.Entry::getKey)); return list; } @@ -394,12 +402,12 @@ public class QuestItemFetcher { List il = new ArrayList<>(2); il.addAll(e.getValue()); - il.sort((o1, o2) -> o1 - o2); + il.sort(Comparator.comparingInt(o -> o)); list.add(new Pair<>(e.getKey(), il)); } - list.sort((o1, o2) -> o1.getLeft() - o2.getLeft()); + list.sort(Comparator.comparingInt(Pair::getLeft)); return list; } @@ -446,7 +454,7 @@ public class QuestItemFetcher { System.out.println("Filtering drops on project files..."); // finally, filter whether this item is mentioned on the source code or not. filterDirectorySearchMatchingData("scripts", itemsWithQuest); - filterDirectorySearchMatchingData("sql", itemsWithQuest); + filterDirectorySearchMatchingData("database/sql", itemsWithQuest); filterDirectorySearchMatchingData("src", itemsWithQuest); System.out.println("Reporting results...");