Advertisement
Guest User

Untitled

a guest
May 2nd, 2017
72
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 10.07 KB | None | 0 0
  1. package net.st0rm.ss;
  2.  
  3. import java.sql.*;
  4.  
  5. import net.st0rm.ss.objects.Item;
  6.  
  7. public class Database {
  8.     private static Database instance = null;
  9.     private Connection con = null;
  10.  
  11.     private Database() {
  12.     }
  13.  
  14.     public static Database getInstance() {
  15.         try {
  16.             if (instance == null || instance.con.isClosed()) {
  17.                 instance = new Database();
  18.                 instance.connect();
  19.             }
  20.         } catch (SQLException e) {
  21.             instance = new Database();
  22.             instance.connect();
  23.         }
  24.         return instance;
  25.     }
  26.  
  27.     /**
  28.      * Returns the connection, connects only if current connection does not
  29.      * exist openly
  30.      *
  31.      * @return Connection to MySQL
  32.      */
  33.     public Connection connect() {
  34.         try {
  35.             if (con != null && !con.isClosed())
  36.                 return con;
  37.             con = DriverManager.getConnection("jdbc:mysql://"
  38.                     + Config.prop.getProperty("MySQLHost") + ":"
  39.                     + Config.prop.getProperty("MySQLPort") + "/"
  40.                     + Config.prop.getProperty("MySQLDatabase"), Config.prop
  41.                     .getProperty("MySQLUser"), Config.prop
  42.                     .getProperty("MySQLPass"));
  43.             /*
  44.              * con.prepareStatement("" +
  45.              * "CREATE TABLE IF NOT EXISTS `aliases` (`alias` text NOT NULL,`definition` text NOT NULL) ENGINE=MyISAM DEFAULT CHARSET=latin1;"
  46.              * +
  47.              * "CREATE TABLE IF NOT EXISTS `bans` (`id` bigint(20) unsigned NOT NULL auto_increment,`name` varchar(50) default NULL,`ip` varchar(15) default NULL,`serial` varchar(64) default NULL,`time_placed` varchar(30) default '0',`time_expires` varchar(30) default '0',`reason` text,  PRIMARY KEY  (`id`)) ENGINE=MyISAM AUTO_INCREMENT=1417 DEFAULT CHARSET=latin1;"
  48.              * +
  49.              * "CREATE TABLE IF NOT EXISTS `fame` (`name` varchar(50) NOT NULL,`fame` int(11) default '0',`last_famed` varchar(15) default '0',PRIMARY KEY  (`name`)) ENGINE=MyISAM DEFAULT CHARSET=latin1;"
  50.              * +
  51.              * "CREATE TABLE IF NOT EXISTS `join_messages` (`name` varchar(50) NOT NULL,`message` text,PRIMARY KEY  (`name`)) ENGINE=MyISAM DEFAULT CHARSET=latin1;"
  52.              * +
  53.              * "CREATE TABLE IF NOT EXISTS `mods` (`name` varchar(50) NOT NULL,`flags` varchar(30) NOT NULL,`ip` varchar(15) default NULL,`last_login` int(30) default '0',`suspended` int(1) default '0',PRIMARY KEY  (`name`)) ENGINE=MyISAM DEFAULT CHARSET=latin1;"
  54.              * +
  55.              * "CREATE TABLE IF NOT EXISTS `modules` (`name` varchar(100) NOT NULL,`enabled` int(1) default '1',PRIMARY KEY  (`name`)) ENGINE=MyISAM DEFAULT CHARSET=latin1;"
  56.              * +
  57.              * "CREATE TABLE IF NOT EXISTS `music` (`song` text NOT NULL,`file` varchar(50) NOT NULL,`length` decimal(10,0) NOT NULL,PRIMARY KEY  (`file`)) ENGINE=MyISAM DEFAULT CHARSET=latin1;"
  58.              * +
  59.              * "CREATE TABLE IF NOT EXISTS `offenses` (`case` int(11) NOT NULL auto_increment,`name` varchar(50) NOT NULL,`time` varchar(30) default '0',`ip` varchar(15) default '255.255.255.255',`data` text,PRIMARY KEY  (`case`)) ENGINE=MyISAM AUTO_INCREMENT=9155 DEFAULT CHARSET=latin1;"
  60.              * +
  61.              * "CREATE TABLE IF NOT EXISTS `rank_table` (`name` text NOT NULL,`min_points` int(11) NOT NULL default '0',`max_points` int(11) NOT NULL default '0',`credits` int(5) default NULL) ENGINE=MyISAM DEFAULT CHARSET=latin1;"
  62.              * +
  63.              * "CREATE TABLE IF NOT EXISTS `ranks` (`name` varchar(50) NOT NULL,`rank` int(11) default '0',`banned` int(1) default '0',PRIMARY KEY  (`name`)) ENGINE=MyISAM DEFAULT CHARSET=latin1;"
  64.              * +
  65.              * "CREATE TABLE IF NOT EXISTS `sounds` (`keywords` text NOT NULL,`soundfile` varchar(500) NOT NULL) ENGINE=MyISAM DEFAULT CHARSET=latin1;"
  66.              * + "").executeUpdate();
  67.              */
  68.             return con;
  69.         } catch (SQLException e) {
  70.             // TODO Auto-generated catch block
  71.             e.printStackTrace();
  72.         }
  73.         return null;
  74.     }
  75.  
  76.     public boolean getIsEnabled(String name) {
  77.         con = connect();
  78.         PreparedStatement ps = null;
  79.         ResultSet rs = null;
  80.         try {
  81.             ps = con
  82.                     .prepareStatement("SELECT enabled FROM modules WHERE name=? LIMIT 1");
  83.             ps.setString(1, name);
  84.             rs = ps.executeQuery();
  85.             if (rs.next()) {
  86.                 return rs.getInt("enabled") == 1;
  87.             } else {
  88.                 Database.close(ps);
  89.                 ps = con
  90.                         .prepareStatement("INSERT INTO modules (name,enabled) VALUES (?,?)");
  91.                 ps.setString(1, name);
  92.                 ps.setInt(2, 1);
  93.                 ps.executeUpdate();
  94.             }
  95.         } catch (SQLException e) {
  96.             // TODO Auto-generated catch block
  97.             e.printStackTrace();
  98.         } finally {
  99.             Database.close(rs,ps);
  100.         }
  101.         return true;
  102.     }
  103.  
  104.     public boolean agetIsEnabled(String name) {
  105.         con = connect();
  106.         PreparedStatement ps = null;
  107.         ResultSet rs = null;
  108.         try {
  109.             ps = con
  110.                     .prepareStatement("SELECT enabled FROM adminmodules WHERE name=? LIMIT 1");
  111.             ps.setString(1, name);
  112.             rs = ps.executeQuery();
  113.             if (rs.next()) {
  114.                 return rs.getInt("enabled") == 1;
  115.             } else {
  116.                 ps = con
  117.                         .prepareStatement("INSERT INTO adminmodules (name,enabled) VALUES (?,?)");
  118.                 ps.setString(1, name);
  119.                 ps.setInt(2, 1);
  120.                 ps.executeUpdate();
  121.             }
  122.         } catch (SQLException e) {
  123.             // TODO Auto-generated catch block
  124.             e.printStackTrace();
  125.         } finally {
  126.             Database.close(rs,ps);
  127.         }
  128.         return true;
  129.     }
  130.  
  131.     /**
  132.      * Toggles a module in the database, you still need to load() to update
  133.      * settings
  134.      *
  135.      * @param name
  136.      *            Module to toggle
  137.      */
  138.     public void toggle(String name) {
  139.         PreparedStatement ps = null;
  140.         try {
  141.             ps = connect()
  142.                     .prepareStatement(
  143.                             "UPDATE modules SET `enabled`=IF(`enabled`='1','0','1') WHERE name=?");
  144.             ps.setString(1, name);
  145.             ps.executeUpdate();
  146.         } catch (SQLException e) {
  147.             // TODO Auto-generated catch block
  148.             e.printStackTrace();
  149.         } finally {
  150.             Database.close(ps);
  151.         }
  152.     }
  153.  
  154.     public void atoggle(String name) {
  155.         PreparedStatement ps = null;
  156.         try {
  157.             ps = connect()
  158.                     .prepareStatement(
  159.                             "UPDATE adminmodules SET `enabled`=IF(`enabled`='1','0','1') WHERE name=?");
  160.             ps.setString(1, name);
  161.             ps.executeUpdate();
  162.         } catch (SQLException e) {
  163.             // TODO Auto-generated catch block
  164.             e.printStackTrace();
  165.         } finally {
  166.             Database.close(ps);
  167.         }
  168.     }
  169.  
  170.     public void load() {
  171.         try {
  172.             Config.moduleShowKills = getIsEnabled("Show Kills");
  173.             Config.moduleShowDetailedKills = getIsEnabled("Show Detailed Kills");
  174.             Config.moduleShowSerials = getIsEnabled("Show Serials");
  175.             Config.moduleShowGameNotices = getIsEnabled("Show Game Notices");
  176.             Config.moduleShowGameSpyData = getIsEnabled("Show GameSpy Data");
  177.             Config.moduleShowVehicleKills = getIsEnabled("Show Vehicle Kills");
  178.             Config.moduleShowCTF = getIsEnabled("Show CTF");
  179.             Config.moduleShowErrors = getIsEnabled("Show Errors");
  180.             Config.moduleShowCinematics = getIsEnabled("Show Cinematics");
  181.             Config.moduleShowMoney = getIsEnabled("Show Money");
  182.             Config.moduleShowSecurity = getIsEnabled("Show Security");
  183.             Config.moduleShowBiatch = getIsEnabled("Show BIATCH");
  184.             Config.moduleShowPurchases = getIsEnabled("Show Purchases");
  185.             Config.moduleNewKillMessages = getIsEnabled("New Kill Messages");
  186.             // Config.moduleShowVersion = getIsEnabled("Show Versions");
  187.             Config.moduleShowCharChanges = getIsEnabled("Show Char Changes");
  188.             Config.POLL_GAMEOVER = getIsEnabled("Poll Gameovers");
  189.             Config.POLL_QKICK = getIsEnabled("Poll QKicks");
  190.             Config.POLL_KICK = getIsEnabled("Poll Kicks");
  191.             Config.amoduleShowKills = agetIsEnabled("Admin Show Kills");
  192.             Config.amoduleShowDetailedKills = agetIsEnabled("Admin Show Detailed Kills");
  193.             Config.amoduleShowSerials = agetIsEnabled("Admin Show Serials");
  194.             Config.amoduleShowGameNotices = agetIsEnabled("Admin Show Game Notices");
  195.             Config.amoduleShowGameSpyData = agetIsEnabled("Admin Show GameSpy Data");
  196.             Config.amoduleShowVehicleKills = agetIsEnabled("Admin Show Vehicle Kills");
  197.             Config.amoduleShowCTF = agetIsEnabled("Admin Show CTF");
  198.             Config.amoduleShowErrors = agetIsEnabled("Admin Show Errors");
  199.             Config.amoduleShowCinematics = agetIsEnabled("Admin Show Cinematics");
  200.             Config.amoduleShowMoney = agetIsEnabled("Admin Show Money");
  201.             Config.amoduleShowSecurity = agetIsEnabled("Admin Show Security");
  202.             Config.amoduleShowBiatch = agetIsEnabled("Admin Show BIATCH");
  203.             Config.amoduleShowPurchases = agetIsEnabled("Admin Show Purchases");
  204.             Config.amoduleNewKillMessages = agetIsEnabled("Admin New Kill Messages");
  205.             // Config.moduleShowVersion = getIsEnabled("Show Versions");
  206.             Config.amoduleShowCharChanges = agetIsEnabled("Admin Show Char Changes");
  207.             Config.amoduleShowTeamMessages = agetIsEnabled("Admin Show Team Messages");
  208.             Config.amoduleShowPlayerMessages = agetIsEnabled("Admin Show Player Messages");
  209.             AliasManager.getInstance().reload();
  210.  
  211.             PreparedStatement ps = Database.getInstance().connect()
  212.                     .prepareStatement("SELECT * FROM sounds");
  213.             ResultSet rs = ps.executeQuery();
  214.             while (rs.next()) {
  215.                 Config.soundTriggers.put(rs.getString(1).toLowerCase(), rs
  216.                         .getString(2).toLowerCase());
  217.             }
  218.             Database.close(rs,ps);
  219.  
  220.             ps = Database.getInstance().connect().prepareStatement(
  221.                     "SELECT * FROM items");
  222.             rs = ps.executeQuery();
  223.             while (rs.next()) {
  224.                 Item item = new Item();
  225.                 item.aliases = rs.getString("item").split(",");
  226.                 item.gdi_cin = rs.getString("gdicin");
  227.                 item.neu_cin = rs.getString("neucin");
  228.                 item.nod_cin = rs.getString("nodcin");
  229.                 item.cost = rs.getInt("cost");
  230.                 item.rank = rs.getInt("rank");
  231.                 item.itemname = rs.getString("itemname");
  232.                 item.maps = rs.getString("maps").split(";");
  233.                 String servers = rs.getString("servers");
  234.                 int c_servers = servers.split(",").length;
  235.                 int[] a_servers = new int[c_servers];
  236.                 int i = 0;
  237.                 for (String s : servers.split(",")) {
  238.                     a_servers[i] = Integer.parseInt(s.trim());
  239.                     i++;
  240.                 }
  241.                 item.type = rs.getInt("type");
  242.                 synchronized (Item.items) {
  243.                     Item.items.add(item);
  244.                 }
  245.                 Database.close(rs, ps);
  246.             }
  247.  
  248.         } catch (Exception e) {
  249.             Log.log("Could not load from DB.");
  250.             Log.die(e);
  251.         }
  252.        
  253.     }
  254.  
  255.     public static void close(ResultSet rs, PreparedStatement ps) {
  256.         if (rs != null) {
  257.             try {
  258.                 rs.close();
  259.             } catch (SQLException e) {
  260.             }
  261.         }
  262.         if (ps != null) {
  263.             try {
  264.                 ps.close();
  265.             } catch (SQLException e) {
  266.             }
  267.         }
  268.  
  269.     }
  270.  
  271.     public static void close(PreparedStatement ps) {
  272.         close(null, ps);
  273.     }
  274.     public static void close(ResultSet rs) {
  275.         close(rs, null);
  276.     }
  277. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement