From c437a0808479244eae614b8ed9222bc78b8f6f8b Mon Sep 17 00:00:00 2001 From: P0nk Date: Sun, 11 Jul 2021 14:44:15 +0200 Subject: [PATCH] Move MapleSkillMakerReagentIndexer to main module --- .../mapletools/SkillMakerReagentIndexer.java | 156 +++++++----------- .../lib/MakerReagentData.sql | 56 ------- .../mapleskillmakerreagentindexer/Pair.java | 121 -------------- 3 files changed, 61 insertions(+), 272 deletions(-) rename tools/MapleSkillMakerReagentIndexer/src/mapleskillmakerreagentindexer/MapleSkillMakerReagentIndexer.java => src/main/java/tools/mapletools/SkillMakerReagentIndexer.java (52%) delete mode 100644 tools/MapleSkillMakerReagentIndexer/lib/MakerReagentData.sql delete mode 100644 tools/MapleSkillMakerReagentIndexer/src/mapleskillmakerreagentindexer/Pair.java diff --git a/tools/MapleSkillMakerReagentIndexer/src/mapleskillmakerreagentindexer/MapleSkillMakerReagentIndexer.java b/src/main/java/tools/mapletools/SkillMakerReagentIndexer.java similarity index 52% rename from tools/MapleSkillMakerReagentIndexer/src/mapleskillmakerreagentindexer/MapleSkillMakerReagentIndexer.java rename to src/main/java/tools/mapletools/SkillMakerReagentIndexer.java index 520c17fe28..798bebb3e7 100644 --- a/tools/MapleSkillMakerReagentIndexer/src/mapleskillmakerreagentindexer/MapleSkillMakerReagentIndexer.java +++ b/src/main/java/tools/mapletools/SkillMakerReagentIndexer.java @@ -1,57 +1,31 @@ -/* - This file is part of the HeavenMS MapleStory Server - Copyleft (L) 2016 - 2019 RonanLana +package tools.mapletools; - This program is free software: you can redistribute it and/or modify - it under the terms of the GNU Affero General Public License as - published by the Free Software Foundation version 3 as published by - the Free Software Foundation. You may not use, modify or distribute - this program under any other version of the GNU Affero General Public - License. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU Affero General Public License for more details. - - You should have received a copy of the GNU Affero General Public License - along with this program. If not, see . -*/ -package mapleskillmakerreagentindexer; +import provider.wz.WZFiles; +import tools.Pair; import java.io.*; +import java.nio.charset.StandardCharsets; import java.util.ArrayList; -import java.util.Collections; import java.util.List; /** - * * @author RonanLana - * + *

* The main objective of this program is to index relevant reagent data * from the Item.wz folder and generate a SQL table with them, to be used * by the server source. - * */ -public class MapleSkillMakerReagentIndexer { - static String host = "jdbc:mysql://localhost:3306/cosmic"; - static String driver = "com.mysql.jdbc.Driver"; - static String username = "cosmic_server"; - static String password = "snailshell"; +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 int INITIAL_STRING_LENGTH = 50; + private static final List>> reagentList = new ArrayList<>(); - static String fileName = "../../wz/Item.wz/Etc/0425.img.xml"; - static String newFile = "lib/MakerReagentData.sql"; + private static PrintWriter printWriter = null; + private static BufferedReader bufferedReader = null; + private static byte status = 0; + private static int id = -1; - static PrintWriter printWriter = null; - static InputStreamReader fileReader = null; - static BufferedReader bufferedReader = null; - static byte status = 0; - - static int id = -1; - static List>> reagentList = new ArrayList<>(); - - static int initialStringLength = 50; - private static String getName(String token) { int i, j; char[] dest; @@ -61,13 +35,13 @@ public class MapleSkillMakerReagentIndexer { i = token.indexOf("\"", i) + 1; //lower bound of the string j = token.indexOf("\"", i); //upper bound - dest = new char[initialStringLength]; + dest = new char[INITIAL_STRING_LENGTH]; token.getChars(i, j, dest, 0); d = new String(dest); - return(d.trim()); + return (d.trim()); } - + private static String getValue(String token) { int i, j; char[] dest; @@ -77,140 +51,132 @@ public class MapleSkillMakerReagentIndexer { i = token.indexOf("\"", i) + 1; //lower bound of the string j = token.indexOf("\"", i); //upper bound - dest = new char[initialStringLength]; + dest = new char[INITIAL_STRING_LENGTH]; token.getChars(i, j, dest, 0); d = new String(dest); - return(d.trim()); + return (d.trim()); } private static void simpleToken(String token) { - if(token.contains("/imgdir")) { + if (token.contains("/imgdir")) { status -= 1; - } - else if(token.contains("imgdir")) { + } else if (token.contains("imgdir")) { status += 1; } } - + private static void forwardCursor(int st) { String line = null; try { - while(status >= st && (line = bufferedReader.readLine()) != null) { + while (status >= st && (line = bufferedReader.readLine()) != null) { simpleToken(line); } - } - catch(Exception e) { + } catch (Exception e) { e.printStackTrace(); } } - + private static void translateToken(String token) { String d; - if(token.contains("/imgdir")) { + if (token.contains("/imgdir")) { status -= 1; - } - else if(token.contains("imgdir")) { - if(status == 1) { //getting id + } else if (token.contains("imgdir")) { + if (status == 1) { //getting id d = getName(token); id = Integer.parseInt(d); System.out.println("Parsing maker reagent id " + id); - } else if(status == 2) { + } else if (status == 2) { d = getName(token); - if(!d.equals("info")) { + if (!d.equals("info")) { System.out.println("not info"); forwardCursor(status); } } - + status += 1; } else { - if(status == 3) { - if(token.contains("int")) { + if (status == 3) { + if (token.contains("int")) { d = getName(token); - - if(d.contains("inc") || d.contains("rand")) { + + if (d.contains("inc") || d.contains("rand")) { Integer v = Integer.valueOf(getValue(token)); Pair reagBuff = new Pair<>(d, v); - + Pair> reagItem = new Pair<>(id, reagBuff); reagentList.add(reagItem); } } else { - if(token.contains("canvas")) { + if (token.contains("canvas")) { forwardCursor(status + 1); } } } } } - + private static void SortReagentList() { - Collections.sort(reagentList, (p1, p2) -> p1.getLeft().compareTo(p2.getLeft())); + reagentList.sort((p1, p2) -> p1.getLeft().compareTo(p2.getLeft())); } - + private static void WriteMakerReagentTableFile() { printWriter.println(" # SQL File autogenerated from the MapleSkillMakerReagentIndexer feature by Ronan Lana."); printWriter.println(" # Generated data is conformant with the Item.wz folder used to compile this."); printWriter.println(); - + printWriter.println("CREATE TABLE IF NOT EXISTS `makerreagentdata` ("); printWriter.println(" `itemid` int(11) NOT NULL,"); printWriter.println(" `stat` varchar(20) NOT NULL,"); printWriter.println(" `value` smallint(6) NOT NULL,"); printWriter.println(" PRIMARY KEY (`itemid`)"); - printWriter.println(") ENGINE=MyISAM DEFAULT CHARSET=latin1;"); + printWriter.println(");"); printWriter.println(); - + StringBuilder sb = new StringBuilder("INSERT IGNORE INTO `makerreagentdata` (`itemid`, `stat`, `value`) VALUES\r\n"); - - for(Pair> it : reagentList) { + + for (Pair> it : reagentList) { sb.append(" (" + it.left + ", \"" + it.right.left + "\", " + it.right.right + "),\r\n"); } - + sb.setLength(sb.length() - 3); sb.append(";"); - + printWriter.println(sb); } - private static void WriteMakerReagentTableData() { + private static void writeMakerReagentTableData() { // This will reference one line at a time String line = null; try { - fileReader = new InputStreamReader(new FileInputStream(fileName), "UTF-8"); + InputStreamReader fileReader = new InputStreamReader(new FileInputStream(INPUT_FILE), StandardCharsets.UTF_8); bufferedReader = new BufferedReader(fileReader); - - while((line = bufferedReader.readLine()) != null) { + + while ((line = bufferedReader.readLine()) != null) { translateToken(line); } - + bufferedReader.close(); fileReader.close(); - + SortReagentList(); - - printWriter = new PrintWriter(newFile, "UTF-8"); + + printWriter = new PrintWriter(OUTPUT_FILE, StandardCharsets.UTF_8); WriteMakerReagentTableFile(); printWriter.close(); - } - - catch(FileNotFoundException ex) { - System.out.println("Unable to open file '" + fileName + "'"); - } - catch(IOException ex) { - System.out.println("Error reading file '" + fileName + "'"); - } - - catch(Exception e) { + } catch (FileNotFoundException ex) { + System.out.println("Unable to open file '" + OUTPUT_FILE + "'"); + } catch (IOException ex) { + System.out.println("Error reading file '" + OUTPUT_FILE + "'"); + } catch (Exception e) { e.printStackTrace(); } } public static void main(String[] args) { - WriteMakerReagentTableData(); + writeMakerReagentTableData(); } } diff --git a/tools/MapleSkillMakerReagentIndexer/lib/MakerReagentData.sql b/tools/MapleSkillMakerReagentIndexer/lib/MakerReagentData.sql deleted file mode 100644 index 02c536569c..0000000000 --- a/tools/MapleSkillMakerReagentIndexer/lib/MakerReagentData.sql +++ /dev/null @@ -1,56 +0,0 @@ - # SQL File autogenerated from the MapleSkillMakerReagentIndexer feature by Ronan Lana. - # Generated data is conformant with the Item.wz folder used to compile this. - -CREATE TABLE IF NOT EXISTS `makerreagentdata` ( - `itemid` int(11) NOT NULL, - `stat` varchar(20) NOT NULL, - `value` smallint(6) NOT NULL, - PRIMARY KEY (`itemid`) -) ENGINE=MyISAM DEFAULT CHARSET=latin1; - -INSERT IGNORE INTO `makerreagentdata` (`itemid`, `stat`, `value`) VALUES - (4250000, "incPAD", 1), - (4250001, "incPAD", 2), - (4250002, "incPAD", 3), - (4250100, "incMAD", 1), - (4250101, "incMAD", 2), - (4250102, "incMAD", 3), - (4250200, "incACC", 2), - (4250201, "incACC", 3), - (4250202, "incACC", 5), - (4250300, "incEVA", 2), - (4250301, "incEVA", 3), - (4250302, "incEVA", 5), - (4250400, "incSpeed", 2), - (4250401, "incSpeed", 3), - (4250402, "incSpeed", 5), - (4250500, "incJump", 1), - (4250501, "incJump", 2), - (4250502, "incJump", 3), - (4250600, "incMaxHP", 10), - (4250601, "incMaxHP", 20), - (4250602, "incMaxHP", 30), - (4250700, "incMaxMP", 10), - (4250701, "incMaxMP", 20), - (4250702, "incMaxMP", 30), - (4250800, "incSTR", 2), - (4250801, "incSTR", 3), - (4250802, "incSTR", 5), - (4250900, "incINT", 2), - (4250901, "incINT", 3), - (4250902, "incINT", 5), - (4251000, "incLUK", 2), - (4251001, "incLUK", 3), - (4251002, "incLUK", 5), - (4251100, "incDEX", 2), - (4251101, "incDEX", 3), - (4251102, "incDEX", 5), - (4251200, "incReqLevel", -1), - (4251201, "incReqLevel", -2), - (4251202, "incReqLevel", -3), - (4251300, "randOption", 1), - (4251301, "randOption", 2), - (4251302, "randOption", 3), - (4251400, "randStat", 2), - (4251401, "randStat", 3), - (4251402, "randStat", 5); diff --git a/tools/MapleSkillMakerReagentIndexer/src/mapleskillmakerreagentindexer/Pair.java b/tools/MapleSkillMakerReagentIndexer/src/mapleskillmakerreagentindexer/Pair.java deleted file mode 100644 index 895735268b..0000000000 --- a/tools/MapleSkillMakerReagentIndexer/src/mapleskillmakerreagentindexer/Pair.java +++ /dev/null @@ -1,121 +0,0 @@ -/* -This file is part of the OdinMS Maple Story Server -Copyright (C) 2008 ~ 2010 Patrick Huy -Matthias Butz -Jan Christian Meyer - -This program is free software: you can redistribute it and/or modify -it under the terms of the GNU Affero General Public License version 3 -as published by the Free Software Foundation. You may not use, modify -or distribute this program under any other version of the -GNU Affero General Public License. - -This program is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU Affero General Public License for more details. - -You should have received a copy of the GNU Affero General Public License -along with this program. If not, see . - */ -package mapleskillmakerreagentindexer; - -/** - * Represents a pair of values. - * - * @author Frz - * @since Revision 333 - * @version 1.0 - * - * @param The type of the left value. - * @param The type of the right value. - */ -public class Pair { - - public E left; - public F right; - - /** - * Class constructor - pairs two objects together. - * - * @param left The left object. - * @param right The right object. - */ - public Pair(E left, F right) { - this.left = left; - this.right = right; - } - - /** - * Gets the left value. - * - * @return The left value. - */ - public E getLeft() { - return left; - } - - /** - * Gets the right value. - * - * @return The right value. - */ - public F getRight() { - return right; - } - - /** - * Turns the pair into a string. - * - * @return Each value of the pair as a string joined with a colon. - */ - @Override - public String toString() { - return left.toString() + ":" + right.toString(); - } - - /** - * Gets the hash code of this pair. - */ - @Override - public int hashCode() { - final int prime = 31; - int result = 1; - result = prime * result + ((left == null) ? 0 : left.hashCode()); - result = prime * result + ((right == null) ? 0 : right.hashCode()); - return result; - } - - /** - * Checks to see if two pairs are equal. - */ - @SuppressWarnings("unchecked") - @Override - public boolean equals(Object obj) { - if (this == obj) { - return true; - } - if (obj == null) { - return false; - } - if (getClass() != obj.getClass()) { - return false; - } - final Pair other = (Pair) obj; - if (left == null) { - if (other.left != null) { - return false; - } - } else if (!left.equals(other.left)) { - return false; - } - if (right == null) { - if (other.right != null) { - return false; - } - } else if (!right.equals(other.right)) { - return false; - } - return true; - } -} \ No newline at end of file