diff --git a/.gitignore b/.gitignore
index 96502955e0..580bdf21a1 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,4 +1,4 @@
-/logs/**
+/logs/**
.idea/
*.iml
/target
@@ -7,6 +7,12 @@
/build/
/dist/
/nbproject/
-
+/.settings
/out
*.onetoc2
+
+# Eclipse m2e generated files
+# Eclipse Core
+.project
+# JDT-specific (Eclipse Java Development Tools)
+.classpath
diff --git a/handbook/Use.txt b/handbook/Use.txt
index 37f96fee60..3cc5d46e54 100644
--- a/handbook/Use.txt
+++ b/handbook/Use.txt
@@ -1,4 +1,4 @@
-2000000 - Red Potion - A potion made out of red herbs.\nRecovers 50 HP.
+2000000 - Red Potion - A potion made out of red herbs.\nRecovers 50 HP.
2000001 - Orange Potion - A concentrated potion made out of red herbs.\nRecovers 150 HP.
2000002 - White Potion - A highly-concentrated potion made out of red herbs.\nRecovers 300 HP.
2000003 - Blue Potion - A potion made out of blue herbs.\nRecovers 100 MP.
diff --git a/pom.xml b/pom.xml
index 2d53675e85..bb3aac3675 100644
--- a/pom.xml
+++ b/pom.xml
@@ -25,15 +25,15 @@
1.7.36
- 2.17.1
- 21.1.0
- 4.1.74.Final
+ 2.18.0
+ 22.2.0
+ 4.1.79.Final
5.8.2
1.15
1.0
2.11.0
5.0.1
- 8.0.28
+ 8.0.30
diff --git a/src/main/java/client/Stat.java b/src/main/java/client/Stat.java
index 940d5b139b..cd0ee18e42 100644
--- a/src/main/java/client/Stat.java
+++ b/src/main/java/client/Stat.java
@@ -76,44 +76,10 @@ public enum Stat {
}
public static Stat getByString(String type) {
- if (type.equals("SKIN")) {
- return SKIN;
- } else if (type.equals("FACE")) {
- return FACE;
- } else if (type.equals("HAIR")) {
- return HAIR;
- } else if (type.equals("LEVEL")) {
- return LEVEL;
- } else if (type.equals("JOB")) {
- return JOB;
- } else if (type.equals("STR")) {
- return STR;
- } else if (type.equals("DEX")) {
- return DEX;
- } else if (type.equals("INT")) {
- return INT;
- } else if (type.equals("LUK")) {
- return LUK;
- } else if (type.equals("HP")) {
- return HP;
- } else if (type.equals("MAXHP")) {
- return MAXHP;
- } else if (type.equals("MP")) {
- return MP;
- } else if (type.equals("MAXMP")) {
- return MAXMP;
- } else if (type.equals("AVAILABLEAP")) {
- return AVAILABLEAP;
- } else if (type.equals("AVAILABLESP")) {
- return AVAILABLESP;
- } else if (type.equals("EXP")) {
- return EXP;
- } else if (type.equals("FAME")) {
- return FAME;
- } else if (type.equals("MESO")) {
- return MESO;
- } else if (type.equals("PET")) {
- return PET;
+ for (Stat stat : Stat.values()) {
+ if (stat.name().equals(type)) {
+ return stat;
+ }
}
return null;
}
diff --git a/src/main/java/net/server/channel/Channel.java b/src/main/java/net/server/channel/Channel.java
index 0343dc5da7..feb22becb8 100644
--- a/src/main/java/net/server/channel/Channel.java
+++ b/src/main/java/net/server/channel/Channel.java
@@ -50,7 +50,11 @@ import server.maps.*;
import tools.PacketCreator;
import tools.Pair;
-import java.io.File;
+import java.io.IOException;
+import java.nio.file.DirectoryStream;
+import java.nio.file.Files;
+import java.nio.file.Path;
+import java.nio.file.Paths;
import java.util.*;
import java.util.Map.Entry;
import java.util.concurrent.ScheduledFuture;
@@ -448,8 +452,14 @@ public final class Channel {
private static String[] getEvents() {
List events = new ArrayList<>();
- for (File file : new File("scripts/event").listFiles()) {
- events.add(file.getName().substring(0, file.getName().length() - 3));
+ try (DirectoryStream stream = Files.newDirectoryStream(Paths.get("scripts/event"))) {
+ for (Path path : stream) {
+ String fileName = path.getFileName().toString();
+ events.add(fileName.substring(0, fileName.length() - 3));
+ }
+ } catch (IOException e) {
+ log.warn("Unable to load events !");
+ e.printStackTrace();
}
return events.toArray(new String[0]);
}
diff --git a/src/main/java/provider/DataProviderFactory.java b/src/main/java/provider/DataProviderFactory.java
index dc15004cb0..a90751a83d 100644
--- a/src/main/java/provider/DataProviderFactory.java
+++ b/src/main/java/provider/DataProviderFactory.java
@@ -25,9 +25,10 @@ import provider.wz.WZFiles;
import provider.wz.XMLWZFile;
import java.io.File;
+import java.nio.file.Path;
public class DataProviderFactory {
- private static DataProvider getWZ(File in) {
+ private static DataProvider getWZ(Path in) {
return new XMLWZFile(in);
}
diff --git a/src/main/java/provider/wz/WZFiles.java b/src/main/java/provider/wz/WZFiles.java
index f563941118..783785e85e 100644
--- a/src/main/java/provider/wz/WZFiles.java
+++ b/src/main/java/provider/wz/WZFiles.java
@@ -1,6 +1,8 @@
package provider.wz;
import java.io.File;
+import java.nio.file.Path;
+import java.nio.file.Paths;
public enum WZFiles {
QUEST("Quest"),
@@ -25,17 +27,16 @@ public enum WZFiles {
this.fileName = name + ".wz";
}
- public File getFile() {
- return new File(DIRECTORY, fileName);
+ public Path getFile() {
+ return Paths.get(DIRECTORY).resolve(fileName);
}
public String getFilePath() {
- return getFile().getPath();
+ return getFile().toString();
}
private static String getWzDirectory() {
- // Either provide a custom directory path through the "wz-path" property when launching the .jar,
- // or don't provide one to use the default "wz" directory
+ // Either provide a custom directory path through the "wz-path" property when launching the .jar, or don't provide one to use the default "wz" directory
String propertyPath = System.getProperty("wz-path");
if (propertyPath != null && new File(propertyPath).isDirectory()) {
return propertyPath;
diff --git a/src/main/java/provider/wz/XMLDomMapleData.java b/src/main/java/provider/wz/XMLDomMapleData.java
index 0962b2734b..da37b46880 100644
--- a/src/main/java/provider/wz/XMLDomMapleData.java
+++ b/src/main/java/provider/wz/XMLDomMapleData.java
@@ -37,15 +37,16 @@ import java.awt.*;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
+import java.nio.file.Path;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
public class XMLDomMapleData implements Data {
private final Node node;
- private File imageDataDir;
+ private Path imageDataDir;
- public XMLDomMapleData(FileInputStream fis, File imageDataDir) {
+ public XMLDomMapleData(FileInputStream fis, Path imageDataDir) {
try {
DocumentBuilderFactory documentBuilderFactory = DocumentBuilderFactory.newInstance();
DocumentBuilder documentBuilder = documentBuilderFactory.newDocumentBuilder();
@@ -79,7 +80,8 @@ public class XMLDomMapleData implements Data {
boolean foundChild = false;
for (int i = 0; i < childNodes.getLength(); i++) {
Node childNode = childNodes.item(i);
- if (childNode.getNodeType() == Node.ELEMENT_NODE && childNode.getAttributes().getNamedItem("name").getNodeValue().equals(s)) {
+ if (childNode.getNodeType() == Node.ELEMENT_NODE
+ && childNode.getAttributes().getNamedItem("name").getNodeValue().equals(s)) {
myNode = childNode;
foundChild = true;
break;
@@ -91,7 +93,7 @@ public class XMLDomMapleData implements Data {
}
XMLDomMapleData ret = new XMLDomMapleData(myNode);
- ret.imageDataDir = new File(imageDataDir, getName() + "/" + path).getParentFile();
+ ret.imageDataDir = imageDataDir.resolve(getName().trim()).resolve(path).getParent();
return ret;
}
@@ -104,7 +106,7 @@ public class XMLDomMapleData implements Data {
Node childNode = childNodes.item(i);
if (childNode.getNodeType() == Node.ELEMENT_NODE) {
XMLDomMapleData child = new XMLDomMapleData(childNode);
- child.imageDataDir = new File(imageDataDir, getName());
+ child.imageDataDir = imageDataDir.resolve(getName().trim());
ret.add(child);
}
}
@@ -193,7 +195,7 @@ public class XMLDomMapleData implements Data {
return null;
}
XMLDomMapleData parentData = new XMLDomMapleData(parentNode);
- parentData.imageDataDir = imageDataDir.getParentFile();
+ parentData.imageDataDir = imageDataDir.getParent();
return parentData;
}
diff --git a/src/main/java/provider/wz/XMLWZFile.java b/src/main/java/provider/wz/XMLWZFile.java
index 6b1f62b129..b493658bd4 100644
--- a/src/main/java/provider/wz/XMLWZFile.java
+++ b/src/main/java/provider/wz/XMLWZFile.java
@@ -25,62 +25,66 @@ import provider.Data;
import provider.DataDirectoryEntry;
import provider.DataProvider;
-import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
+import java.nio.file.DirectoryStream;
+import java.nio.file.Files;
+import java.nio.file.Path;
+
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
public class XMLWZFile implements DataProvider {
- private final File root;
+ private static final Logger log = LoggerFactory.getLogger(DataProvider.class);
+ private final Path root;
private final WZDirectoryEntry rootForNavigation;
- public XMLWZFile(File fileIn) {
+ public XMLWZFile(Path fileIn) {
root = fileIn;
- rootForNavigation = new WZDirectoryEntry(fileIn.getName(), 0, 0, null);
+ rootForNavigation = new WZDirectoryEntry(fileIn.getFileName().toString(), 0, 0, null);
fillMapleDataEntitys(root, rootForNavigation);
}
- private void fillMapleDataEntitys(File lroot, WZDirectoryEntry wzdir) {
- for (File file : lroot.listFiles()) {
- String fileName = file.getName();
- if (file.isDirectory() && !fileName.endsWith(".img")) {
- WZDirectoryEntry newDir = new WZDirectoryEntry(fileName, 0, 0, wzdir);
- wzdir.addDirectory(newDir);
- fillMapleDataEntitys(file, newDir);
- } else if (fileName.endsWith(".xml")) {
- wzdir.addFile(new WZFileEntry(fileName.substring(0, fileName.length() - 4), 0, 0, wzdir));
+ private void fillMapleDataEntitys(Path lroot, WZDirectoryEntry wzdir) {
+
+ try (DirectoryStream stream = Files.newDirectoryStream(lroot)) {
+ for (Path path : stream) {
+ String fileName = path.getFileName().toString();
+ if (Files.isDirectory(path) && !fileName.endsWith(".img")) {
+ WZDirectoryEntry newDir = new WZDirectoryEntry(fileName, 0, 0, wzdir);
+ wzdir.addDirectory(newDir);
+ fillMapleDataEntitys(path, newDir);
+ } else if (fileName.endsWith(".xml")) {
+ wzdir.addFile(new WZFileEntry(fileName.substring(0, fileName.length() - 4), 0, 0, wzdir));
+ }
}
+ } catch (IOException e) {
+ log.warn("Can not open file/directory at " + lroot);
}
}
@Override
public synchronized Data getData(String path) {
- File dataFile = new File(root, path + ".xml");
- File imageDataDir = new File(root, path);
- if (!dataFile.exists()) {
- return null;//bitches
- }
- FileInputStream fis;
- try {
- fis = new FileInputStream(dataFile);
- } catch (FileNotFoundException e) {
- throw new RuntimeException("Datafile " + path + " does not exist in " + root.getAbsolutePath());
+ Path dataFile = root.resolve(path + ".xml");
+ Path imageDataDir = root.resolve(path);
+ if (!Files.exists(dataFile)) {
+ return null;// bitches
}
final XMLDomMapleData domMapleData;
- try {
- domMapleData = new XMLDomMapleData(fis, imageDataDir.getParentFile());
- } finally {
- try {
- fis.close();
- } catch (IOException e) {
- throw new RuntimeException(e);
- }
+ try (FileInputStream fis = new FileInputStream(dataFile.toString())) {
+ domMapleData = new XMLDomMapleData(fis, imageDataDir.getParent());
+ } catch (FileNotFoundException e) {
+ throw new RuntimeException("Datafile " + path + " does not exist in " + root.toAbsolutePath());
+ } catch (IOException e) {
+ throw new RuntimeException(e);
}
+
return domMapleData;
}
- @Override
- public DataDirectoryEntry getRoot() {
- return rootForNavigation;
- }
-}
+ @Override
+ public DataDirectoryEntry getRoot() {
+ return rootForNavigation;
+ }
+}
\ No newline at end of file
diff --git a/src/main/java/server/SkillbookInformationProvider.java b/src/main/java/server/SkillbookInformationProvider.java
index 62f63b0a37..1661f80732 100644
--- a/src/main/java/server/SkillbookInformationProvider.java
+++ b/src/main/java/server/SkillbookInformationProvider.java
@@ -26,11 +26,17 @@ import provider.Data;
import provider.DataProvider;
import provider.DataProviderFactory;
import provider.DataTool;
+import provider.wz.WZDirectoryEntry;
+import provider.wz.WZFileEntry;
import provider.wz.WZFiles;
import tools.DatabaseConnection;
import java.io.File;
import java.io.IOException;
+import java.nio.file.DirectoryStream;
+import java.nio.file.Files;
+import java.nio.file.Path;
+import java.nio.file.Paths;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
@@ -185,26 +191,31 @@ public class SkillbookInformationProvider {
return loadedSkillbooks;
}
- private static void listFiles(String directoryName, ArrayList files) {
- File directory = new File(directoryName);
+ private static void listFiles(String directoryName, ArrayList files) {
+ Path directory = Paths.get(directoryName);
// get all the files from a directory
- File[] fList = directory.listFiles();
- for (File file : fList) {
- if (file.isFile()) {
- files.add(file);
- } else if (file.isDirectory()) {
- listFiles(file.getAbsolutePath(), files);
+ try (DirectoryStream stream = Files.newDirectoryStream(directory)) {
+ for (Path path : stream) {
+
+ if (Files.isRegularFile(path)) {
+ files.add(path);
+ } else if (Files.isDirectory(path)) {
+ listFiles(path.toAbsolutePath().toString(), files);
+ }
}
+ } catch (IOException e) {
+ // TODO Auto-generated catch block
+ e.printStackTrace();
}
}
- private static List listFilesFromDirectoryRecursively(String directory) {
- ArrayList files = new ArrayList<>();
- listFiles(directory, files);
+ private static List listFilesFromDirectoryRecursively(String directory) {
+ ArrayList files = new ArrayList<>();
+ listFiles(directory, files);
- return files;
- }
+ return files;
+ }
private static Set findMatchingSkillbookIdsOnFile(String fileContent) {
Set skillbookIds = new HashSet<>(4);
@@ -219,22 +230,20 @@ public class SkillbookInformationProvider {
return skillbookIds;
}
- private static String readFileToString(File file, String encoding) throws IOException {
+ private static String readFileToString(Path file, String encoding) throws IOException {
Scanner scanner = new Scanner(file, encoding);
String text = "";
- try {
- try {
- text = scanner.useDelimiter("\\A").next();
- } finally {
- scanner.close();
- }
+ try (scanner) {
+
+ text = scanner.useDelimiter("\\A").next();
+
} catch (NoSuchElementException e) {
}
return text;
}
- private static Map fileSearchMatchingData(File file) {
+ private static Map fileSearchMatchingData(Path file) {
Map scriptFileSkillbooks = new HashMap<>();
try {
@@ -245,7 +254,7 @@ public class SkillbookInformationProvider {
scriptFileSkillbooks.put(skillbookId, SkillBookEntry.SCRIPT);
}
} catch (IOException ioe) {
- log.error("Failed to read file:{}", file.getName(), ioe);
+ log.error("Failed to read file:{}", file.getFileName(), ioe);
}
return scriptFileSkillbooks;
@@ -254,8 +263,8 @@ public class SkillbookInformationProvider {
private static Map fetchSkillbooksFromScripts() {
Map scriptSkillbooks = new HashMap<>();
- for (File file : listFilesFromDirectoryRecursively("./scripts")) {
- if (file.getName().endsWith(".js")) {
+ for (Path file : listFilesFromDirectoryRecursively("./scripts")) {
+ if (file.getFileName().endsWith(".js")) {
scriptSkillbooks.putAll(fileSearchMatchingData(file));
}
}
diff --git a/src/main/java/tools/mapletools/ArrowFetcher.java b/src/main/java/tools/mapletools/ArrowFetcher.java
index f2d4344e5f..d049fa0869 100644
--- a/src/main/java/tools/mapletools/ArrowFetcher.java
+++ b/src/main/java/tools/mapletools/ArrowFetcher.java
@@ -23,10 +23,12 @@ import server.life.MonsterStats;
import tools.Pair;
import java.io.PrintWriter;
-import java.nio.charset.StandardCharsets;
+import java.nio.file.Files;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
+import java.time.Duration;
+import java.time.Instant;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
@@ -171,7 +173,7 @@ public class ArrowFetcher {
if (!existingEntries.isEmpty()) {
List entryValues = getArrowEntryValues(existingEntries);
- printWriter = new PrintWriter(ToolConstants.getOutputFile(OUTPUT_FILE_NAME), StandardCharsets.UTF_8);
+ printWriter = new PrintWriter(Files.newOutputStream(ToolConstants.getOutputFile(OUTPUT_FILE_NAME)));
printSqlHeader();
for (int[] arrowEntry : entryValues) {
@@ -211,10 +213,15 @@ public class ArrowFetcher {
}
public static void main(String[] args) {
+ Instant instantStarted = Instant.now();
// load mob stats from WZ
mobStats = MonsterStatFetcher.getAllMonsterStats();
calcAllMobsArrowRange();
updateMobsArrowRange();
+ Instant instantStopped = Instant.now();
+ Duration durationBetween = Duration.between(instantStarted, instantStopped);
+ System.out.println("Get elapsed time in milliseconds: " + durationBetween.toMillis());
+ System.out.println("Get elapsed time in seconds: " + durationBetween.toSeconds());
}
}
diff --git a/src/main/java/tools/mapletools/BossHpBarFetcher.java b/src/main/java/tools/mapletools/BossHpBarFetcher.java
index a08d0cfdcb..e7634f09bb 100644
--- a/src/main/java/tools/mapletools/BossHpBarFetcher.java
+++ b/src/main/java/tools/mapletools/BossHpBarFetcher.java
@@ -3,7 +3,11 @@ package tools.mapletools;
import provider.wz.WZFiles;
import java.io.*;
-import java.nio.charset.StandardCharsets;
+import java.nio.file.DirectoryStream;
+import java.nio.file.Files;
+import java.nio.file.Path;
+import java.time.Duration;
+import java.time.Instant;
import java.util.ArrayList;
import java.util.List;
@@ -129,20 +133,18 @@ public class BossHpBarFetcher {
}
private static void readBossHpBarData() throws IOException {
- String line;
-
- final File mobDirectory = WZFiles.MOB.getFile();
- for (File file : mobDirectory.listFiles()) {
- if (file.isFile()) {
- InputStreamReader fileReader = new InputStreamReader(new FileInputStream(file), StandardCharsets.UTF_8);
- bufferedReader = new BufferedReader(fileReader);
-
- while ((line = bufferedReader.readLine()) != null) {
- translateToken(line);
+ final Path mobDirectory = WZFiles.MOB.getFile();
+ try (DirectoryStream stream = Files.newDirectoryStream(mobDirectory)) {
+ for (Path path : stream) {
+ if (Files.isRegularFile(path)) {
+ try (BufferedReader br = Files.newBufferedReader(path)) {
+ bufferedReader = br;
+ String line;
+ while ((line = bufferedReader.readLine()) != null) {
+ translateToken(line);
+ }
+ }
}
-
- bufferedReader.close();
- fileReader.close();
}
}
}
@@ -162,17 +164,15 @@ public class BossHpBarFetcher {
private static void reportBossHpBarData() {
// This will reference one line at a time
- try {
+ try (PrintWriter printWriter = new PrintWriter(Files.newOutputStream(ToolConstants.getOutputFile(OUTPUT_FILE_NAME)))) {
System.out.println("Reading WZs...");
readBossHpBarData();
System.out.println("Reporting results...");
- final PrintWriter printWriter = new PrintWriter(ToolConstants.getOutputFile(OUTPUT_FILE_NAME), StandardCharsets.UTF_8);
printReportFileHeader(printWriter);
printReportFileResults(printWriter);
- printWriter.close();
System.out.println("Done!");
} catch (FileNotFoundException ex) {
System.out.println("Unable to open mob file.");
@@ -184,7 +184,12 @@ public class BossHpBarFetcher {
}
public static void main(String[] args) {
+ Instant instantStarted = Instant.now();
reportBossHpBarData();
+ Instant instantStopped = Instant.now();
+ Duration durationBetween = Duration.between(instantStarted, instantStopped);
+ System.out.println("Get elapsed time in milliseconds: " + durationBetween.toMillis());
+ System.out.println("Get elapsed time in seconds: " + durationBetween.toSeconds());
}
}
diff --git a/src/main/java/tools/mapletools/CashCosmeticsChecker.java b/src/main/java/tools/mapletools/CashCosmeticsChecker.java
index 696f3218b1..261cf555b1 100644
--- a/src/main/java/tools/mapletools/CashCosmeticsChecker.java
+++ b/src/main/java/tools/mapletools/CashCosmeticsChecker.java
@@ -5,6 +5,8 @@ import tools.Pair;
import java.io.*;
import java.nio.charset.StandardCharsets;
+import java.nio.file.Files;
+import java.nio.file.Path;
import java.util.*;
/**
@@ -21,8 +23,8 @@ import java.util.*;
* Estimated parse time: 1 minute
*/
public class CashCosmeticsChecker {
- private static final String INPUT_DIRECTORY_PATH = ToolConstants.getInputFile("care").getPath();
- private static final File OUTPUT_FILE = ToolConstants.getOutputFile("cash_cosmetics_result.txt");
+ private static final String INPUT_DIRECTORY_PATH = ToolConstants.getInputFile("care").toString();
+ private static final Path OUTPUT_FILE = ToolConstants.getOutputFile("cash_cosmetics_result.txt");
private static final boolean IGNORE_CURRENT_SCRIPT_COSMETICS = false; // Toggle to preference
private static final int INITIAL_STRING_LENGTH = 50;
@@ -614,50 +616,50 @@ public class CashCosmeticsChecker {
private static void reportCosmeticResults() throws IOException {
System.out.println("Reporting results ...");
- printWriter = new PrintWriter(OUTPUT_FILE, StandardCharsets.UTF_8);
+ try (PrintWriter pw = new PrintWriter(Files.newOutputStream(OUTPUT_FILE));) {
+ printWriter = pw;
+ printReportFileHeader();
- printReportFileHeader();
+ if (!missingCosmeticsNpcTypes.isEmpty()) {
+ printWriter.println(
+ "Found " + missingCosmeticsNpcTypes.size() + " entries with missing cosmetic entries.");
- if (!missingCosmeticsNpcTypes.isEmpty()) {
- printWriter.println("Found " + missingCosmeticsNpcTypes.size() + " entries with missing cosmetic entries.");
+ for (Pair, List> mcn : getSortedMapEntries(missingCosmeticsNpcTypes)) {
+ printWriter.println(" NPC " + mcn.getLeft());
- for (Pair, List> mcn : getSortedMapEntries(missingCosmeticsNpcTypes)) {
- printWriter.println(" NPC " + mcn.getLeft());
+ Pair, List> genderItemids = getCosmeticReport(mcn.getRight());
+ reportNpcCosmetics(genderItemids.getLeft());
+ reportNpcCosmetics(genderItemids.getRight());
+ printWriter.println();
+ }
+ }
+
+ if (!unusedCosmetics.isEmpty()) {
+ printWriter.println("Unused cosmetics: " + unusedCosmetics.size());
+
+ List list = new ArrayList<>(unusedCosmetics);
+ Collections.sort(list);
+
+ for (Integer i : list) {
+ printWriter.println(i + " " + cosmeticIdNames.get(i));
+ }
+
+ printWriter.println();
+ }
+
+ if (!missingCosmeticNames.isEmpty()) {
+ printWriter.println("Missing cosmetic itemids: " + missingCosmeticNames.size());
+
+ List listString = new ArrayList<>(missingCosmeticNames);
+ Collections.sort(listString);
+
+ for (String c : listString) {
+ printWriter.println(c);
+ }
- Pair, List> genderItemids = getCosmeticReport(mcn.getRight());
- reportNpcCosmetics(genderItemids.getLeft());
- reportNpcCosmetics(genderItemids.getRight());
printWriter.println();
}
}
-
- if (!unusedCosmetics.isEmpty()) {
- printWriter.println("Unused cosmetics: " + unusedCosmetics.size());
-
- List list = new ArrayList<>(unusedCosmetics);
- Collections.sort(list);
-
- for (Integer i : list) {
- printWriter.println(i + " " + cosmeticIdNames.get(i));
- }
-
- printWriter.println();
- }
-
- if (!missingCosmeticNames.isEmpty()) {
- printWriter.println("Missing cosmetic itemids: " + missingCosmeticNames.size());
-
- List listString = new ArrayList<>(missingCosmeticNames);
- Collections.sort(listString);
-
- for (String c : listString) {
- printWriter.println(c);
- }
-
- printWriter.println();
- }
-
- printWriter.close();
}
public static void main(String[] args) {
diff --git a/src/main/java/tools/mapletools/CashDropFetcher.java b/src/main/java/tools/mapletools/CashDropFetcher.java
index 75176c4a81..91282fa6d7 100644
--- a/src/main/java/tools/mapletools/CashDropFetcher.java
+++ b/src/main/java/tools/mapletools/CashDropFetcher.java
@@ -4,7 +4,9 @@ import provider.wz.WZFiles;
import tools.Pair;
import java.io.*;
-import java.nio.charset.StandardCharsets;
+import java.nio.file.DirectoryStream;
+import java.nio.file.Files;
+import java.nio.file.Path;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
@@ -20,7 +22,7 @@ import java.util.*;
* Estimated parse time: 2 minutes
*/
public class CashDropFetcher {
- private static final File OUTPUT_FILE = ToolConstants.getOutputFile("cash_drop_report.txt");
+ private static final Path OUTPUT_FILE = ToolConstants.getOutputFile("cash_drop_report.txt");
private static final Connection con = SimpleDatabaseConnection.getConnection();
private static final int INITIAL_STRING_LENGTH = 50;
private static final int ITEM_FILE_NAME_SIZE = 13;
@@ -175,17 +177,19 @@ public class CashDropFetcher {
printWriter.println();
}
- private static void listFiles(String directoryName, ArrayList files) {
- File directory = new File(directoryName);
-
+ private static void listFiles(Path directoryName, ArrayList files) {
// get all the files from a directory
- File[] fList = directory.listFiles();
- for (File file : fList) {
- if (file.isFile()) {
- files.add(file);
- } else if (file.isDirectory()) {
- listFiles(file.getAbsolutePath(), files);
+ try (DirectoryStream stream = Files.newDirectoryStream(directoryName)) {
+ for (Path path : stream) {
+ if (Files.isRegularFile(path)) {
+ files.add(path);
+ } else if (Files.isDirectory(path)) {
+ listFiles(path, files);
+ }
}
+ } catch (IOException e) {
+ // TODO Auto-generated catch block
+ e.printStackTrace();
}
}
@@ -260,42 +264,39 @@ public class CashDropFetcher {
}
private static void reportNxDropData() {
- try {
+ try (con; PrintWriter pw = new PrintWriter(Files.newOutputStream(OUTPUT_FILE))) {
System.out.println("Reading Character.wz ...");
- ArrayList files = new ArrayList<>();
- listFiles(WZFiles.CHARACTER.getFilePath(), files);
+ ArrayList files = new ArrayList<>();
+ listFiles(WZFiles.CHARACTER.getFile(), files);
- InputStreamReader fileReader = null;
- for (File f : files) {
- //System.out.println("Parsing " + f.getAbsolutePath());
- int itemid = getItemIdFromFilename(f.getName());
+ for (Path path : files) {
+ // System.out.println("Parsing " + f.getAbsolutePath());
+ int itemid = getItemIdFromFilename(path.getFileName().toString());
if (itemid < 0) {
continue;
}
- fileReader = new InputStreamReader(new FileInputStream(f), StandardCharsets.UTF_8);
- bufferedReader = new BufferedReader(fileReader);
+ bufferedReader = Files.newBufferedReader(path);
currentItemid = itemid;
inspectEquipWzEntry();
bufferedReader.close();
- fileReader.close();
}
System.out.println("Reading Item.wz ...");
files = new ArrayList<>();
- listFiles(WZFiles.ITEM.getFilePath(), files);
+ listFiles(WZFiles.ITEM.getFile(), files);
- for (File f : files) {
- //System.out.println("Parsing " + f.getAbsolutePath());
- fileReader = new InputStreamReader(new FileInputStream(f), StandardCharsets.UTF_8);
- bufferedReader = new BufferedReader(fileReader);
+ for (Path path : files) {
+ // System.out.println("Parsing " + f.getAbsolutePath());
+ bufferedReader = Files.newBufferedReader(path);
- if (f.getName().length() <= ITEM_FILE_NAME_SIZE) {
+ if (path.getFileName().toString().length() <= ITEM_FILE_NAME_SIZE) {
inspectItemWzEntry();
- } else { // pet file structure is similar to equips, maybe there are other item-types following this behaviour?
- int itemid = getItemIdFromFilename(f.getName());
+ } else { // pet file structure is similar to equips, maybe there are other item-types
+ // following this behaviour?
+ int itemid = getItemIdFromFilename(path.getFileName().toString());
if (itemid < 0) {
continue;
}
@@ -305,27 +306,23 @@ public class CashDropFetcher {
}
bufferedReader.close();
- fileReader.close();
}
System.out.println("Reporting results...");
- // report suspects of missing quest drop data, as well as those drop data that may have incorrect questids.
- printWriter = new PrintWriter(OUTPUT_FILE, StandardCharsets.UTF_8);
+ // report suspects of missing quest drop data, as well as those drop data that
+ // may have incorrect questids.
+ printWriter = pw;
printReportFileHeader();
reportNxDropResults(true);
reportNxDropResults(false);
/*
- printWriter.println("NX LIST"); // list of all cash items found
- for(Integer nx : nxItems) {
- printWriter.println(nx);
- }
- */
+ * printWriter.println("NX LIST"); // list of all cash items found for(Integer
+ * nx : nxItems) { printWriter.println(nx); }
+ */
- con.close();
- printWriter.close();
System.out.println("Done!");
} catch (SQLException e) {
System.out.println("Warning: Could not establish connection to database to report quest data.");
diff --git a/src/main/java/tools/mapletools/CashVegaChecker.java b/src/main/java/tools/mapletools/CashVegaChecker.java
index 230c0814d7..1cbea1b5aa 100644
--- a/src/main/java/tools/mapletools/CashVegaChecker.java
+++ b/src/main/java/tools/mapletools/CashVegaChecker.java
@@ -4,6 +4,8 @@ import provider.wz.WZFiles;
import java.io.*;
import java.nio.charset.StandardCharsets;
+import java.nio.file.Files;
+import java.nio.file.Path;
import java.util.HashSet;
import java.util.Set;
@@ -16,7 +18,7 @@ import java.util.Set;
* Estimated parse time: 10 seconds
*/
public class CashVegaChecker {
- private static final File OUTPUT_FILE = ToolConstants.getOutputFile("vega_checker_report.txt");
+ private static final Path OUTPUT_FILE = ToolConstants.getOutputFile("vega_checker_report.txt");
private static final int INITIAL_STRING_LENGTH = 1000;
private static final Set vegaItems = new HashSet<>();
@@ -156,16 +158,14 @@ public class CashVegaChecker {
private static void reportMissingVegaItems() {
System.out.println("Reporting results ...");
- try {
- printWriter = new PrintWriter(OUTPUT_FILE, StandardCharsets.UTF_8);
-
+ try (PrintWriter pw = new PrintWriter(Files.newOutputStream(OUTPUT_FILE))) {
+ printWriter = pw;
printReportFileHeader();
for (Integer itemid : vegaItems) {
printWriter.println(" " + itemid);
}
- printWriter.close();
} catch (IOException ioe) {
ioe.printStackTrace();
}
diff --git a/src/main/java/tools/mapletools/CodeCouponGenerator.java b/src/main/java/tools/mapletools/CodeCouponGenerator.java
index ddf9b94805..62e35c6e09 100644
--- a/src/main/java/tools/mapletools/CodeCouponGenerator.java
+++ b/src/main/java/tools/mapletools/CodeCouponGenerator.java
@@ -3,7 +3,8 @@ package tools.mapletools;
import tools.Pair;
import java.io.*;
-import java.nio.charset.StandardCharsets;
+import java.nio.file.Files;
+import java.nio.file.Path;
import java.sql.*;
import java.util.ArrayList;
import java.util.HashSet;
@@ -22,7 +23,7 @@ import static java.util.concurrent.TimeUnit.HOURS;
* Estimated parse time: 2 minutes (for 100 code entries)
*/
public class CodeCouponGenerator {
- private static final File INPUT_FILE = ToolConstants.getInputFile("CouponCodes.img.xml");
+ private static final Path INPUT_FILE = ToolConstants.getInputFile("CouponCodes.img.xml");
private static final int INITIAL_STRING_LENGTH = 250;
private static final Connection con = SimpleDatabaseConnection.getConnection();
@@ -312,24 +313,19 @@ public class CodeCouponGenerator {
ps.close();
}
- private static void generateCodeCoupons(File file) throws IOException {
- InputStreamReader fileReader = new InputStreamReader(new FileInputStream(file), StandardCharsets.UTF_8);
- bufferedReader = new BufferedReader(fileReader);
+ private static void generateCodeCoupons(Path file) throws IOException {
+ try (BufferedReader br = Files.newBufferedReader(file); con;) {
+ bufferedReader = br;
+ resetCouponPackage();
+ status = 0;
- resetCouponPackage();
- status = 0;
+ System.out.println("Reading XML coupon information...");
+ String line;
+ while ((line = bufferedReader.readLine()) != null) {
+ translateToken(line);
+ }
+ System.out.println();
- System.out.println("Reading XML coupon information...");
- String line;
- while ((line = bufferedReader.readLine()) != null) {
- translateToken(line);
- }
-
- bufferedReader.close();
- fileReader.close();
- System.out.println();
-
- try {
System.out.println("Loading DB coupon codes...");
loadUsedCouponCodes();
System.out.println();
@@ -340,9 +336,8 @@ public class CodeCouponGenerator {
commitCodeCouponDescription(ccd);
}
System.out.println();
-
- con.close();
System.out.println("Done.");
+
} catch (SQLException e) {
e.printStackTrace();
}
@@ -352,7 +347,7 @@ public class CodeCouponGenerator {
try {
generateCodeCoupons(INPUT_FILE);
} catch (IOException ex) {
- System.out.println("Error reading file '" + INPUT_FILE.getAbsolutePath() + "'");
+ System.out.println("Error reading file '" + INPUT_FILE.toAbsolutePath() + "'");
}
}
}
diff --git a/src/main/java/tools/mapletools/CouponInstaller.java b/src/main/java/tools/mapletools/CouponInstaller.java
index aba16b58dd..2532458370 100644
--- a/src/main/java/tools/mapletools/CouponInstaller.java
+++ b/src/main/java/tools/mapletools/CouponInstaller.java
@@ -3,7 +3,8 @@ package tools.mapletools;
import provider.wz.WZFiles;
import java.io.*;
-import java.nio.charset.StandardCharsets;
+import java.nio.file.Files;
+import java.nio.file.Path;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.SQLException;
@@ -16,8 +17,8 @@ import java.sql.SQLException;
* a SQL table that the server will make use.
*/
public class CouponInstaller {
- private static final File COUPON_INPUT_FILE_1 = new File(WZFiles.ITEM.getFilePath(), "/Cash/0521.img.xml");
- private static final File COUPON_INPUT_FILE_2 = new File(WZFiles.ITEM.getFilePath(), "/Cash/0536.img.xml");
+ private static final Path COUPON_INPUT_FILE_1 = WZFiles.ITEM.getFile().resolve("Cash/0521.img.xml");
+ private static final Path COUPON_INPUT_FILE_2 = WZFiles.ITEM.getFile().resolve("Cash/0536.img.xml");
private static final Connection con = SimpleDatabaseConnection.getConnection();
private static BufferedReader bufferedReader = null;
private static byte status = 0;
@@ -192,20 +193,17 @@ public class CouponInstaller {
}
}
- private static void installRateCoupons(File file) {
+ private static void installRateCoupons(Path file) {
// This will reference one line at a time
String line = null;
- try {
- InputStreamReader fileReader = new InputStreamReader(new FileInputStream(file), StandardCharsets.UTF_8);
- bufferedReader = new BufferedReader(fileReader);
+ try (BufferedReader br = Files.newBufferedReader(file)) {
+ bufferedReader = br;
while ((line = bufferedReader.readLine()) != null) {
translateToken(line);
}
- bufferedReader.close();
- fileReader.close();
} catch (FileNotFoundException ex) {
System.out.println("Unable to open file '" + file + "'");
} catch (IOException ex) {
diff --git a/src/main/java/tools/mapletools/DojoUpdate.java b/src/main/java/tools/mapletools/DojoUpdate.java
index dbacb0ac18..584682cc75 100644
--- a/src/main/java/tools/mapletools/DojoUpdate.java
+++ b/src/main/java/tools/mapletools/DojoUpdate.java
@@ -3,7 +3,12 @@ package tools.mapletools;
import provider.wz.WZFiles;
import java.io.*;
-import java.nio.charset.StandardCharsets;
+import java.nio.file.DirectoryStream;
+import java.nio.file.Files;
+import java.nio.file.Path;
+import java.nio.file.Paths;
+import java.time.Duration;
+import java.time.Instant;
/**
* @author RonanLana
@@ -16,8 +21,9 @@ import java.nio.charset.StandardCharsets;
* Estimated parse time: 10 seconds
*/
public class DojoUpdate {
- private static final File INPUT_DIRECTORY = new File(WZFiles.MAP.getFile(), "/Map/Map9");
- private static final File OUTPUT_DIRECTORY = ToolConstants.getOutputFile("dojo-maps");
+ private static final Path INPUT_DIRECTORY = WZFiles.MAP.getFile().resolve("Map").resolve("Map9");
+ private static final Path OUTPUT_DIRECTORY = ToolConstants.getOutputFile("dojo-maps");
+ private static final Path WORKING_DIRECTORY = Paths.get("").toAbsolutePath();
private static final int DOJO_MIN_MAP_ID = 925_020_100;
private static final int DOJO_MAX_MAP_ID = 925_033_804;
private static final int INITIAL_STRING_LENGTH = 250;
@@ -114,30 +120,26 @@ public class DojoUpdate {
return Integer.parseInt(fileName.substring(0, 9));
}
- private static void parseDojoData(File file, String curPath) throws IOException {
- int mapId = getMapId(file.getName());
+ private static void parseDojoData(Path file, String curPath) throws IOException {
+ int mapId = getMapId(file.getFileName().toString());
isDojoMapid = isDojoMapId(mapId);
if (!isDojoMapid) {
return;
}
+ try (PrintWriter pw = new PrintWriter(
+ Files.newOutputStream(OUTPUT_DIRECTORY.resolve(curPath).resolve(file.getFileName())));
+ BufferedReader br = Files.newBufferedReader(file);) {
+ printWriter = pw;
+ bufferedReader = br;
+ status = 0;
- printWriter = new PrintWriter(OUTPUT_DIRECTORY.getPath() + "/" + curPath + file.getName(), StandardCharsets.UTF_8);
+ String line;
+ while ((line = bufferedReader.readLine()) != null) {
+ translateToken(line);
+ }
- InputStreamReader fileReader = new InputStreamReader(new FileInputStream(file), StandardCharsets.UTF_8);
- bufferedReader = new BufferedReader(fileReader);
-
- status = 0;
-
- String line;
- while ((line = bufferedReader.readLine()) != null) {
- translateToken(line);
+ printFileFooter();
}
-
- bufferedReader.close();
- fileReader.close();
-
- printFileFooter();
- printWriter.close();
}
private static boolean isDojoMapId(int mapId) {
@@ -152,31 +154,48 @@ public class DojoUpdate {
}
private static void parseDirectoryDojoData(String curPath) {
- File folder = new File(OUTPUT_DIRECTORY, curPath);
- if (!folder.exists()) {
- folder.mkdir();
+ Path folder = OUTPUT_DIRECTORY.resolve(curPath);
+ if (!Files.exists(folder)) {
+ try {
+ Files.createDirectory(folder);
+ } catch (IOException e) {
+ // TODO Auto-generated catch block
+ System.out.println("Unable to create folder " + folder.toAbsolutePath() + ".");
+ e.printStackTrace();
+ }
}
System.out.println("Parsing directory '" + curPath + "'");
- folder = new File(INPUT_DIRECTORY, curPath);
- for (File file : folder.listFiles()) {
- if (file.isFile()) {
- try {
- parseDojoData(file, curPath);
- } catch (FileNotFoundException ex) {
- System.out.println("Unable to open dojo file " + file.getAbsolutePath() + ".");
- } catch (IOException ex) {
- System.out.println("Error reading dojo file " + file.getAbsolutePath() + ".");
- } catch (Exception e) {
- e.printStackTrace();
+ folder = INPUT_DIRECTORY.resolve(curPath);
+ try (DirectoryStream stream = Files.newDirectoryStream(folder)) {
+ for (Path path : stream) {
+ if (Files.isRegularFile(path)) {
+ try {
+ parseDojoData(path, curPath);
+ } catch (FileNotFoundException ex) {
+ System.out.println("Unable to open dojo file " + path.toAbsolutePath() + ".");
+ } catch (IOException ex) {
+ System.out.println("Error reading dojo file " + path.toAbsolutePath() + ".");
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ } else {
+ parseDirectoryDojoData(curPath + path.getFileName() + "/");
}
- } else {
- parseDirectoryDojoData(curPath + file.getName() + "/");
}
+ } catch (IOException e1) {
+ System.out.println("Unable to read folder " + folder.toAbsolutePath() + ".");
+ // TODO Auto-generated catch block
+ e1.printStackTrace();
}
}
public static void main(String[] args) {
+ Instant instantStarted = Instant.now();
parseDirectoryDojoData("");
+ Instant instantStopped = Instant.now();
+ Duration durationBetween = Duration.between(instantStarted, instantStopped);
+ System.out.println("Get elapsed time in milliseconds: " + durationBetween.toMillis());
+ System.out.println("Get elapsed time in seconds: " + durationBetween.toSeconds());
}
}
diff --git a/src/main/java/tools/mapletools/EmptyItemWzChecker.java b/src/main/java/tools/mapletools/EmptyItemWzChecker.java
index f696d319a1..4ac3face4f 100644
--- a/src/main/java/tools/mapletools/EmptyItemWzChecker.java
+++ b/src/main/java/tools/mapletools/EmptyItemWzChecker.java
@@ -4,6 +4,8 @@ import provider.wz.WZFiles;
import java.io.*;
import java.nio.charset.StandardCharsets;
+import java.nio.file.Files;
+import java.nio.file.Path;
import java.util.*;
/**
@@ -14,8 +16,8 @@ import java.util.*;
* And it removes from the String.wz XMLs all entries which misses properties on Item.wz.
*/
public class EmptyItemWzChecker {
- private static final File OUTPUT_FILE = ToolConstants.getOutputFile("empty_item_wz_report.txt");
- private static final String OUTPUT_PATH = ToolConstants.OUTPUT_DIRECTORY.getPath();
+ private static final Path OUTPUT_FILE = ToolConstants.getOutputFile("empty_item_wz_report.txt");
+ private static final String OUTPUT_PATH = ToolConstants.OUTPUT_DIRECTORY.toString();
private static final int INITIAL_STRING_LENGTH = 50;
private static final int ITEM_FILE_NAME_SIZE = 13;
@@ -338,12 +340,11 @@ public class EmptyItemWzChecker {
private static void reportItemNameDiff(Set emptyItemNames, Set emptyNameItems) throws IOException {
System.out.println("Reporting results...");
- printWriter = new PrintWriter(OUTPUT_FILE, StandardCharsets.UTF_8);
-
- printReportFileHeader();
- printReportFileResults(emptyItemNames, emptyNameItems);
-
- printWriter.close();
+ try(PrintWriter pw = new PrintWriter(Files.newOutputStream(OUTPUT_FILE))) {
+ printWriter = pw;
+ printReportFileHeader();
+ printReportFileResults(emptyItemNames, emptyNameItems);
+ }
}
private static void locateItemStringWzDiff() throws IOException {
@@ -408,7 +409,7 @@ public class EmptyItemWzChecker {
private static void generateStringWz() throws IOException {
System.out.println("Generating clean String.wz ...");
- String[][] stringWzFiles = {{"Cash", "Consume", "Ins", "Pet"}, {"Etc"}, {"Eqp"}};
+ String[][] stringWzFiles = { { "Cash", "Consume", "Ins", "Pet" }, { "Etc" }, { "Eqp" } };
String stringWzPath = "/String.wz/";
File folder = new File(OUTPUT_PATH + "/String.wz/");
diff --git a/src/main/java/tools/mapletools/EquipmentOmniLeveller.java b/src/main/java/tools/mapletools/EquipmentOmniLeveller.java
index b10caeb260..71e3635b31 100644
--- a/src/main/java/tools/mapletools/EquipmentOmniLeveller.java
+++ b/src/main/java/tools/mapletools/EquipmentOmniLeveller.java
@@ -3,7 +3,11 @@ package tools.mapletools;
import provider.wz.WZFiles;
import java.io.*;
-import java.nio.charset.StandardCharsets;
+import java.nio.file.DirectoryStream;
+import java.nio.file.Files;
+import java.nio.file.Path;
+import java.time.Duration;
+import java.time.Instant;
/**
* @author RonanLana
@@ -16,14 +20,13 @@ import java.nio.charset.StandardCharsets;
* Estimated parse time: 7 minutes
*/
public class EquipmentOmniLeveller {
- private static final File INPUT_DIRECTORY = WZFiles.CHARACTER.getFile();
- private static final File OUTPUT_DIRECTORY = ToolConstants.getOutputFile("equips-with-levels");
+ private static final Path INPUT_DIRECTORY = WZFiles.CHARACTER.getFile();
+ private static final Path OUTPUT_DIRECTORY = ToolConstants.getOutputFile("equips-with-levels");
private static final int INITIAL_STRING_LENGTH = 250;
private static final int FIXED_EXP = 10000;
private static final int MAX_EQP_LEVEL = 30;
private static PrintWriter printWriter = null;
- private static InputStreamReader fileReader = null;
private static BufferedReader bufferedReader = null;
private static int infoTagState = -1;
@@ -353,30 +356,25 @@ public class EquipmentOmniLeveller {
return accessInfoTag;
}
- private static void copyCashItemData(File file, String curPath) throws IOException {
- printWriter = new PrintWriter(new File(OUTPUT_DIRECTORY, curPath + file.getName()), StandardCharsets.UTF_8);
-
- fileReader = new InputStreamReader(new FileInputStream(file), StandardCharsets.UTF_8);
- bufferedReader = new BufferedReader(fileReader);
-
- String line;
- while ((line = bufferedReader.readLine()) != null) {
- printWriter.println(line);
+ private static void copyCashItemData(Path file, String curPath) throws IOException {
+ try (PrintWriter pw = new PrintWriter(
+ Files.newOutputStream(OUTPUT_DIRECTORY.resolve(curPath).resolve(file.getFileName())));
+ BufferedReader br = Files.newBufferedReader(file);) {
+ printWriter = pw;
+ bufferedReader = br;
+ String line;
+ while ((line = bufferedReader.readLine()) != null) {
+ printWriter.println(line);
+ }
}
-
- bufferedReader.close();
- fileReader.close();
-
- printWriter.close();
}
- private static void parseEquipData(File file, String curPath) throws IOException {
- printWriter = new PrintWriter(new File(OUTPUT_DIRECTORY, curPath + file.getName()), StandardCharsets.UTF_8);
-
- fileReader = new InputStreamReader(new FileInputStream(file), StandardCharsets.UTF_8);
- bufferedReader = new BufferedReader(fileReader);
-
- try {
+ private static void parseEquipData(Path file, String curPath) throws IOException {
+ try (PrintWriter pw = new PrintWriter(
+ Files.newOutputStream(OUTPUT_DIRECTORY.resolve(curPath).resolve(file.getFileName())));
+ BufferedReader br = Files.newBufferedReader(file);) {
+ printWriter = pw;
+ bufferedReader = br;
status = 0;
upgradeable = false;
cash = false;
@@ -384,23 +382,13 @@ public class EquipmentOmniLeveller {
String line;
while ((line = bufferedReader.readLine()) != null) {
if (translateToken(line)) {
- infoTagState = status; // status: 2
+ infoTagState = status; // status: 2
translateInfoTag(status);
infoTagState = -1;
}
}
-
- bufferedReader.close();
- fileReader.close();
-
printFileFooter();
- printWriter.close();
} catch (RuntimeException e) {
- bufferedReader.close();
- fileReader.close();
-
- printWriter.close();
-
copyCashItemData(file, curPath);
}
}
@@ -413,31 +401,48 @@ public class EquipmentOmniLeveller {
}
private static void parseDirectoryEquipData(String curPath) {
- File folder = new File(OUTPUT_DIRECTORY, curPath);
- if (!folder.exists()) {
- folder.mkdir();
+ Path folder = OUTPUT_DIRECTORY.resolve(curPath);
+ if (!Files.exists(folder)) {
+ try {
+ Files.createDirectory(folder);
+ } catch (IOException e) {
+ // TODO Auto-generated catch block
+ System.out.println("Unable to create folder " + folder.toAbsolutePath() + ".");
+ e.printStackTrace();
+ }
}
System.out.println("Parsing directory '" + curPath + "'");
- folder = new File(INPUT_DIRECTORY, curPath);
- for (File file : folder.listFiles()) {
- if (file.isFile()) {
- try {
- parseEquipData(file, curPath);
- } catch (FileNotFoundException ex) {
- System.out.println("Unable to open equip file " + file.getAbsolutePath() + ".");
- } catch (IOException ex) {
- System.out.println("Error reading equip file " + file.getAbsolutePath() + ".");
- } catch (Exception e) {
- e.printStackTrace();
+ folder = INPUT_DIRECTORY.resolve(curPath);
+ try (DirectoryStream stream = Files.newDirectoryStream(folder)) {
+ for (Path path : stream) {
+ if (Files.isRegularFile(path)) {
+ try {
+ parseEquipData(path, curPath);
+ } catch (FileNotFoundException ex) {
+ System.out.println("Unable to open dojo file " + path.toAbsolutePath() + ".");
+ } catch (IOException ex) {
+ System.out.println("Error reading dojo file " + path.toAbsolutePath() + ".");
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ } else {
+ parseDirectoryEquipData(curPath + path.getFileName() + "/");
}
- } else {
- parseDirectoryEquipData(curPath + file.getName() + "/");
}
+ } catch (IOException e1) {
+ System.out.println("Unable to read folder " + folder.toAbsolutePath() + ".");
+ // TODO Auto-generated catch block
+ e1.printStackTrace();
}
}
public static void main(String[] args) {
+ Instant instantStarted = Instant.now();
parseDirectoryEquipData("");
+ Instant instantStopped = Instant.now();
+ Duration durationBetween = Duration.between(instantStarted, instantStopped);
+ System.out.println("Get elapsed time in milliseconds: " + durationBetween.toMillis());
+ System.out.println("Get elapsed time in seconds: " + durationBetween.toSeconds());
}
}
diff --git a/src/main/java/tools/mapletools/GachaponItemIdRetriever.java b/src/main/java/tools/mapletools/GachaponItemIdRetriever.java
index 0761d804a1..f39fb0f918 100644
--- a/src/main/java/tools/mapletools/GachaponItemIdRetriever.java
+++ b/src/main/java/tools/mapletools/GachaponItemIdRetriever.java
@@ -1,7 +1,8 @@
package tools.mapletools;
import java.io.*;
-import java.nio.charset.StandardCharsets;
+import java.nio.file.Files;
+import java.nio.file.Path;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
@@ -22,8 +23,8 @@ import java.util.regex.Pattern;
* Estimated parse time: 1 minute
*/
public class GachaponItemIdRetriever {
- private static final File INPUT_FILE = ToolConstants.getInputFile("gachapon_items.txt");
- private static final File OUTPUT_DIRECTORY = ToolConstants.getOutputFile("gachapons");
+ private static final Path INPUT_FILE = ToolConstants.getInputFile("gachapon_items.txt");
+ private static final Path OUTPUT_DIRECTORY = ToolConstants.getOutputFile("gachapons");
private static final Connection con = SimpleDatabaseConnection.getConnection();
private static final Pattern pattern = Pattern.compile("(\\d*)%");
private static final int[] scrollsChances = new int[]{10, 15, 30, 60, 65, 70, 100};
@@ -247,11 +248,7 @@ public class GachaponItemIdRetriever {
private static void fetchDataOnMapleHandbook() throws SQLException {
String line;
-
- try {
- InputStreamReader fileReader = new InputStreamReader(new FileInputStream(INPUT_FILE), StandardCharsets.UTF_8);
- BufferedReader bufferedReader = new BufferedReader(fileReader);
-
+ try (BufferedReader bufferedReader = Files.newBufferedReader(INPUT_FILE)) {
int skip = 0;
boolean lineHeader = false;
while ((line = bufferedReader.readLine()) != null) {
@@ -276,10 +273,10 @@ public class GachaponItemIdRetriever {
if (printWriter != null) {
printWriter.close();
}
- File outputFile = new File(OUTPUT_DIRECTORY, gachaponName + ".txt");
+ Path outputFile = OUTPUT_DIRECTORY.resolve(gachaponName + ".txt");
setupDirectories(outputFile);
- printWriter = new PrintWriter(outputFile, StandardCharsets.UTF_8);
+ printWriter = new PrintWriter(Files.newOutputStream(outputFile));
skip = 2;
lineHeader = true;
@@ -297,30 +294,27 @@ public class GachaponItemIdRetriever {
}
}
}
-
- if (printWriter != null) {
- printWriter.close();
- }
- bufferedReader.close();
- fileReader.close();
} catch (IOException ex) {
System.out.println(ex.getMessage());
ex.printStackTrace();
}
}
- private static void setupDirectories(File file) {
- if (!file.getParentFile().exists()) {
- file.getParentFile().mkdirs();
+ private static void setupDirectories(Path file) {
+ if (!Files.exists(file.getParent())) {
+ try {
+ Files.createDirectories(file.getParent());
+ } catch (IOException e) {
+ // TODO Auto-generated catch block
+ e.printStackTrace();
+ }
}
}
public static void main(String[] args) {
- try {
+ try (con) {
loadHandbookUseNames();
fetchDataOnMapleHandbook();
-
- con.close();
} catch (SQLException e) {
System.out.println("Error: invalid SQL syntax");
System.out.println(e.getMessage());
diff --git a/src/main/java/tools/mapletools/IdRetriever.java b/src/main/java/tools/mapletools/IdRetriever.java
index 58039bc0dc..b511499f96 100644
--- a/src/main/java/tools/mapletools/IdRetriever.java
+++ b/src/main/java/tools/mapletools/IdRetriever.java
@@ -2,10 +2,14 @@ package tools.mapletools;
import java.io.*;
import java.nio.charset.StandardCharsets;
+import java.nio.file.Files;
+import java.nio.file.Path;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
+import java.time.Duration;
+import java.time.Instant;
import java.util.ArrayList;
/**
@@ -26,8 +30,8 @@ import java.util.ArrayList;
*/
public class IdRetriever {
private static final boolean INSTALL_SQLTABLE = true;
- private static final File INPUT_FILE = ToolConstants.getInputFile("fetch_ids.txt");
- private static final File OUTPUT_FILE = ToolConstants.getOutputFile("fetched_ids.txt");
+ private static final Path INPUT_FILE = ToolConstants.getInputFile("fetch_ids.txt");
+ private static final Path OUTPUT_FILE = ToolConstants.getOutputFile("fetched_ids.txt");
private static final Connection con = SimpleDatabaseConnection.getConnection();
private static InputStreamReader fileReader = null;
@@ -132,14 +136,10 @@ public class IdRetriever {
}
private static void fetchDataOnMapleHandbook() throws SQLException {
- String line;
-
- try {
- fileReader = new InputStreamReader(new FileInputStream(INPUT_FILE), StandardCharsets.UTF_8);
- bufferedReader = new BufferedReader(fileReader);
-
- PrintWriter printWriter = new PrintWriter(OUTPUT_FILE, StandardCharsets.UTF_8);
-
+ try (BufferedReader br = Files.newBufferedReader(INPUT_FILE);
+ PrintWriter printWriter = new PrintWriter(Files.newOutputStream(OUTPUT_FILE));) {
+ bufferedReader = br;
+ String line;
while ((line = bufferedReader.readLine()) != null) {
if (line.isEmpty()) {
printWriter.println("");
@@ -164,29 +164,27 @@ public class IdRetriever {
printWriter.println(str);
}
-
- printWriter.close();
- bufferedReader.close();
- fileReader.close();
} catch (IOException ex) {
System.out.println(ex.getMessage());
}
}
public static void main(String[] args) {
-
- try {
+ Instant instantStarted = Instant.now();
+ try (con) {
if (INSTALL_SQLTABLE) {
parseMapleHandbook();
} else {
fetchDataOnMapleHandbook();
}
-
- con.close();
} catch (SQLException e) {
System.out.println("Error: invalid SQL syntax");
e.printStackTrace();
}
+ Instant instantStopped = Instant.now();
+ Duration durationBetween = Duration.between(instantStarted, instantStopped);
+ System.out.println("Get elapsed time in milliseconds: " + durationBetween.toMillis());
+ System.out.println("Get elapsed time in seconds: " + durationBetween.toSeconds());
}
}
diff --git a/src/main/java/tools/mapletools/MapFieldLimitChecker.java b/src/main/java/tools/mapletools/MapFieldLimitChecker.java
index da54249d97..92909399bc 100644
--- a/src/main/java/tools/mapletools/MapFieldLimitChecker.java
+++ b/src/main/java/tools/mapletools/MapFieldLimitChecker.java
@@ -3,7 +3,9 @@ package tools.mapletools;
import provider.wz.WZFiles;
import java.io.*;
-import java.nio.charset.StandardCharsets;
+import java.nio.file.DirectoryStream;
+import java.nio.file.Files;
+import java.nio.file.Path;
import java.util.ArrayList;
/**
@@ -72,17 +74,17 @@ public class MapFieldLimitChecker {
}
}
- private static void listFiles(String directoryName, ArrayList files) {
- File directory = new File(directoryName);
-
- // get all the files from a directory
- File[] fList = directory.listFiles();
- for (File file : fList) {
- if (file.isFile()) {
- files.add(file);
- } else if (file.isDirectory()) {
- listFiles(file.getAbsolutePath(), files);
+ private static void listFiles(Path directory, ArrayList files) {
+ try (DirectoryStream stream = Files.newDirectoryStream(directory)) {
+ for (Path path : stream) {
+ if (Files.isRegularFile(path)) {
+ files.add(path);
+ } else if (Files.isDirectory(path)) {
+ listFiles(path, files);
+ }
}
+ } catch (IOException e) {
+ e.printStackTrace();
}
}
@@ -134,18 +136,17 @@ public class MapFieldLimitChecker {
private static void loadMapWz() throws IOException {
System.out.println("Reading Map.wz ...");
- ArrayList files = new ArrayList<>();
- listFiles(WZFiles.MAP.getFilePath() + "/Map", files);
+ ArrayList files = new ArrayList<>();
+ listFiles(WZFiles.MAP.getFile().resolve("Map"), files);
- for (File f : files) {
- InputStreamReader fileReader = new InputStreamReader(new FileInputStream(f), StandardCharsets.UTF_8);
- bufferedReader = new BufferedReader(fileReader);
+ for (Path f : files) {
+ try (BufferedReader br = Files.newBufferedReader(f)) {
+ bufferedReader = br;
- mapid = getMapIdFromFilename(f.getName());
- inspectMapEntry();
+ mapid = getMapIdFromFilename(f.getFileName().toString());
+ inspectMapEntry();
- bufferedReader.close();
- fileReader.close();
+ }
}
}
diff --git a/src/main/java/tools/mapletools/MapInfoRetriever.java b/src/main/java/tools/mapletools/MapInfoRetriever.java
index 6c35a62a06..86019e8a5d 100644
--- a/src/main/java/tools/mapletools/MapInfoRetriever.java
+++ b/src/main/java/tools/mapletools/MapInfoRetriever.java
@@ -5,6 +5,8 @@ import provider.wz.WZFiles;
import java.io.*;
import java.nio.charset.StandardCharsets;
+import java.nio.file.Files;
+import java.nio.file.Path;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
@@ -16,7 +18,7 @@ import java.util.List;
* the "info" node in their WZ node tree.
*/
public class MapInfoRetriever {
- private static final File OUTPUT_FILE = ToolConstants.getOutputFile("map_info_report.txt");
+ private static final Path OUTPUT_FILE = ToolConstants.getOutputFile("map_info_report.txt");
private static final List missingInfo = new ArrayList<>();
private static BufferedReader bufferedReader = null;
@@ -129,9 +131,7 @@ public class MapInfoRetriever {
}
private static void writeReport() {
- try {
- PrintWriter printWriter = new PrintWriter(OUTPUT_FILE, StandardCharsets.UTF_8);
-
+ try (PrintWriter printWriter = new PrintWriter(Files.newOutputStream(OUTPUT_FILE))) {
if (!missingInfo.isEmpty()) {
for (Integer i : missingInfo) {
printWriter.println(i);
@@ -139,8 +139,6 @@ public class MapInfoRetriever {
} else {
printWriter.println("All map files contain 'info' node.");
}
-
- printWriter.close();
} catch (IOException e) {
e.printStackTrace();
}
diff --git a/src/main/java/tools/mapletools/MesoFetcher.java b/src/main/java/tools/mapletools/MesoFetcher.java
index 7f777664c9..44384fcb12 100644
--- a/src/main/java/tools/mapletools/MesoFetcher.java
+++ b/src/main/java/tools/mapletools/MesoFetcher.java
@@ -3,12 +3,14 @@ package tools.mapletools;
import server.life.MonsterStats;
import tools.Pair;
-import java.io.File;
import java.io.PrintWriter;
-import java.nio.charset.StandardCharsets;
+import java.nio.file.Files;
+import java.nio.file.Path;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
+import java.time.Duration;
+import java.time.Instant;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
@@ -27,7 +29,7 @@ import java.util.Map;
*/
public class MesoFetcher {
- private static final File OUTPUT_FILE = ToolConstants.getOutputFile("meso_drop_data.sql");
+ private static final Path OUTPUT_FILE = ToolConstants.getOutputFile("meso_drop_data.sql");
private static final boolean PERMIT_MESOS_ON_DOJO_BOSSES = false;
private static final int MESO_ID = 0;
private static final int MIN_ITEMS = 4;
@@ -119,13 +121,11 @@ public class MesoFetcher {
private static void generateMissingMobsMesoRange() {
System.out.print("Generating missing ranges... ");
- Connection con = SimpleDatabaseConnection.getConnection();
- List existingMobs = new ArrayList<>(200);
-
- try {
- // select all mobs which doesn't drop mesos and have a fair amount of items dropping (meaning they are not an event mob)
- PreparedStatement ps = con.prepareStatement("SELECT dropperid FROM drop_data WHERE dropperid NOT IN (SELECT DISTINCT dropperid FROM drop_data WHERE itemid = 0) GROUP BY dropperid HAVING count(*) >= " + MIN_ITEMS + ";");
- ResultSet rs = ps.executeQuery();
+ try (Connection con = SimpleDatabaseConnection.getConnection();
+ PreparedStatement ps = con.prepareStatement("SELECT dropperid FROM drop_data WHERE dropperid NOT IN (SELECT DISTINCT dropperid FROM drop_data WHERE itemid = 0) GROUP BY dropperid HAVING count(*) >= " + MIN_ITEMS + ";");
+ ResultSet rs = ps.executeQuery();) {
+
+ List existingMobs = new ArrayList<>(200);
if (rs.isBeforeFirst()) {
while (rs.next()) {
@@ -137,18 +137,19 @@ public class MesoFetcher {
}
if (!existingMobs.isEmpty()) {
- printWriter = new PrintWriter(OUTPUT_FILE, StandardCharsets.UTF_8);
- printSqlHeader();
+ try (PrintWriter pw = new PrintWriter(Files.newOutputStream(OUTPUT_FILE))) {
+ printWriter = pw;
- for (int i = 0; i < existingMobs.size() - 1; i++) {
- printSqlMobMesoRange(existingMobs.get(i));
+ printSqlHeader();
+
+ for (int i = 0; i < existingMobs.size() - 1; i++) {
+ printSqlMobMesoRange(existingMobs.get(i));
+ }
+
+ printSqlMobMesoRangeFinal(existingMobs.get(existingMobs.size() - 1));
+
+ printSqlExceptions();
}
-
- printSqlMobMesoRangeFinal(existingMobs.get(existingMobs.size() - 1));
-
- printSqlExceptions();
-
- printWriter.close();
} else {
throw new Exception("ALREADY UPDATED");
}
@@ -157,10 +158,6 @@ public class MesoFetcher {
throw new Exception("ALREADY UPDATED");
}
- rs.close();
- ps.close();
- con.close();
-
System.out.println("done!");
} catch (Exception e) {
@@ -173,11 +170,17 @@ public class MesoFetcher {
}
public static void main(String[] args) {
- // load mob stats from WZ
+ Instant instantStarted = Instant.now();
+ // load mob stats from WZ
mobStats = MonsterStatFetcher.getAllMonsterStats();
calcAllMobsMesoRange();
generateMissingMobsMesoRange();
+ Instant instantStopped = Instant.now();
+ Duration durationBetween = Duration.between(instantStarted, instantStopped);
+ System.out.println("Get elapsed time in milliseconds: " + durationBetween.toMillis());
+ System.out.println("Get elapsed time in seconds: " + durationBetween.toSeconds());
+
}
}
diff --git a/src/main/java/tools/mapletools/MobBookIndexer.java b/src/main/java/tools/mapletools/MobBookIndexer.java
index 403b470430..56d566fae3 100644
--- a/src/main/java/tools/mapletools/MobBookIndexer.java
+++ b/src/main/java/tools/mapletools/MobBookIndexer.java
@@ -4,6 +4,8 @@ import provider.wz.WZFiles;
import java.io.*;
import java.nio.charset.StandardCharsets;
+import java.nio.file.Files;
+import java.nio.file.Path;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
@@ -16,7 +18,7 @@ import java.sql.SQLException;
* puts them on a SQL table with the correspondent mob cardid.
*/
public class MobBookIndexer {
- private static final File INPUT_FILE = new File(WZFiles.STRING.getFile(), "MonsterBook.img.xml");
+ private static final Path INPUT_FILE = WZFiles.STRING.getFile().resolve("MonsterBook.img.xml");
private static final Connection con = SimpleDatabaseConnection.getConnection();
private static BufferedReader bufferedReader = null;
@@ -123,15 +125,13 @@ public class MobBookIndexer {
}
private static void indexFromDropData() {
- // This will reference one line at a time
- String line = null;
- try {
- InputStreamReader fileReader = new InputStreamReader(new FileInputStream(INPUT_FILE), StandardCharsets.UTF_8);
- bufferedReader = new BufferedReader(fileReader);
+ try (con; BufferedReader br = Files.newBufferedReader(INPUT_FILE);) {
+ bufferedReader = br;
+ String line = null;
- PreparedStatement ps = con.prepareStatement("DROP TABLE IF EXISTS monstercardwz;");
- ps.execute();
+ PreparedStatement ps = con.prepareStatement("DROP TABLE IF EXISTS monstercardwz;");
+ ps.execute();
ps = con.prepareStatement("CREATE TABLE `monstercardwz` ("
+ "`id` int(10) unsigned NOT NULL AUTO_INCREMENT,"
@@ -141,25 +141,20 @@ public class MobBookIndexer {
+ ");");
ps.execute();
- while ((line = bufferedReader.readLine()) != null) {
- translateToken(line);
- }
-
- bufferedReader.close();
- fileReader.close();
-
- con.close();
- } catch (FileNotFoundException ex) {
- System.out.println("Unable to open file '" + INPUT_FILE + "'");
- } catch (IOException ex) {
- System.out.println("Error reading file '" + INPUT_FILE + "'");
- } catch (SQLException e) {
- System.out.println("Warning: Could not establish connection to database to change card chance rate.");
- System.out.println(e.getMessage());
- e.printStackTrace();
- } catch (Exception e) {
- e.printStackTrace();
- }
+ while ((line = bufferedReader.readLine()) != null) {
+ translateToken(line);
+ }
+ } catch (FileNotFoundException ex) {
+ System.out.println("Unable to open file '" + INPUT_FILE + "'");
+ } catch (IOException ex) {
+ System.out.println("Error reading file '" + INPUT_FILE + "'");
+ } catch (SQLException e) {
+ System.out.println("Warning: Could not establish connection to database to change card chance rate.");
+ System.out.println(e.getMessage());
+ e.printStackTrace();
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
}
public static void main(String[] args) {
diff --git a/src/main/java/tools/mapletools/MobBookUpdate.java b/src/main/java/tools/mapletools/MobBookUpdate.java
index fe5e28743b..a83af1c0e0 100644
--- a/src/main/java/tools/mapletools/MobBookUpdate.java
+++ b/src/main/java/tools/mapletools/MobBookUpdate.java
@@ -3,7 +3,8 @@ package tools.mapletools;
import provider.wz.WZFiles;
import java.io.*;
-import java.nio.charset.StandardCharsets;
+import java.nio.file.Files;
+import java.nio.file.Path;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
@@ -26,8 +27,8 @@ import java.sql.SQLException;
* remove the property 'MonsterBook.img' inside 'string.wz' and choose to import the xml generated with this software.
*/
public class MobBookUpdate {
- private static final File INPUT_FILE = new File(WZFiles.STRING.getFile(), "MonsterBook.img.xml");
- private static final File OUTPUT_FILE = ToolConstants.getOutputFile("MonsterBook_updated.img.xml");
+ private static final Path INPUT_FILE = WZFiles.STRING.getFile().resolve("MonsterBook.img.xml");
+ private static final Path OUTPUT_FILE = ToolConstants.getOutputFile("MonsterBook_updated.img.xml");
private static final Connection con = SimpleDatabaseConnection.getConnection();
private static PrintWriter printWriter = null;
@@ -143,23 +144,17 @@ public class MobBookUpdate {
}
private static void updateFromDropData() {
- // This will reference one line at a time
- String line = null;
+ try (con;
+ PrintWriter pw = new PrintWriter(Files.newOutputStream(OUTPUT_FILE));
+ BufferedReader br = Files.newBufferedReader(INPUT_FILE);) {
+ printWriter = pw;
+ bufferedReader = br;
- try {
- printWriter = new PrintWriter(OUTPUT_FILE, StandardCharsets.UTF_8);
- InputStreamReader fileReader = new InputStreamReader(new FileInputStream(INPUT_FILE), StandardCharsets.UTF_8);
- bufferedReader = new BufferedReader(fileReader);
+ String line = null;
while ((line = bufferedReader.readLine()) != null) {
translateToken(line);
}
-
- printWriter.close();
- bufferedReader.close();
- fileReader.close();
-
- con.close();
} catch (FileNotFoundException ex) {
System.out.println("Unable to open file '" + INPUT_FILE + "'");
} catch (IOException ex) {
diff --git a/src/main/java/tools/mapletools/MonsterStatFetcher.java b/src/main/java/tools/mapletools/MonsterStatFetcher.java
index e28d6506d0..508e6d0815 100644
--- a/src/main/java/tools/mapletools/MonsterStatFetcher.java
+++ b/src/main/java/tools/mapletools/MonsterStatFetcher.java
@@ -11,6 +11,8 @@ import server.life.LifeFactory.selfDestruction;
import server.life.MonsterStats;
import tools.Pair;
+import java.time.Duration;
+import java.time.Instant;
import java.util.*;
public class MonsterStatFetcher {
@@ -140,4 +142,15 @@ public class MonsterStatFetcher {
}
}
+ public static void main(String[] args) {
+ Instant instantStarted = Instant.now();
+ // load mob stats from WZ
+ Map mobStats = MonsterStatFetcher.getAllMonsterStats();
+ Instant instantStopped = Instant.now();
+ Duration durationBetween = Duration.between(instantStarted, instantStopped);
+ System.out.println("Get elapsed time in milliseconds: " + durationBetween.toMillis());
+ System.out.println("Get elapsed time in seconds: " + durationBetween.toSeconds());
+
+ }
+
}
diff --git a/src/main/java/tools/mapletools/NoItemIdFetcher.java b/src/main/java/tools/mapletools/NoItemIdFetcher.java
index 602d5420c2..7e55e11fff 100644
--- a/src/main/java/tools/mapletools/NoItemIdFetcher.java
+++ b/src/main/java/tools/mapletools/NoItemIdFetcher.java
@@ -4,6 +4,8 @@ import provider.wz.WZFiles;
import java.io.*;
import java.nio.charset.StandardCharsets;
+import java.nio.file.Files;
+import java.nio.file.Path;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
@@ -20,7 +22,7 @@ import java.util.*;
* A file is generated listing all the inexistent ids.
*/
public class NoItemIdFetcher {
- private static final File OUTPUT_FILE = ToolConstants.getOutputFile("no_item_id_report.txt");
+ private static final Path OUTPUT_FILE = ToolConstants.getOutputFile("no_item_id_report.txt");
private static final Connection con = SimpleDatabaseConnection.getConnection();
private static final Set existingIds = new HashSet<>();
@@ -174,7 +176,7 @@ public class NoItemIdFetcher {
}
private static void evaluateDropsFromDb() {
- try {
+ try (con) {
System.out.println("Evaluating item data on DB...");
evaluateDropsFromTable("drop_data");
@@ -192,23 +194,19 @@ public class NoItemIdFetcher {
System.out.println("Inexistent itemid count: " + nonExistingIds.size());
System.out.println("Total itemid count: " + existingIds.size());
- con.close();
} catch (Exception e) {
e.printStackTrace();
}
}
public static void main(String[] args) {
- try {
- printWriter = new PrintWriter(OUTPUT_FILE, StandardCharsets.UTF_8);
-
+ try (PrintWriter pw = new PrintWriter(Files.newOutputStream(OUTPUT_FILE))) {
+ printWriter = pw;
existingIds.add(0); // meso itemid
readEquipDataDirectory(WZFiles.CHARACTER.getFilePath());
readItemDataDirectory(WZFiles.ITEM.getFilePath());
evaluateDropsFromDb();
-
- printWriter.close();
} catch (Exception e) {
e.printStackTrace();
}
diff --git a/src/main/java/tools/mapletools/NoItemNameFetcher.java b/src/main/java/tools/mapletools/NoItemNameFetcher.java
index 3e7e3989cb..c5e463b769 100644
--- a/src/main/java/tools/mapletools/NoItemNameFetcher.java
+++ b/src/main/java/tools/mapletools/NoItemNameFetcher.java
@@ -3,9 +3,9 @@ package tools.mapletools;
import provider.*;
import provider.wz.WZFiles;
-import java.io.File;
import java.io.PrintWriter;
-import java.nio.charset.StandardCharsets;
+import java.nio.file.Files;
+import java.nio.file.Path;
import java.util.*;
/**
@@ -19,8 +19,8 @@ import java.util.*;
* Estimated parse time: 2 minutes
*/
public class NoItemNameFetcher {
- private static final File OUTPUT_FILE = ToolConstants.getOutputFile("no_item_name_result.txt");
- private static final File OUTPUT_XML_FILE = ToolConstants.getOutputFile("no_item_name_xml.txt");
+ private static final Path OUTPUT_FILE = ToolConstants.getOutputFile("no_item_name_result.txt");
+ private static final Path OUTPUT_XML_FILE = ToolConstants.getOutputFile("no_item_name_xml.txt");
private static final Map itemsWzPath = new HashMap<>();
private static final Map equipTypes = new HashMap<>();
@@ -435,32 +435,32 @@ public class NoItemNameFetcher {
private static void writeMissingStringWZNames(Map> missingNames) throws Exception {
System.out.println("Writing remaining 'String.wz' names...");
+ try (PrintWriter pw = new PrintWriter(Files.newOutputStream(OUTPUT_XML_FILE))) {
+ printWriter = pw;
- printWriter = new PrintWriter(OUTPUT_XML_FILE, StandardCharsets.UTF_8);
- printOutputFileHeader();
+ printOutputFileHeader();
+
+ String[] nodePaths = { "Cash.img", "Consume.img", "Eqp.img", "Etc.img", "Ins.img", "Pet.img" };
+ for (int i = 0; i < nodePaths.length; i++) {
+ writeMissingStringWZNode(nodePaths[i], missingNames.get(nodePaths[i]), i == 2);
+ }
- String[] nodePaths = {"Cash.img", "Consume.img", "Eqp.img", "Etc.img", "Ins.img", "Pet.img"};
- for (int i = 0; i < nodePaths.length; i++) {
- writeMissingStringWZNode(nodePaths[i], missingNames.get(nodePaths[i]), i == 2);
}
-
- printWriter.close();
}
public static void main(String[] args) {
- try {
+ try (PrintWriter pw = new PrintWriter(Files.newOutputStream(OUTPUT_FILE))) {
+ printWriter = pw;
curType = ItemType.EQP;
readEquipWZData();
curType = ItemType.UNDEF;
readItemWZData();
- readStringWZData(); // calculates the diff and effectively holds all items with no name property on the WZ
+ readStringWZData(); // calculates the diff and effectively holds all items with no name property on the WZ
System.out.println("Reporting results...");
- printWriter = new PrintWriter(OUTPUT_FILE, StandardCharsets.UTF_8);
printReportFileHeader();
printReportFileResults();
- printWriter.close();
Map> missingNames = filterMissingItemNames();
writeMissingStringWZNames(missingNames);
diff --git a/src/main/java/tools/mapletools/QuestItemCountFetcher.java b/src/main/java/tools/mapletools/QuestItemCountFetcher.java
index fb0a453a92..1881438f48 100644
--- a/src/main/java/tools/mapletools/QuestItemCountFetcher.java
+++ b/src/main/java/tools/mapletools/QuestItemCountFetcher.java
@@ -5,6 +5,8 @@ import tools.Pair;
import java.io.*;
import java.nio.charset.StandardCharsets;
+import java.nio.file.Files;
+import java.nio.file.Path;
import java.util.*;
/**
@@ -17,7 +19,7 @@ import java.util.*;
* Running it should generate a report file under "output" folder with the search results.
*/
public class QuestItemCountFetcher {
- private static final File OUTPUT_FILE = ToolConstants.getOutputFile("quest_item_count_report.txt");
+ private static final Path OUTPUT_FILE = ToolConstants.getOutputFile("quest_item_count_report.txt");
private static final String ACT_NAME = WZFiles.QUEST.getFilePath() + "/Act.img.xml";
private static final String CHECK_NAME = WZFiles.QUEST.getFilePath() + "/Check.img.xml";
private static final int INITIAL_STRING_LENGTH = 50;
@@ -241,17 +243,16 @@ public class QuestItemCountFetcher {
private static void reportQuestItemCountData() {
// This will reference one line at a time
- try {
+ try (PrintWriter pw = new PrintWriter(Files.newOutputStream(OUTPUT_FILE))) {
System.out.println("Reading WZs...");
readQuestItemCountData();
System.out.println("Reporting results...");
- printWriter = new PrintWriter(OUTPUT_FILE, StandardCharsets.UTF_8);
+ printWriter = pw;
printReportFileHeader();
printReportFileResults();
- printWriter.close();
System.out.println("Done!");
} catch (FileNotFoundException ex) {
System.out.println("Unable to open quest file.");
diff --git a/src/main/java/tools/mapletools/QuestItemFetcher.java b/src/main/java/tools/mapletools/QuestItemFetcher.java
index 3c3f6becca..440e96fd26 100644
--- a/src/main/java/tools/mapletools/QuestItemFetcher.java
+++ b/src/main/java/tools/mapletools/QuestItemFetcher.java
@@ -8,6 +8,8 @@ import tools.Pair;
import java.io.*;
import java.nio.charset.StandardCharsets;
+import java.nio.file.Files;
+import java.nio.file.Path;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
@@ -25,7 +27,7 @@ import java.util.*;
* Estimated parse time: 1 minute
*/
public class QuestItemFetcher {
- private static final File OUTPUT_FILE = ToolConstants.getOutputFile("quest_report.txt");
+ private static final Path OUTPUT_FILE = ToolConstants.getOutputFile("quest_report.txt");
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
@@ -409,32 +411,28 @@ public class QuestItemFetcher {
private static void reportQuestItemData() {
// This will reference one line at a time
String line = null;
- String fileName = null;
+ Path file = null;
- try {
+ try (PrintWriter pw = new PrintWriter(Files.newOutputStream(OUTPUT_FILE))) {
System.out.println("Reading WZs...");
- fileName = WZFiles.QUEST.getFilePath() + "/Check.img.xml";
- InputStreamReader fileReader = new InputStreamReader(new FileInputStream(fileName), StandardCharsets.UTF_8);
- bufferedReader = new BufferedReader(fileReader);
+ file = WZFiles.QUEST.getFile().resolve("Check.img.xml");
+ bufferedReader = Files.newBufferedReader(file);
while ((line = bufferedReader.readLine()) != null) {
- translateCheckToken(line); // fetch expired quests through here as well
+ translateCheckToken(line); // fetch expired quests through here as well
}
bufferedReader.close();
- fileReader.close();
- fileName = WZFiles.QUEST.getFilePath() + "/Act.img.xml";
- fileReader = new InputStreamReader(new FileInputStream(fileName), StandardCharsets.UTF_8);
- bufferedReader = new BufferedReader(fileReader);
+ file = WZFiles.QUEST.getFile().resolve("Act.img.xml");
+ bufferedReader = Files.newBufferedReader(file);
while ((line = bufferedReader.readLine()) != null) {
translateActToken(line);
}
bufferedReader.close();
- fileReader.close();
System.out.println("Calculating table diffs...");
calculateQuestItemDiff();
@@ -452,8 +450,9 @@ public class QuestItemFetcher {
filterDirectorySearchMatchingData("src", itemsWithQuest);
System.out.println("Reporting results...");
- // report suspects of missing quest drop data, as well as those drop data that may have incorrect questids.
- printWriter = new PrintWriter(OUTPUT_FILE, StandardCharsets.UTF_8);
+ // report suspects of missing quest drop data, as well as those drop data that
+ // may have incorrect questids.
+ printWriter = pw;
printReportFileHeader();
@@ -505,12 +504,11 @@ public class QuestItemFetcher {
}
}
- printWriter.close();
System.out.println("Done!");
} catch (FileNotFoundException ex) {
- System.out.println("Unable to open file '" + fileName + "'");
+ System.out.println("Unable to open file '" + file + "'");
} catch (IOException ex) {
- System.out.println("Error reading file '" + fileName + "'");
+ System.out.println("Error reading file '" + file + "'");
} catch (SQLException e) {
System.out.println("Warning: Could not establish connection to database to report quest data.");
System.out.println(e.getMessage());
diff --git a/src/main/java/tools/mapletools/QuestMesoFetcher.java b/src/main/java/tools/mapletools/QuestMesoFetcher.java
index 4bf1a8da95..c2aae9e4d5 100644
--- a/src/main/java/tools/mapletools/QuestMesoFetcher.java
+++ b/src/main/java/tools/mapletools/QuestMesoFetcher.java
@@ -3,7 +3,8 @@ package tools.mapletools;
import provider.wz.WZFiles;
import java.io.*;
-import java.nio.charset.StandardCharsets;
+import java.nio.file.Files;
+import java.nio.file.Path;
import java.util.*;
/**
@@ -16,7 +17,7 @@ import java.util.*;
* Running it should generate a report file under "output" folder with the search results.
*/
public class QuestMesoFetcher {
- private static final File OUTPUT_FILE = ToolConstants.getOutputFile("quest_meso_report.txt");
+ private static final Path OUTPUT_FILE = ToolConstants.getOutputFile("quest_meso_report.txt");
private static final boolean PRINT_FEES = true; // print missing values as additional info report
private static final int INITIAL_STRING_LENGTH = 50;
@@ -147,25 +148,21 @@ public class QuestMesoFetcher {
private static void readQuestMesoData() throws IOException {
String line;
- InputStreamReader fileReader = new InputStreamReader(new FileInputStream(WZFiles.QUEST.getFilePath() + "/Act.img.xml"), StandardCharsets.UTF_8);
- bufferedReader = new BufferedReader(fileReader);
+ bufferedReader = Files.newBufferedReader(WZFiles.QUEST.getFile().resolve("Act.img.xml"));
while ((line = bufferedReader.readLine()) != null) {
translateTokenAct(line);
}
bufferedReader.close();
- fileReader.close();
- fileReader = new InputStreamReader(new FileInputStream(WZFiles.QUEST.getFilePath() + "/Check.img.xml"), StandardCharsets.UTF_8);
- bufferedReader = new BufferedReader(fileReader);
+ bufferedReader = Files.newBufferedReader(WZFiles.QUEST.getFile().resolve("Check.img.xml"));
while ((line = bufferedReader.readLine()) != null) {
translateTokenCheck(line);
}
bufferedReader.close();
- fileReader.close();
}
private static void printReportFileHeader() {
@@ -232,20 +229,19 @@ public class QuestMesoFetcher {
private static void reportQuestMesoData() {
// This will reference one line at a time
- try {
+ try (PrintWriter pw = new PrintWriter(Files.newOutputStream(OUTPUT_FILE))) {
System.out.println("Reading WZs...");
readQuestMesoData();
System.out.println("Reporting results...");
// report missing meso checks on quest completes
- printWriter = new PrintWriter(OUTPUT_FILE, StandardCharsets.UTF_8);
+ printWriter = pw;
printReportFileHeader();
printReportFileResults(checkedMesoQuests, appliedMesoQuests, true);
printReportFileResults(appliedMesoQuests, checkedMesoQuests, false);
- printWriter.close();
System.out.println("Done!");
} catch (FileNotFoundException ex) {
System.out.println("Unable to open quest file.");
diff --git a/src/main/java/tools/mapletools/QuestlineFetcher.java b/src/main/java/tools/mapletools/QuestlineFetcher.java
index cd40f6c83b..25c8e256a0 100644
--- a/src/main/java/tools/mapletools/QuestlineFetcher.java
+++ b/src/main/java/tools/mapletools/QuestlineFetcher.java
@@ -4,6 +4,10 @@ import provider.wz.WZFiles;
import java.io.*;
import java.nio.charset.StandardCharsets;
+import java.nio.file.Files;
+import java.nio.file.Path;
+import java.time.Duration;
+import java.time.Instant;
import java.util.*;
/**
@@ -18,7 +22,7 @@ import java.util.*;
* Running it should generate a report file under "output" folder with the search results.
*/
public class QuestlineFetcher {
- private static final File OUTPUT_FILE = ToolConstants.getOutputFile("questline_report.txt");
+ private static final Path OUTPUT_FILE = ToolConstants.getOutputFile("questline_report.txt");
private static final String ACT_NAME = WZFiles.QUEST.getFilePath() + "/Act.img.xml";
private static final String CHECK_NAME = WZFiles.QUEST.getFilePath() + "/Check.img.xml";
private static final int INITIAL_STRING_LENGTH = 50;
@@ -289,7 +293,7 @@ public class QuestlineFetcher {
private static void reportQuestlineData() {
// This will reference one line at a time
- try {
+ try (PrintWriter pw = new PrintWriter(Files.newOutputStream(OUTPUT_FILE))) {
System.out.println("Reading quest scripts...");
instantiateQuestScriptFiles(ToolConstants.SCRIPTS_PATH + "/quest");
@@ -301,12 +305,11 @@ public class QuestlineFetcher {
calculateSkillRelatedMissingQuestScripts();
System.out.println("Reporting results...");
- printWriter = new PrintWriter(OUTPUT_FILE, StandardCharsets.UTF_8);
+ printWriter = pw;
printReportFileHeader();
printReportFileResults();
- printWriter.close();
System.out.println("Done!");
} catch (FileNotFoundException ex) {
System.out.println("Unable to open quest file.");
@@ -356,7 +359,13 @@ public class QuestlineFetcher {
*/
public static void main(String[] args) {
+ Instant instantStarted = Instant.now();
reportQuestlineData();
+ Instant instantStopped = Instant.now();
+ Duration durationBetween = Duration.between(instantStarted, instantStopped);
+ System.out.println("Get elapsed time in milliseconds: " + durationBetween.toMillis());
+ System.out.println("Get elapsed time in seconds: " + durationBetween.toSeconds());
+
}
}
diff --git a/src/main/java/tools/mapletools/ReactorDropFetcher.java b/src/main/java/tools/mapletools/ReactorDropFetcher.java
index c8c5497c5f..3c88abcc06 100644
--- a/src/main/java/tools/mapletools/ReactorDropFetcher.java
+++ b/src/main/java/tools/mapletools/ReactorDropFetcher.java
@@ -1,8 +1,11 @@
package tools.mapletools;
-import java.io.File;
+import java.io.IOException;
import java.io.PrintWriter;
-import java.nio.charset.StandardCharsets;
+import java.nio.file.DirectoryStream;
+import java.nio.file.Files;
+import java.nio.file.Path;
+import java.nio.file.Paths;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
@@ -16,7 +19,7 @@ import java.util.*;
* not yet coded.
*/
public class ReactorDropFetcher {
- private static final File OUTPUT_FILE = ToolConstants.getOutputFile("reactor_drop_report.txt");
+ private static final Path OUTPUT_FILE = ToolConstants.getOutputFile("reactor_drop_report.txt");
private static final String REACTOR_SCRIPT_PATH = ToolConstants.SCRIPTS_PATH + "/reactor";
private static final Connection con = SimpleDatabaseConnection.getConnection();
@@ -38,14 +41,14 @@ public class ReactorDropFetcher {
}
private static void removeScriptedReactorids(String directoryName) {
- File directory = new File(directoryName);
-
- // get all the files from a directory
- File[] fList = directory.listFiles();
- for (File file : fList) {
- if (file.isFile()) {
- reactors.remove(getReactorIdFromFilename(file.getName()));
+ try (DirectoryStream stream = Files.newDirectoryStream(Paths.get(directoryName))) {
+ for (Path path : stream) {
+ if (Files.isRegularFile(path)) {
+ reactors.remove(getReactorIdFromFilename(path.getFileName().toString()));
+ }
}
+ } catch (IOException e) {
+ e.printStackTrace();
}
}
@@ -84,19 +87,18 @@ public class ReactorDropFetcher {
}
private static void reportMissingReactors() {
- try {
+ try (con; PrintWriter pw = new PrintWriter(Files.newOutputStream(OUTPUT_FILE))) {
System.out.println("Fetching reactors from DB...");
fetchMissingReactorDrops();
- con.close();
- printWriter = new PrintWriter(OUTPUT_FILE, StandardCharsets.UTF_8);
+ printWriter = pw;
- // report suspects of missing quest drop data, as well as those drop data that may have incorrect questids.
+ // report suspects of missing quest drop data, as well as those drop data that
+ // may have incorrect questids.
System.out.println("Reporting results...");
printReportFileHeader();
reportMissingReactorDrops();
- printWriter.close();
System.out.println("Done!");
} catch (SQLException e) {
System.out.println("Warning: Could not establish connection to database to report quest data.");
diff --git a/src/main/java/tools/mapletools/SkillMakerFetcher.java b/src/main/java/tools/mapletools/SkillMakerFetcher.java
index 08dcf7f885..38a52ad07e 100644
--- a/src/main/java/tools/mapletools/SkillMakerFetcher.java
+++ b/src/main/java/tools/mapletools/SkillMakerFetcher.java
@@ -5,7 +5,8 @@ import server.ItemInformationProvider;
import tools.DatabaseConnection;
import java.io.*;
-import java.nio.charset.StandardCharsets;
+import java.nio.file.Files;
+import java.nio.file.Path;
import java.util.ArrayList;
import java.util.LinkedList;
import java.util.List;
@@ -20,8 +21,8 @@ import java.util.Map;
*/
public class SkillMakerFetcher {
- private static final File INPUT_FILE = new File(WZFiles.ETC.getFile(), "ItemMake.img.xml");
- private static final File OUTPUT_FILE = ToolConstants.getOutputFile("maker-data.sql");
+ private static final Path INPUT_FILE = WZFiles.ETC.getFile().resolve("ItemMake.img.xml");
+ private static final Path OUTPUT_FILE = ToolConstants.getOutputFile("maker-data.sql");
private static final int INITIAL_STRING_LENGTH = 50;
private static PrintWriter printWriter = null;
@@ -299,14 +300,14 @@ public class SkillMakerFetcher {
printWriter.println(sb_reward);
}
- private static void writeMakerTableData() {
- // This will reference one line at a time
+ private static void writeMakerTableData() {
+ // This will reference one line at a time
String line = null;
- try {
- printWriter = new PrintWriter(OUTPUT_FILE, StandardCharsets.UTF_8);
- InputStreamReader fileReader = new InputStreamReader(new FileInputStream(INPUT_FILE), StandardCharsets.UTF_8);
- bufferedReader = new BufferedReader(fileReader);
+ try (PrintWriter pw = new PrintWriter(Files.newOutputStream(OUTPUT_FILE));
+ BufferedReader br = Files.newBufferedReader(INPUT_FILE);) {
+ printWriter = pw;
+ bufferedReader = br;
resetMakerDataFields();
@@ -316,9 +317,6 @@ public class SkillMakerFetcher {
WriteMakerTableFile();
- printWriter.close();
- bufferedReader.close();
- fileReader.close();
} catch (FileNotFoundException ex) {
System.out.println("Unable to open file '" + INPUT_FILE + "'");
} catch (IOException ex) {
@@ -326,7 +324,7 @@ public class SkillMakerFetcher {
} catch (Exception e) {
e.printStackTrace();
}
- }
+ }
public static void main(String[] args) {
DatabaseConnection.initializeConnectionPool(); // Using ItemInformationProvider which loads som unrelated things from the db
diff --git a/src/main/java/tools/mapletools/SkillMakerReagentIndexer.java b/src/main/java/tools/mapletools/SkillMakerReagentIndexer.java
index 798bebb3e7..77708d225a 100644
--- a/src/main/java/tools/mapletools/SkillMakerReagentIndexer.java
+++ b/src/main/java/tools/mapletools/SkillMakerReagentIndexer.java
@@ -4,7 +4,8 @@ import provider.wz.WZFiles;
import tools.Pair;
import java.io.*;
-import java.nio.charset.StandardCharsets;
+import java.nio.file.Files;
+import java.nio.file.Path;
import java.util.ArrayList;
import java.util.List;
@@ -16,8 +17,8 @@ import java.util.List;
* by the server source.
*/
public class SkillMakerReagentIndexer {
- private static final File INPUT_FILE = new File(WZFiles.ITEM.getFile(), "Etc/0425.img.xml");
- private static final File OUTPUT_FILE = ToolConstants.getOutputFile("maker-reagent-data.sql");
+ private static final Path INPUT_FILE = WZFiles.ITEM.getFile().resolve("Etc/0425.img.xml");
+ private static final Path OUTPUT_FILE = ToolConstants.getOutputFile("maker-reagent-data.sql");
private static final int INITIAL_STRING_LENGTH = 50;
private static final List>> reagentList = new ArrayList<>();
@@ -147,26 +148,22 @@ public class SkillMakerReagentIndexer {
printWriter.println(sb);
}
- private static void writeMakerReagentTableData() {
+ private static void writeMakerReagentTableData() {
// This will reference one line at a time
String line = null;
- try {
- InputStreamReader fileReader = new InputStreamReader(new FileInputStream(INPUT_FILE), StandardCharsets.UTF_8);
- bufferedReader = new BufferedReader(fileReader);
+ try (PrintWriter pw = new PrintWriter(Files.newOutputStream(OUTPUT_FILE));
+ BufferedReader br = Files.newBufferedReader(INPUT_FILE);) {
+ bufferedReader = br;
while ((line = bufferedReader.readLine()) != null) {
translateToken(line);
}
- bufferedReader.close();
- fileReader.close();
-
SortReagentList();
- printWriter = new PrintWriter(OUTPUT_FILE, StandardCharsets.UTF_8);
+ printWriter = pw;
WriteMakerReagentTableFile();
- printWriter.close();
} catch (FileNotFoundException ex) {
System.out.println("Unable to open file '" + OUTPUT_FILE + "'");
} catch (IOException ex) {
diff --git a/src/main/java/tools/mapletools/SkillbookChanceFetcher.java b/src/main/java/tools/mapletools/SkillbookChanceFetcher.java
index 411c7626f2..9d9d065f68 100644
--- a/src/main/java/tools/mapletools/SkillbookChanceFetcher.java
+++ b/src/main/java/tools/mapletools/SkillbookChanceFetcher.java
@@ -3,10 +3,10 @@ package tools.mapletools;
import server.life.MonsterStats;
import tools.Pair;
-import java.io.File;
import java.io.IOException;
import java.io.PrintWriter;
-import java.nio.charset.StandardCharsets;
+import java.nio.file.Files;
+import java.nio.file.Path;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
@@ -27,7 +27,7 @@ import java.util.Map;
* drops.
*/
public class SkillbookChanceFetcher {
- private static final File OUTPUT_FILE = ToolConstants.getOutputFile("skillbook_drop_data.sql");
+ private static final Path OUTPUT_FILE = ToolConstants.getOutputFile("skillbook_drop_data.sql");
private static final Map, Integer> skillbookChances = new HashMap<>();
private static PrintWriter printWriter;
@@ -102,17 +102,17 @@ public class SkillbookChanceFetcher {
}
private static void generateSkillbookChanceUpdateFile() {
- try {
- printWriter = new PrintWriter(OUTPUT_FILE, StandardCharsets.UTF_8);
+ try (PrintWriter pw = new PrintWriter(Files.newOutputStream(OUTPUT_FILE))) {
+ printWriter = pw;
printSkillbookChanceUpdateSqlHeader();
List, Integer>> skillbookChancesList = sortedSkillbookChances();
for (Map.Entry, Integer> e : skillbookChancesList) {
- printWriter.println("(" + e.getKey().getLeft() + ", " + e.getKey().getRight() + ", 1, 1, 0, " + e.getValue() + "),");
+ printWriter.println("(" + e.getKey().getLeft() + ", " + e.getKey().getRight() + ", 1, 1, 0, "
+ + e.getValue() + "),");
}
- printWriter.close();
} catch (IOException ioe) {
ioe.printStackTrace();
}
diff --git a/src/main/java/tools/mapletools/SkillbookStackUpdate.java b/src/main/java/tools/mapletools/SkillbookStackUpdate.java
index c25609be87..cedd89a2b9 100644
--- a/src/main/java/tools/mapletools/SkillbookStackUpdate.java
+++ b/src/main/java/tools/mapletools/SkillbookStackUpdate.java
@@ -3,7 +3,11 @@ package tools.mapletools;
import provider.wz.WZFiles;
import java.io.*;
-import java.nio.charset.StandardCharsets;
+import java.nio.file.DirectoryStream;
+import java.nio.file.Files;
+import java.nio.file.Path;
+import java.time.Duration;
+import java.time.Instant;
/**
* @author RonanLana
@@ -15,8 +19,8 @@ import java.nio.charset.StandardCharsets;
* Estimated parse time: 10 seconds
*/
public class SkillbookStackUpdate {
- private static final File INPUT_DIRECTORY = new File(WZFiles.ITEM.getFile(), "Consume");
- private static final File OUTPUT_DIRECTORY = ToolConstants.getOutputFile("skillbook-update");
+ private static final Path INPUT_DIRECTORY = WZFiles.ITEM.getFile().resolve("Consume");
+ private static final Path OUTPUT_DIRECTORY = ToolConstants.getOutputFile("skillbook-update");
private static final int INITIAL_STRING_LENGTH = 50;
private static PrintWriter printWriter = null;
@@ -65,7 +69,6 @@ public class SkillbookStackUpdate {
private static void forwardCursor(int st) {
String line = null;
-
try {
while (status >= st && (line = bufferedReader.readLine()) != null) {
simpleToken(line);
@@ -111,47 +114,55 @@ public class SkillbookStackUpdate {
printWriter.println(token);
}
- private static void parseItemFile(File file, File outputFile) {
- setupDirectories(outputFile);
- // This will reference one line at a time
- String line = null;
+ private static void parseItemFile(Path file, Path outputFile) {
+ setupDirectories(outputFile);
- try {
- printWriter = new PrintWriter(outputFile);
- InputStreamReader fileReader = new InputStreamReader(new FileInputStream(file), StandardCharsets.UTF_8);
- bufferedReader = new BufferedReader(fileReader);
+ try (BufferedReader br = Files.newBufferedReader(file);
+ PrintWriter pw = new PrintWriter(Files.newOutputStream(outputFile))) {
+ bufferedReader = br;
+ printWriter = pw;
+ String line;
+ while ((line = bufferedReader.readLine()) != null) {
+ translateItemToken(line);
+ }
+ } catch (IOException ex) {
+ System.out.println("Error reading file '" + file.getFileName() + "'");
+ ex.printStackTrace();
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ }
- while ((line = bufferedReader.readLine()) != null) {
- translateItemToken(line);
+ private static void setupDirectories(Path file) {
+ if (!Files.exists(file.getParent())) {
+ try {
+ Files.createDirectories(file.getParent());
+ } catch (IOException e) {
+ System.out.println("Error creating folder '" + file.getParent() + "'");
+ e.printStackTrace();
+ }
+ }
+ }
+
+ private static void parseItemDirectory(Path inputDirectory, Path outputDirectory) {
+ try (DirectoryStream stream = Files.newDirectoryStream(inputDirectory)) {
+ for (Path path : stream) {
+ parseItemFile(path, outputDirectory.resolve(path.getFileName()));
}
-
- bufferedReader.close();
- fileReader.close();
- printWriter.close();
- } catch (IOException ex) {
- System.out.println("Error reading file '" + file.getName() + "'");
- ex.printStackTrace();
- } catch (Exception e) {
- e.printStackTrace();
- }
- }
-
- private static void setupDirectories(File file) {
- if (!file.getParentFile().exists()) {
- file.getParentFile().mkdirs();
- }
- }
-
- private static void parseItemDirectory(File inputDirectory, File outputDirectory) {
- for (File f : inputDirectory.listFiles()) {
- parseItemFile(f, new File(outputDirectory, f.getName()));
- }
+ } catch (IOException e) {
+ e.printStackTrace();
+ }
}
public static void main(String[] args) {
+ Instant instantStarted = Instant.now();
System.out.println("Reading item files...");
parseItemDirectory(INPUT_DIRECTORY, OUTPUT_DIRECTORY);
System.out.println("Done!");
+ Instant instantStopped = Instant.now();
+ Duration durationBetween = Duration.between(instantStarted, instantStopped);
+ System.out.println("Get elapsed time in milliseconds: " + durationBetween.toMillis());
+ System.out.println("Get elapsed time in seconds: " + durationBetween.toSeconds());
}
}
diff --git a/src/main/java/tools/mapletools/ToolConstants.java b/src/main/java/tools/mapletools/ToolConstants.java
index 641d8a7d69..b14a896d4f 100644
--- a/src/main/java/tools/mapletools/ToolConstants.java
+++ b/src/main/java/tools/mapletools/ToolConstants.java
@@ -1,18 +1,19 @@
package tools.mapletools;
-import java.io.File;
+import java.nio.file.Path;
+import java.nio.file.Paths;
class ToolConstants {
- static final File INPUT_DIRECTORY = new File("tools/input");
- static final File OUTPUT_DIRECTORY = new File("tools/output");
+ static final Path INPUT_DIRECTORY = Paths.get("tools/input");
+ static final Path OUTPUT_DIRECTORY = Paths.get("tools/output");
static final String SCRIPTS_PATH = "scripts";
static final String HANDBOOK_PATH = "handbook";
- static File getInputFile(String fileName) {
- return new File(INPUT_DIRECTORY, fileName);
+ static Path getInputFile(String fileName) {
+ return INPUT_DIRECTORY.resolve(fileName);
}
- static File getOutputFile(String fileName) {
- return new File(OUTPUT_DIRECTORY, fileName);
+ static Path getOutputFile(String fileName) {
+ return OUTPUT_DIRECTORY.resolve(fileName);
}
}
diff --git a/src/main/java/tools/mapletools/WorldmapChecker.java b/src/main/java/tools/mapletools/WorldmapChecker.java
index 5fda287730..a05c2b97a5 100644
--- a/src/main/java/tools/mapletools/WorldmapChecker.java
+++ b/src/main/java/tools/mapletools/WorldmapChecker.java
@@ -5,6 +5,8 @@ import tools.Pair;
import java.io.*;
import java.nio.charset.StandardCharsets;
+import java.nio.file.Files;
+import java.nio.file.Path;
import java.util.*;
/**
@@ -14,7 +16,7 @@ import java.util.*;
* throughout the map tree (area map -> continent map -> world map) but are currently missing.
*/
public class WorldmapChecker {
- private static final File OUTPUT_FILE = ToolConstants.getOutputFile("worldmap_report.txt");
+ private static final Path OUTPUT_FILE = ToolConstants.getOutputFile("worldmap_report.txt");
private static final int INITIAL_STRING_LENGTH = 50;
private static final Map> worldMapids = new HashMap<>();
private static final Map parentWorldmaps = new HashMap<>();
@@ -186,8 +188,8 @@ public class WorldmapChecker {
}
private static void verifyWorldmapTreeMapids() {
- try {
- printWriter = new PrintWriter(OUTPUT_FILE, StandardCharsets.UTF_8);
+ try (PrintWriter pw = new PrintWriter(Files.newOutputStream(OUTPUT_FILE))) {
+ printWriter = pw;
printReportFileHeader();
if (rootWorldmaps.size() > 1) {
@@ -242,7 +244,6 @@ public class WorldmapChecker {
printReportFileResults(unreferencedEntries);
}
- printWriter.close();
} catch (Exception e) {
e.printStackTrace();
}