Advertisement
Neo-Craft

Account data migre

Jan 26th, 2014
380
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 7.08 KB | None | 0 0
  1. package kernel;
  2.  
  3. import java.sql.*;
  4.  
  5. /**
  6.  *
  7.  * @author Neo-Craft
  8.  */
  9. public class Main {
  10.  
  11.     /**
  12.      * @param args the command line arguments
  13.      */
  14.     public static String DB_HOST;
  15.     public static String DB_USER;
  16.     public static String DB_PASS;
  17.     public static String DB_NAME;
  18.  
  19.     static {
  20.         Runtime.getRuntime().addShutdownHook(new Thread() {
  21.             @Override
  22.             public void run() {
  23.                 Main.stop();
  24.             }
  25.         });
  26.     }
  27.  
  28.     public static void stop() {
  29.         System.out.println("Closing patcher...");
  30.     }
  31.  
  32.     public static void main(String[] args) {
  33.         System.out.println("NEO-Patcher");
  34.         System.out.println("========================");
  35.         if (args.length != 4) {
  36.             System.out.println("Bad args, you must use : [DB_HOST] [DB_USER] [DB_PASS] [DB_NAME]");
  37.             return;
  38.         } else {
  39.             DB_HOST = args[0];
  40.             DB_USER = args[1];
  41.             if (!args[2].equalsIgnoreCase("null")) {
  42.                 DB_PASS = args[2];
  43.             }
  44.             DB_NAME = args[3];
  45.             System.out.println("Parsing args...");
  46.             System.out.println("DB_HOST : " + args[0]);
  47.             System.out.println("DB_USER : " + args[1]);
  48.             System.out.println("DB_PASS : " + args[2]);
  49.             System.out.println("DB_NAME : " + args[3]);
  50.             System.out.println("Args loaded.");
  51.         }
  52.         System.out.println("Patching.....");
  53.         try {
  54.             String connectionURL = "jdbc:mysql://" + DB_HOST + ":3306/" + DB_NAME;
  55.             Connection connection = null;
  56.             Statement statement = null;
  57.             ResultSet rs = null;
  58.             ResultSet rs2 = null;
  59.             int updateQuery = 0;
  60.  
  61.             // Load JBBC driver "com.mysql.jdbc.Driver".
  62.             Class.forName("com.mysql.jdbc.Driver").newInstance();
  63.  
  64.             /* Create a connection by using getConnection()
  65.              method that takes parameters of string type
  66.              connection url, user name and password to
  67.              connect to database. */
  68.             connection = DriverManager.getConnection(connectionURL, DB_USER, DB_PASS);
  69.  
  70.  
  71.             /* createStatement() is used for create
  72.              statement object that is used for sending sql
  73.              statements to the specified database. */
  74.             statement = connection.createStatement();
  75.  
  76.             // sql query of string type to create a data base.
  77.             String QueryString = "CREATE TABLE `realmlist` ( `id` int(11) NOT NULL,`address` varchar(255) NOT NULL, `port` int(11) NOT NULL, `player_limit` int(11) NOT NULL,`allowedSecurityLevel` int(11) NOT NULL,`key` varchar(255) NOT NULL,PRIMARY KEY (`id`)) ENGINE=InnoDB DEFAULT CHARSET=latin1;";
  78.  
  79.             updateQuery = statement.executeUpdate(QueryString);
  80.  
  81.             // sql query to insert values in the specified table.
  82.             QueryString = "INSERT INTO `realmlist` VALUES ('1', '199.83.49.35', '5552', '2000', '0', 'jiva');";
  83.  
  84.             updateQuery = statement.executeUpdate(QueryString);
  85.          
  86.  
  87.             if (updateQuery != 0) {
  88.                 System.out.println("Realmlist table is created successfully and " + updateQuery + " row is inserted. ");
  89.             }
  90.            
  91.             QueryString = "ALTER TABLE `personnages` ADD COLUMN `server_id` INT(11) NOT NULL DEFAULT '1', ADD COLUMN `logged` INT(11) NOT NULL DEFAULT '0';";
  92.  
  93.             updateQuery = statement.executeUpdate(QueryString);
  94.            
  95.             System.out.println("COLUMN `server_id`,`logged` added to personnages tables");
  96.            
  97.             QueryString = "CREATE TABLE `accounts_data` (`guid` int(11) NOT NULL AUTO_INCREMENT,`bank` text NOT NULL,`bankkamas` bigint(32) NOT NULL,`stables` text NOT NULL,`friends` text NOT NULL,`enemys` text NOT NULL,`seeFriend` tinyint(3) NOT NULL DEFAULT '0',PRIMARY KEY (`guid`)) ENGINE=InnoDB AUTO_INCREMENT=160870 DEFAULT CHARSET=latin1;";
  98.  
  99.             updateQuery = statement.executeUpdate(QueryString);
  100.            
  101.             // sql query to retrieve values from the specified table.  
  102.             QueryString = "SELECT guid,bank,bankKamas,stable,friends,enemy from accounts";
  103.             rs = statement.executeQuery(QueryString);
  104.             Statement nstaement = connection.createStatement();
  105.             Statement vstaement = connection.createStatement();
  106.             int Row = 0;
  107.             while (rs.next()) {
  108.                 //TODO Map of Guid,Pseudo accounts to don't lose time to query many time x)
  109.                 String Friends = "";
  110.                 String Ennemys ="";
  111.                 int guid;
  112.                 for(String a : rs.getString(5).split(";")){
  113.                     try{
  114.                         if(a.isEmpty()){
  115.                             continue;
  116.                         }
  117.                         guid = Integer.parseInt(a);
  118.                         rs2 = vstaement.executeQuery("select pseudo from accounts where guid ="+guid+";");
  119.                         if(rs2.first()){
  120.                             Friends += guid+"|"+rs2.getString(1).trim()+";";
  121.                         }
  122.                         else{
  123.                             continue;
  124.                         }
  125.                     }
  126.                     catch(Exception e){
  127.                         e.printStackTrace();
  128.                         continue;
  129.                     }
  130.                 }
  131.                 for(String a : rs.getString(6).split(";")){
  132.                     try{
  133.                         if(a.isEmpty()){
  134.                             continue;
  135.                         }
  136.                         guid = Integer.parseInt(a);
  137.                         rs2 = vstaement.executeQuery("select pseudo from accounts where guid ="+guid+";");
  138.                         if(rs2.first()){
  139.                             Ennemys += guid+"|"+rs2.getString(1).trim()+";";
  140.                         }
  141.                         else{
  142.                             continue;
  143.                         }
  144.                     }
  145.                     catch(Exception e){
  146.                         e.printStackTrace();
  147.                         continue;
  148.                     }
  149.                 }
  150.                 nstaement.executeUpdate("INSERT INTO `accounts_data` VALUES ('"+rs.getInt(1)+"', '"+rs.getString(2)+"', '"+rs.getLong(3)+"', '"+rs.getString(4)+"', '"+Friends+"', '"+Ennemys+"', '1');");
  151.                 Row++;
  152.                 //System.out.println(rs.getInt(1) + " " + rs.getString(2) + "  " + rs.getLong(3) + "  " + rs.getString(4) + " " + rs.getString(5) + "   " + rs.getString(6) + "  \n ");
  153.             }
  154.             System.out.println("AccountData table is created successfully and " + Row + " row is inserted. ");
  155.             // close all the connections.
  156.             if(rs2 != null)
  157.                 rs2.close();
  158.             rs.close();
  159.             nstaement.close();
  160.             vstaement.close();
  161.             statement.close();
  162.             connection.close();
  163.         } catch (Exception ex) {
  164.             System.out.println("Unable to connect to batabase.");
  165.             ex.printStackTrace();
  166.         }
  167.     }
  168. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement